]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/API/SBTypeEnumMember.h
Merge lld trunk r338150, and resolve conflicts.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / API / SBTypeEnumMember.h
1
2 //===-- SBTypeEnumMember.h --------------------------------------*- C++ -*-===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10
11 #ifndef LLDB_SBTypeEnumMember_h_
12 #define LLDB_SBTypeEnumMember_h_
13
14 #include "lldb/API/SBDefines.h"
15
16 namespace lldb {
17
18 class LLDB_API SBTypeEnumMember {
19 public:
20   SBTypeEnumMember();
21
22   SBTypeEnumMember(const SBTypeEnumMember &rhs);
23
24   ~SBTypeEnumMember();
25
26   SBTypeEnumMember &operator=(const SBTypeEnumMember &rhs);
27
28   bool IsValid() const;
29
30   int64_t GetValueAsSigned();
31
32   uint64_t GetValueAsUnsigned();
33
34   const char *GetName();
35
36   lldb::SBType GetType();
37
38   bool GetDescription(lldb::SBStream &description,
39                       lldb::DescriptionLevel description_level);
40
41 protected:
42   friend class SBType;
43   friend class SBTypeEnumMemberList;
44
45   void reset(lldb_private::TypeEnumMemberImpl *);
46
47   lldb_private::TypeEnumMemberImpl &ref();
48
49   const lldb_private::TypeEnumMemberImpl &ref() const;
50
51   lldb::TypeEnumMemberImplSP m_opaque_sp;
52
53   SBTypeEnumMember(const lldb::TypeEnumMemberImplSP &);
54 };
55
56 class SBTypeEnumMemberList {
57 public:
58   SBTypeEnumMemberList();
59
60   SBTypeEnumMemberList(const SBTypeEnumMemberList &rhs);
61
62   ~SBTypeEnumMemberList();
63
64   SBTypeEnumMemberList &operator=(const SBTypeEnumMemberList &rhs);
65
66   bool IsValid();
67
68   void Append(SBTypeEnumMember entry);
69
70   SBTypeEnumMember GetTypeEnumMemberAtIndex(uint32_t index);
71
72   uint32_t GetSize();
73
74 private:
75   std::unique_ptr<lldb_private::TypeEnumMemberListImpl> m_opaque_ap;
76 };
77
78 } // namespace lldb
79
80 #endif // LLDB_SBTypeEnumMember_h_