LLDB mainline
SBType.h
Go to the documentation of this file.
1//===-- SBType.h ------------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_API_SBTYPE_H
10#define LLDB_API_SBTYPE_H
11
12#include "lldb/API/SBDefines.h"
13
14namespace lldb_private {
15namespace python {
16class SWIGBridge;
17}
18} // namespace lldb_private
19
20namespace lldb {
21
22class SBTypeList;
23
25public:
27
29
31
32 lldb::SBTypeMember &operator=(const lldb::SBTypeMember &rhs);
33
34 explicit operator bool() const;
35
36 bool IsValid() const;
37
38 const char *GetName();
39
40 lldb::SBType GetType();
41
42 uint64_t GetOffsetInBytes();
43
44 uint64_t GetOffsetInBits();
45
46 bool IsBitfield();
47
48 uint32_t GetBitfieldSizeInBits();
49
50 bool GetDescription(lldb::SBStream &description,
51 lldb::DescriptionLevel description_level);
52
53protected:
54 friend class SBType;
55
56 void reset(lldb_private::TypeMemberImpl *);
57
59
60 const lldb_private::TypeMemberImpl &ref() const;
61
62 std::unique_ptr<lldb_private::TypeMemberImpl> m_opaque_up;
63};
64
66public:
68
70
72
74
75 explicit operator bool() const;
76
77 bool IsValid() const;
78
79 const char *GetName();
80
81 const char *GetDemangledName();
82
83 const char *GetMangledName();
84
86
88
89 uint32_t GetNumberOfArguments();
90
92
94
95 bool GetDescription(lldb::SBStream &description,
96 lldb::DescriptionLevel description_level);
97
98protected:
99 friend class SBType;
100
102
104
106
108};
109
111public:
113
116
118
119 explicit operator bool() const;
120
121 bool IsValid() const;
122
123 const char *GetName();
124
125 const char *GetMangledName();
126
127 lldb::SBType GetType();
128
129 lldb::SBValue GetConstantValue(lldb::SBTarget target);
130
131protected:
132 friend class SBType;
133
135
136 std::unique_ptr<lldb_private::CompilerDecl> m_opaque_up;
137};
138
139class SBType {
140public:
141 SBType();
142
143 SBType(const lldb::SBType &rhs);
144
146
147 explicit operator bool() const;
148
149 bool IsValid() const;
150
151 uint64_t GetByteSize();
152
153 bool IsPointerType();
154
155 bool IsReferenceType();
156
157 bool IsFunctionType();
158
159 bool IsPolymorphicClass();
160
161 bool IsArrayType();
162
163 bool IsVectorType();
164
165 bool IsTypedefType();
166
167 bool IsAnonymousType();
168
170
171 bool IsAggregateType();
172
174
176
178
180
182
184
186
187 lldb::SBType GetArrayType(uint64_t size);
188
190
192
194
195 // Get the "lldb::BasicType" enumeration for a type. If a type is not a basic
196 // type eBasicTypeInvalid will be returned
198
199 // The call below confusing and should really be renamed to "CreateBasicType"
201
202 uint32_t GetNumberOfFields();
203
205
207
209
211
213
215
217
219
221
222 /// Return the TemplateArgumentKind of the template argument at index idx.
223 /// Variadic argument packs are automatically expanded.
225
227
229
231
233
235
236 const char *GetName();
237
238 const char *GetDisplayTypeName();
239
240 lldb::TypeClass GetTypeClass();
241
242 bool IsTypeComplete();
243
244 uint32_t GetTypeFlags();
245
246 bool GetDescription(lldb::SBStream &description,
247 lldb::DescriptionLevel description_level);
248
249 lldb::SBType FindDirectNestedType(const char *name);
250
252
253 bool operator==(lldb::SBType &rhs);
254
255 bool operator!=(lldb::SBType &rhs);
256
257protected:
259
260 const lldb_private::TypeImpl &ref() const;
261
263
264 void SetSP(const lldb::TypeImplSP &type_impl_sp);
265
267
268 friend class SBFunction;
269 friend class SBModule;
270 friend class SBTarget;
271 friend class SBTypeEnumMember;
274 friend class SBTypeMember;
276 friend class SBTypeStaticField;
277 friend class SBTypeList;
278 friend class SBValue;
279 friend class SBWatchpoint;
280
282
284 SBType(const lldb::TypeSP &);
285 SBType(const lldb::TypeImplSP &);
286};
287
289public:
290 SBTypeList();
291
292 SBTypeList(const lldb::SBTypeList &rhs);
293
295
297
298 explicit operator bool() const;
299
300 bool IsValid();
301
302 void Append(lldb::SBType type);
303
304 lldb::SBType GetTypeAtIndex(uint32_t index);
305
306 uint32_t GetSize();
307
308private:
309 std::unique_ptr<lldb_private::TypeListImpl> m_opaque_up;
310 friend class SBModule;
311 friend class SBCompileUnit;
312};
313
314} // namespace lldb
315
316#endif // LLDB_API_SBTYPE_H
static const char * GetName(DWARFDeclContext::Entry entry)
Returns the name of entry if it has one, or the appropriate "anonymous {namespace,...
#define LLDB_API
Definition: SBDefines.h:28
std::unique_ptr< lldb_private::TypeListImpl > m_opaque_up
Definition: SBType.h:309
lldb::SBType GetTypeAtIndex(uint32_t index)
Definition: SBType.cpp:727
uint32_t GetSize()
Definition: SBType.cpp:735
lldb::SBTypeList & operator=(const lldb::SBTypeList &rhs)
Definition: SBType.cpp:708
bool IsValid()
Definition: SBType.cpp:698
void Append(lldb::SBType type)
Definition: SBType.cpp:720
lldb::SBType GetArgumentTypeAtIndex(uint32_t)
Definition: SBType.cpp:955
const char * GetMangledName()
Definition: SBType.cpp:919
void reset(lldb_private::TypeMemberFunctionImpl *)
Definition: SBType.cpp:986
lldb::MemberFunctionKind GetKind()
Definition: SBType.cpp:966
lldb::SBType GetReturnType()
Definition: SBType.cpp:937
const char * GetName()
Definition: SBType.cpp:897
lldb::SBTypeMemberFunction & operator=(const lldb::SBTypeMemberFunction &rhs)
Definition: SBType.cpp:879
bool GetDescription(lldb::SBStream &description, lldb::DescriptionLevel description_level)
Definition: SBType.cpp:974
lldb::TypeMemberFunctionImplSP m_opaque_sp
Definition: SBType.h:107
uint32_t GetNumberOfArguments()
Definition: SBType.cpp:947
lldb::SBType GetType()
Definition: SBType.cpp:927
const char * GetDemangledName()
Definition: SBType.cpp:905
lldb_private::TypeMemberFunctionImpl & ref()
Definition: SBType.cpp:990
std::unique_ptr< lldb_private::TypeMemberImpl > m_opaque_up
Definition: SBType.h:62
std::unique_ptr< lldb_private::CompilerDecl > m_opaque_up
Definition: SBType.h:136
bool IsArrayType()
Definition: SBType.cpp:143
uint32_t GetNumberOfTemplateArguments()
Definition: SBType.cpp:633
uint32_t GetNumberOfDirectBaseClasses()
Definition: SBType.cpp:449
lldb::SBType FindDirectNestedType(const char *name)
Definition: SBType.cpp:677
lldb::SBType GetReferenceType()
Definition: SBType.cpp:185
lldb::SBType GetArrayType(uint64_t size)
Definition: SBType.cpp:218
lldb::SBType GetVectorElementType()
Definition: SBType.cpp:227
uint32_t GetNumberOfFields()
Definition: SBType.cpp:465
lldb::SBType GetDereferencedType()
Definition: SBType.cpp:201
lldb::SBModule GetModule()
Definition: SBType.cpp:598
lldb::BasicType GetBasicType()
Definition: SBType.cpp:432
bool IsPolymorphicClass()
Definition: SBType.cpp:248
uint32_t GetTypeFlags()
Definition: SBType.cpp:590
lldb::TypeImplSP GetSP()
Definition: SBType.cpp:81
friend class lldb_private::python::SWIGBridge
Definition: SBType.h:281
bool IsAggregateType()
Definition: SBType.cpp:280
bool IsReferenceType()
Definition: SBType.cpp:160
lldb::SBTypeMember GetDirectBaseClassAtIndex(uint32_t idx)
Definition: SBType.cpp:487
bool IsVectorType()
Definition: SBType.cpp:152
lldb::TemplateArgumentKind GetTemplateArgumentKind(uint32_t idx)
Return the TemplateArgumentKind of the template argument at index idx.
Definition: SBType.cpp:668
lldb::SBTypeMemberFunction GetMemberFunctionAtIndex(uint32_t idx)
Definition: SBType.cpp:323
lldb::SBType GetPointerType()
Definition: SBType.cpp:168
uint32_t GetNumberOfMemberFunctions()
Definition: SBType.cpp:314
lldb::SBType GetTemplateArgumentType(uint32_t idx)
Definition: SBType.cpp:642
lldb::TypeClass GetTypeClass()
Definition: SBType.cpp:625
lldb::SBType GetCanonicalType()
Definition: SBType.cpp:414
bool operator!=(lldb::SBType &rhs)
Definition: SBType.cpp:69
bool GetDescription(lldb::SBStream &description, lldb::DescriptionLevel description_level)
Definition: SBType.cpp:473
lldb::SBTypeList GetFunctionArgumentTypes()
Definition: SBType.cpp:300
uint32_t GetNumberOfVirtualBaseClasses()
Definition: SBType.cpp:457
lldb::SBType GetTypedefedType()
Definition: SBType.cpp:193
lldb_private::TypeImpl & ref()
Definition: SBType.cpp:98
lldb::SBTypeStaticField GetStaticFieldWithName(const char *name)
Definition: SBType.cpp:519
lldb::SBType & operator=(const lldb::SBType &rhs)
Definition: SBType.cpp:87
lldb::SBType GetFunctionReturnType()
Definition: SBType.cpp:288
lldb::TypeImplSP m_opaque_sp
Definition: SBType.h:266
lldb::SBType GetUnqualifiedType()
Definition: SBType.cpp:406
lldb::SBTypeMember GetVirtualBaseClassAtIndex(uint32_t idx)
Definition: SBType.cpp:503
bool IsTypeComplete()
Definition: SBType.cpp:577
const char * GetDisplayTypeName()
Definition: SBType.cpp:617
lldb::SBType GetArrayElementType()
Definition: SBType.cpp:209
bool IsTypedefType()
Definition: SBType.cpp:256
bool IsAnonymousType()
Definition: SBType.cpp:264
bool IsPointerType()
Definition: SBType.cpp:135
const char * GetName()
Definition: SBType.cpp:609
lldb::SBType GetPointeeType()
Definition: SBType.cpp:177
lldb::SBTypeMember GetFieldAtIndex(uint32_t idx)
Definition: SBType.cpp:551
void SetSP(const lldb::TypeImplSP &type_impl_sp)
Definition: SBType.cpp:83
uint64_t GetByteSize()
Definition: SBType.cpp:125
bool IsValid() const
Definition: SBType.cpp:112
bool operator==(lldb::SBType &rhs)
Definition: SBType.cpp:57
lldb::SBType GetEnumerationIntegerType()
Definition: SBType.cpp:422
lldb::SBTypeEnumMemberList GetEnumMembers()
Definition: SBType.cpp:529
bool IsFunctionType()
Definition: SBType.cpp:240
bool IsScopedEnumerationType()
Definition: SBType.cpp:272
Represents a generic declaration such as a function declaration.
Definition: CompilerDecl.h:28
Generic representation of a type in a programming language.
Definition: CompilerType.h:36
A class that represents a running process on the host machine.
Definition: SBAttachInfo.h:14
Definition: SBAddress.h:15
DescriptionLevel
Description levels for "void GetDescription(Stream *, DescriptionLevel)" calls.
BasicType
Basic types enumeration for the public API SBType::GetBasicType().
std::shared_ptr< lldb_private::TypeMemberFunctionImpl > TypeMemberFunctionImplSP
Definition: lldb-forward.h:454
std::shared_ptr< lldb_private::Type > TypeSP
Definition: lldb-forward.h:449
MemberFunctionKind
Kind of member function.
class LLDB_API SBTypeList
Definition: SBDefines.h:127
std::shared_ptr< lldb_private::TypeImpl > TypeImplSP
Definition: lldb-forward.h:452