blob: f87a6c04a13a9eda488068c97c6036d11dd03ed6 [file] [log] [blame]
// Copyright 2018 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_REGISTER_H_
#define SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_REGISTER_H_
#include <map>
#include <string>
#include <vector>
#include "src/developer/debug/shared/arch.h"
#include "src/developer/debug/shared/register_value.h"
#include "src/developer/debug/zxdb/console/output_buffer.h"
#include "src/developer/debug/zxdb/expr/vector_register_format.h"
namespace zxdb {
// Struct meant to configure how the FilterRegister/FormatRegister calls will
// behave.
struct FormatRegisterOptions {
// What arch this FormatRegisters call belongs to.
debug::Arch arch = debug::Arch::kUnknown;
// Whether to print extra information about the registers.
bool extended = false;
// VectorRegisterFormat vector_format = VectorRegisterFormat::kUnsigned8;
VectorRegisterFormat vector_format = VectorRegisterFormat::kFloat;
};
// Format the given registers into a console readable format.
OutputBuffer FormatRegisters(const FormatRegisterOptions& options,
const std::vector<debug::RegisterValue>& registers);
// Formats the given registers as platform-independent values/vectors.
void FormatGeneralRegisters(const std::vector<debug::RegisterValue>& registers, OutputBuffer* out);
void FormatGeneralVectorRegisters(const FormatRegisterOptions& options,
const std::vector<debug::RegisterValue>& registers,
OutputBuffer* out);
// Formats the register and returns a vector with the following information:
// - name
// - hex value
// - comment (may be empty if inapplicable).
std::vector<OutputBuffer> DescribeRegister(const debug::RegisterValue& reg,
TextForegroundColor color);
} // namespace zxdb
#endif // SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_REGISTER_H_