blob: ae90fe8418c63d3fce25960de64935f3c021f712 [file] [log] [blame]
// 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;
// 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);
// Formats the file or file/line.
//
// 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.
OutputBuffer FormatFileName(const std::string& file_name,
const TargetSymbols* optional_target_symbols = nullptr);
OutputBuffer FormatFileLine(const FileLine& file_line,
const TargetSymbols* optional_target_symbols = nullptr);
} // namespace zxdb
#endif // SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_LOCATION_H_