]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterInfoInterface.h
Update llvm/clang to r240225.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Plugins / Process / Utility / RegisterInfoInterface.h
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