1 | //===-- SBTypeFormat.h --------------------------------------------*- C++ |
2 | //-*-===// |
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_SBTYPEFORMAT_H |
11 | #define LLDB_API_SBTYPEFORMAT_H |
12 | |
13 | #include "lldb/API/SBDefines.h" |
14 | |
15 | namespace lldb { |
16 | |
17 | class LLDB_API SBTypeFormat { |
18 | public: |
19 | SBTypeFormat(); |
20 | |
21 | SBTypeFormat(lldb::Format format, |
22 | uint32_t options = 0); // see lldb::eTypeOption values |
23 | |
24 | SBTypeFormat(const char *type, |
25 | uint32_t options = 0); // see lldb::eTypeOption values |
26 | |
27 | SBTypeFormat(const lldb::SBTypeFormat &rhs); |
28 | |
29 | ~SBTypeFormat(); |
30 | |
31 | explicit operator bool() const; |
32 | |
33 | bool IsValid() const; |
34 | |
35 | lldb::Format GetFormat(); |
36 | |
37 | const char *GetTypeName(); |
38 | |
39 | uint32_t GetOptions(); |
40 | |
41 | void SetFormat(lldb::Format); |
42 | |
43 | void SetTypeName(const char *); |
44 | |
45 | void SetOptions(uint32_t); |
46 | |
47 | bool GetDescription(lldb::SBStream &description, |
48 | lldb::DescriptionLevel description_level); |
49 | |
50 | lldb::SBTypeFormat &operator=(const lldb::SBTypeFormat &rhs); |
51 | |
52 | bool IsEqualTo(lldb::SBTypeFormat &rhs); |
53 | |
54 | bool operator==(lldb::SBTypeFormat &rhs); |
55 | |
56 | bool operator!=(lldb::SBTypeFormat &rhs); |
57 | |
58 | protected: |
59 | friend class SBDebugger; |
60 | friend class SBTypeCategory; |
61 | friend class SBValue; |
62 | |
63 | lldb::TypeFormatImplSP GetSP(); |
64 | |
65 | void SetSP(const lldb::TypeFormatImplSP &typeformat_impl_sp); |
66 | |
67 | lldb::TypeFormatImplSP m_opaque_sp; |
68 | |
69 | SBTypeFormat(const lldb::TypeFormatImplSP &); |
70 | |
71 | enum class Type { eTypeKeepSame, eTypeFormat, eTypeEnum }; |
72 | |
73 | bool CopyOnWrite_Impl(Type); |
74 | }; |
75 | |
76 | } // namespace lldb |
77 | |
78 | #endif // LLDB_API_SBTYPEFORMAT_H |
79 | |