1 
2 //===-- SBTypeEnumMember.h --------------------------------------*- C++ -*-===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLDB_API_SBTYPEENUMMEMBER_H
11 #define LLDB_API_SBTYPEENUMMEMBER_H
12 
13 #include "lldb/API/SBDefines.h"
14 
15 namespace lldb {
16 
17 class LLDB_API SBTypeEnumMember {
18 public:
19   SBTypeEnumMember();
20 
21   SBTypeEnumMember(const SBTypeEnumMember &rhs);
22 
23   ~SBTypeEnumMember();
24 
25   SBTypeEnumMember &operator=(const SBTypeEnumMember &rhs);
26 
27   explicit operator bool() const;
28 
29   bool IsValid() const;
30 
31   int64_t GetValueAsSigned();
32 
33   uint64_t GetValueAsUnsigned();
34 
35   const char *GetName();
36 
37   lldb::SBType GetType();
38 
39   bool GetDescription(lldb::SBStream &description,
40                       lldb::DescriptionLevel description_level);
41 
42 protected:
43   friend class SBType;
44   friend class SBTypeEnumMemberList;
45 
46   void reset(lldb_private::TypeEnumMemberImpl *);
47 
48   lldb_private::TypeEnumMemberImpl &ref();
49 
50   const lldb_private::TypeEnumMemberImpl &ref() const;
51 
52   lldb::TypeEnumMemberImplSP m_opaque_sp;
53 
54   SBTypeEnumMember(const lldb::TypeEnumMemberImplSP &);
55 };
56 
57 class SBTypeEnumMemberList {
58 public:
59   SBTypeEnumMemberList();
60 
61   SBTypeEnumMemberList(const SBTypeEnumMemberList &rhs);
62 
63   ~SBTypeEnumMemberList();
64 
65   SBTypeEnumMemberList &operator=(const SBTypeEnumMemberList &rhs);
66 
67   explicit operator bool() const;
68 
69   bool IsValid();
70 
71   void Append(SBTypeEnumMember entry);
72 
73   SBTypeEnumMember GetTypeEnumMemberAtIndex(uint32_t index);
74 
75   uint32_t GetSize();
76 
77 private:
78   std::unique_ptr<lldb_private::TypeEnumMemberListImpl> m_opaque_up;
79 };
80 
81 } // namespace lldb
82 
83 #endif // LLDB_API_SBTYPEENUMMEMBER_H
84