1//===-- SBTypeSummary.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_SBTYPESUMMARY_H
11#define LLDB_API_SBTYPESUMMARY_H
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb_private {
16namespace python {
17class SWIGBridge;
18}
19} // namespace lldb_private
20
21namespace lldb {
22class LLDB_API SBTypeSummaryOptions {
23public:
24 SBTypeSummaryOptions();
25
26 SBTypeSummaryOptions(const lldb::SBTypeSummaryOptions &rhs);
27
28
29 ~SBTypeSummaryOptions();
30
31 explicit operator bool() const;
32
33 bool IsValid();
34
35 lldb::LanguageType GetLanguage();
36
37 lldb::TypeSummaryCapping GetCapping();
38
39 void SetLanguage(lldb::LanguageType);
40
41 void SetCapping(lldb::TypeSummaryCapping);
42
43protected:
44 friend class SBValue;
45 friend class SBTypeSummary;
46
47 friend class lldb_private::python::SWIGBridge;
48
49 SBTypeSummaryOptions(const lldb_private::TypeSummaryOptions &lldb_object);
50
51 lldb_private::TypeSummaryOptions *operator->();
52
53 const lldb_private::TypeSummaryOptions *operator->() const;
54
55 lldb_private::TypeSummaryOptions *get();
56
57 lldb_private::TypeSummaryOptions &ref();
58
59 const lldb_private::TypeSummaryOptions &ref() const;
60
61private:
62 std::unique_ptr<lldb_private::TypeSummaryOptions> m_opaque_up;
63};
64
65class SBTypeSummary {
66public:
67 SBTypeSummary();
68
69 // Native function summary formatter callback
70 typedef bool (*FormatCallback)(SBValue, SBTypeSummaryOptions, SBStream &);
71
72 static SBTypeSummary
73 CreateWithSummaryString(const char *data,
74 uint32_t options = 0); // see lldb::eTypeOption values
75
76 static SBTypeSummary
77 CreateWithFunctionName(const char *data,
78 uint32_t options = 0); // see lldb::eTypeOption values
79
80 static SBTypeSummary
81 CreateWithScriptCode(const char *data,
82 uint32_t options = 0); // see lldb::eTypeOption values
83
84#ifndef SWIG
85 static SBTypeSummary CreateWithCallback(FormatCallback cb,
86 uint32_t options = 0,
87 const char *description = nullptr);
88#endif
89
90 SBTypeSummary(const lldb::SBTypeSummary &rhs);
91
92 ~SBTypeSummary();
93
94 explicit operator bool() const;
95
96 bool IsValid() const;
97
98 bool IsFunctionCode();
99
100 bool IsFunctionName();
101
102 bool IsSummaryString();
103
104 const char *GetData();
105
106 void SetSummaryString(const char *data);
107
108 void SetFunctionName(const char *data);
109
110 void SetFunctionCode(const char *data);
111
112 uint32_t GetOptions();
113
114 void SetOptions(uint32_t);
115
116 bool GetDescription(lldb::SBStream &description,
117 lldb::DescriptionLevel description_level);
118
119 lldb::SBTypeSummary &operator=(const lldb::SBTypeSummary &rhs);
120
121 bool DoesPrintValue(lldb::SBValue value);
122
123 bool IsEqualTo(lldb::SBTypeSummary &rhs);
124
125 bool operator==(lldb::SBTypeSummary &rhs);
126
127 bool operator!=(lldb::SBTypeSummary &rhs);
128
129protected:
130 friend class SBDebugger;
131 friend class SBTypeCategory;
132 friend class SBValue;
133
134 lldb::TypeSummaryImplSP GetSP();
135
136 void SetSP(const lldb::TypeSummaryImplSP &typefilter_impl_sp);
137
138 lldb::TypeSummaryImplSP m_opaque_sp;
139
140 SBTypeSummary(const lldb::TypeSummaryImplSP &);
141
142 bool CopyOnWrite_Impl();
143
144 bool ChangeSummaryType(bool want_script);
145};
146
147} // namespace lldb
148
149#endif // LLDB_API_SBTYPESUMMARY_H
150

source code of lldb/include/lldb/API/SBTypeSummary.h