1 //===-- RegisterInfoInterface.h --------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef lldb_RegisterInfoInterface_h 11 #define lldb_RegisterInfoInterface_h 12 13 #include "lldb/Core/ArchSpec.h" 14 15 namespace lldb_private 16 { 17 18 ///------------------------------------------------------------------------------ 19 /// @class RegisterInfoInterface 20 /// 21 /// @brief RegisterInfo interface to patch RegisterInfo structure for archs. 22 ///------------------------------------------------------------------------------ 23 class RegisterInfoInterface 24 { 25 public: 26 RegisterInfoInterface(const lldb_private::ArchSpec& target_arch) : m_target_arch(target_arch) {} 27 virtual ~RegisterInfoInterface () {} 28 29 virtual size_t 30 GetGPRSize () const = 0; 31 32 virtual const lldb_private::RegisterInfo * 33 GetRegisterInfo () const = 0; 34 35 virtual uint32_t 36 GetRegisterCount () const = 0; 37 38 const lldb_private::ArchSpec& 39 GetTargetArchitecture() const 40 { return m_target_arch; } 41 42 public: 43 // FIXME make private. 44 lldb_private::ArchSpec m_target_arch; 45 }; 46 47 } 48 49 #endif 50