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