1 //===-- NativeRegisterContextRegisterInfo.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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_NATIVEREGISTERCONTEXTREGISTERINFO_H
10 #define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_NATIVEREGISTERCONTEXTREGISTERINFO_H
11 
12 #include <memory>
13 
14 #include "RegisterInfoInterface.h"
15 #include "lldb/Host/common/NativeRegisterContext.h"
16 
17 namespace lldb_private {
18 class NativeRegisterContextRegisterInfo : public NativeRegisterContext {
19 public:
20   ///
21   /// Construct a NativeRegisterContextRegisterInfo, taking ownership
22   /// of the register_info_interface pointer.
23   ///
24   NativeRegisterContextRegisterInfo(
25       NativeThreadProtocol &thread,
26       RegisterInfoInterface *register_info_interface);
27 
28   uint32_t GetRegisterCount() const override;
29 
30   uint32_t GetUserRegisterCount() const override;
31 
32   const RegisterInfo *GetRegisterInfoAtIndex(uint32_t reg_index) const override;
33 
34   const RegisterInfoInterface &GetRegisterInfoInterface() const;
35 
36 protected:
37   std::unique_ptr<RegisterInfoInterface> m_register_info_interface_up;
38 };
39 }
40 #endif
41