1317027Sdim//===-- NativeRegisterContextRegisterInfo.h ---------------------*- C++ -*-===//
2317027Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6317027Sdim//
7317027Sdim//===----------------------------------------------------------------------===//
8317027Sdim
9317027Sdim#ifndef LLDB_PLUGINS_PROCESS_UTIILTY_NATIVE_REGISTER_CONTEXT_REGISTER_INFO
10317027Sdim#define LLDB_PLUGINS_PROCESS_UTIILTY_NATIVE_REGISTER_CONTEXT_REGISTER_INFO
11317027Sdim
12317027Sdim#include <memory>
13317027Sdim
14317027Sdim#include "RegisterInfoInterface.h"
15317027Sdim#include "lldb/Host/common/NativeRegisterContext.h"
16317027Sdim
17317027Sdimnamespace lldb_private {
18317027Sdimclass NativeRegisterContextRegisterInfo : public NativeRegisterContext {
19317027Sdimpublic:
20317027Sdim  ///
21317027Sdim  /// Construct a NativeRegisterContextRegisterInfo, taking ownership
22317027Sdim  /// of the register_info_interface pointer.
23317027Sdim  ///
24317027Sdim  NativeRegisterContextRegisterInfo(
25327952Sdim      NativeThreadProtocol &thread,
26317027Sdim      RegisterInfoInterface *register_info_interface);
27317027Sdim
28317027Sdim  uint32_t GetRegisterCount() const override;
29317027Sdim
30317027Sdim  uint32_t GetUserRegisterCount() const override;
31317027Sdim
32317027Sdim  const RegisterInfo *GetRegisterInfoAtIndex(uint32_t reg_index) const override;
33317027Sdim
34317027Sdim  const RegisterInfoInterface &GetRegisterInfoInterface() const;
35317027Sdim
36317027Sdimprivate:
37317027Sdim  std::unique_ptr<RegisterInfoInterface> m_register_info_interface_up;
38317027Sdim};
39317027Sdim}
40317027Sdim#endif
41