1 //===-- RegisterTypeBuilderClang.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_PLUGINS_REGISTERTYPEBUILDER_REGISTERTYPEBUILDERCLANG_H
10 #define LLDB_PLUGINS_REGISTERTYPEBUILDER_REGISTERTYPEBUILDERCLANG_H
11 
12 #include "lldb/Target/RegisterTypeBuilder.h"
13 #include "lldb/Target/Target.h"
14 
15 namespace lldb_private {
16 class RegisterTypeBuilderClang : public RegisterTypeBuilder {
17 public:
18   RegisterTypeBuilderClang(Target &target);
19 
20   static void Initialize();
21   static void Terminate();
22   static llvm::StringRef GetPluginNameStatic() {
23     return "register-types-clang";
24   }
25   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
26   static llvm::StringRef GetPluginDescriptionStatic() {
27     return "Create register types using TypeSystemClang";
28   }
29   static lldb::RegisterTypeBuilderSP CreateInstance(Target &target);
30 
31   CompilerType GetRegisterType(const std::string &name,
32                                const lldb_private::RegisterFlags &flags,
33                                uint32_t byte_size) override;
34 
35 private:
36   Target &m_target;
37 };
38 } // namespace lldb_private
39 
40 #endif // LLDB_PLUGINS_REGISTERTYPEBUILDER_REGISTERTYPEBUILDERCLANG_H
41