|  | // Copyright 2019 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_LOCATION_H_ | 
|  | #define SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_LOCATION_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "src/developer/debug/zxdb/console/format_name.h" | 
|  | #include "src/developer/debug/zxdb/console/output_buffer.h" | 
|  |  | 
|  | namespace zxdb { | 
|  |  | 
|  | class FileLine; | 
|  | class Location; | 
|  | class Target; | 
|  | class TargetSymbols; | 
|  |  | 
|  | struct FormatLocationOptions { | 
|  | // Use the default values. | 
|  | FormatLocationOptions() = default; | 
|  |  | 
|  | // Take the default values from the settings that apply to location formatting. The Target can | 
|  | // be null for the default behavior (this simplifies some call sites). | 
|  | explicit FormatLocationOptions(const Target* target); | 
|  |  | 
|  | // How identifier function name formatting should be done. | 
|  | FormatFunctionNameOptions func; | 
|  |  | 
|  | // When set, the address will always be printed. Otherwise it will be omitted if there is a | 
|  | // function name present. | 
|  | bool always_show_addresses = false; | 
|  |  | 
|  | // Show function parameter types. Otherwise, it will have "()" (if there are no arguments), or | 
|  | // "(...)" if there are some. | 
|  | bool show_params = false; | 
|  |  | 
|  | // Shows file/line information if present. | 
|  | bool show_file_line = true; | 
|  |  | 
|  | // When set forces the file/line (if displayed) to show the full path of the file rather than | 
|  | // the shortest possible unique one. | 
|  | bool show_file_path = false; | 
|  |  | 
|  | // Needed when show_file_path is NOT set to shorten paths. This will be used to disambiguate file | 
|  | // names. If unset, it will be equivalent to show_file_path = true. | 
|  | const TargetSymbols* target_symbols = nullptr; | 
|  | }; | 
|  |  | 
|  | // Formats the location. | 
|  | OutputBuffer FormatLocation(const Location& loc, const FormatLocationOptions& opts); | 
|  |  | 
|  | // The TargetSymbols pointer is used to find the shortest unique way to reference the file name. | 
|  | // | 
|  | // If target_symbols is null, the full file path will always be included. | 
|  | std::string DescribeFileLine(const TargetSymbols* optional_target_symbols, | 
|  | const FileLine& file_line); | 
|  |  | 
|  | }  // namespace zxdb | 
|  |  | 
|  | #endif  // SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_LOCATION_H_ |