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_
81