50 lines · c
1//===-- RegisterInfoInterface.h --------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERINFOINTERFACE_H10#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERINFOINTERFACE_H11 12#include "lldb/Utility/ArchSpec.h"13#include "lldb/lldb-private-types.h"14#include <vector>15 16namespace lldb_private {17 18/// \class RegisterInfoInterface19///20/// RegisterInfo interface to patch RegisterInfo structure for archs.21class RegisterInfoInterface {22public:23 RegisterInfoInterface(const lldb_private::ArchSpec &target_arch)24 : m_target_arch(target_arch) {}25 virtual ~RegisterInfoInterface() = default;26 27 virtual size_t GetGPRSize() const = 0;28 29 virtual const lldb_private::RegisterInfo *GetRegisterInfo() const = 0;30 31 // Returns the number of registers including the user registers and the32 // lldb internal registers also33 virtual uint32_t GetRegisterCount() const = 0;34 35 // Returns the number of the user registers (excluding the registers36 // kept for lldb internal use only). Subclasses should override it if37 // they belongs to an architecture with lldb internal registers.38 virtual uint32_t GetUserRegisterCount() const { return GetRegisterCount(); }39 40 const lldb_private::ArchSpec &GetTargetArchitecture() const {41 return m_target_arch;42 }43 44private:45 lldb_private::ArchSpec m_target_arch;46};47} // namespace lldb_private48 49#endif50