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
33
34 explicit operator bool() const;
35
36 bool IsValid() const;
37
38 const char *GetName();
39
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
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
128
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 uint64_t GetByteAlign();
154
155 bool IsPointerType();
156
157 bool IsReferenceType();
158
159 bool IsFunctionType();
160
161 bool IsPolymorphicClass();
162
163 bool IsArrayType();
164
165 bool IsVectorType();
166
167 bool IsTypedefType();
168
169 bool IsAnonymousType();
170
172
173 bool IsAggregateType();
174
176
178
180
182
184
186
188
189 lldb::SBType GetArrayType(uint64_t size);
190
192
194
196
197 // Get the "lldb::BasicType" enumeration for a type. If a type is not a basic
198 // type eBasicTypeInvalid will be returned
200
201 // The call below confusing and should really be renamed to "CreateBasicType"
203
204 uint32_t GetNumberOfFields();
205
207
209
211
213
215
217
219
221
223
224 /// Returns the value of the non-type template parameter at index \c idx.
225 /// If \c idx is out-of-bounds or the template parameter doesn't have
226 /// a value, returns an empty SBValue.
227 ///
228 /// This function will expand parameter packs.
230
231 /// Return the TemplateArgumentKind of the template argument at index idx.
232 /// Variadic argument packs are automatically expanded.
234
236
238
240
242
244
245 const char *GetName();
246
247 const char *GetDisplayTypeName();
248
249 lldb::TypeClass GetTypeClass();
250
251 bool IsTypeComplete();
252
253 uint32_t GetTypeFlags();
254
255 bool GetDescription(lldb::SBStream &description,
256 lldb::DescriptionLevel description_level);
257
258 lldb::SBType FindDirectNestedType(const char *name);
259
261
262 bool operator==(lldb::SBType &rhs);
263
264 bool operator!=(lldb::SBType &rhs);
265
266protected:
268
269 const lldb_private::TypeImpl &ref() const;
270
272
273 void SetSP(const lldb::TypeImplSP &type_impl_sp);
274
276
277 friend class SBFunction;
278 friend class SBModule;
279 friend class SBTarget;
280 friend class SBTypeEnumMember;
283 friend class SBTypeMember;
285 friend class SBTypeStaticField;
286 friend class SBTypeList;
287 friend class SBValue;
288 friend class SBWatchpoint;
289
291
293 SBType(const lldb::TypeSP &);
294 SBType(const lldb::TypeImplSP &);
295};
296
298public:
299 SBTypeList();
300
301 SBTypeList(const lldb::SBTypeList &rhs);
302
304
306
307 explicit operator bool() const;
308
309 bool IsValid();
310
311 void Append(lldb::SBType type);
312
313 lldb::SBType GetTypeAtIndex(uint32_t index);
314
315 uint32_t GetSize();
316
317private:
318 std::unique_ptr<lldb_private::TypeListImpl> m_opaque_up;
319 friend class SBModule;
320 friend class SBCompileUnit;
321};
322
323} // namespace lldb
324
325#endif // LLDB_API_SBTYPE_H
#define LLDB_API
Definition SBDefines.h:28
static llvm::StringRef GetName(XcodeSDK::Type type)
Definition XcodeSDK.cpp:21
std::unique_ptr< lldb_private::TypeListImpl > m_opaque_up
Definition SBType.h:318
lldb::SBType GetTypeAtIndex(uint32_t index)
Definition SBType.cpp:775
uint32_t GetSize()
Definition SBType.cpp:783
friend class SBModule
Definition SBType.h:319
lldb::SBTypeList & operator=(const lldb::SBTypeList &rhs)
Definition SBType.cpp:756
friend class SBCompileUnit
Definition SBType.h:320
void Append(lldb::SBType type)
Definition SBType.cpp:768
lldb::SBType GetArgumentTypeAtIndex(uint32_t)
Definition SBType.cpp:1003
const char * GetMangledName()
Definition SBType.cpp:967
void reset(lldb_private::TypeMemberFunctionImpl *)
Definition SBType.cpp:1034
lldb::MemberFunctionKind GetKind()
Definition SBType.cpp:1014
lldb::SBType GetReturnType()
Definition SBType.cpp:985
const char * GetName()
Definition SBType.cpp:945
lldb::SBTypeMemberFunction & operator=(const lldb::SBTypeMemberFunction &rhs)
Definition SBType.cpp:927
bool GetDescription(lldb::SBStream &description, lldb::DescriptionLevel description_level)
Definition SBType.cpp:1022
lldb::TypeMemberFunctionImplSP m_opaque_sp
Definition SBType.h:107
uint32_t GetNumberOfArguments()
Definition SBType.cpp:995
lldb::SBType GetType()
Definition SBType.cpp:975
friend class SBType
Definition SBType.h:99
const char * GetDemangledName()
Definition SBType.cpp:953
lldb_private::TypeMemberFunctionImpl & ref()
Definition SBType.cpp:1038
std::unique_ptr< lldb_private::TypeMemberImpl > m_opaque_up
Definition SBType.h:62
void reset(lldb_private::TypeMemberImpl *)
Definition SBType.cpp:905
lldb::SBTypeMember & operator=(const lldb::SBTypeMember &rhs)
Definition SBType.cpp:804
bool GetDescription(lldb::SBStream &description, lldb::DescriptionLevel description_level)
Definition SBType.cpp:874
uint64_t GetOffsetInBits()
Definition SBType.cpp:850
uint64_t GetOffsetInBytes()
Definition SBType.cpp:842
lldb::SBType GetType()
Definition SBType.cpp:832
uint32_t GetBitfieldSizeInBits()
Definition SBType.cpp:866
bool IsValid() const
Definition SBType.cpp:814
friend class SBType
Definition SBType.h:54
lldb_private::TypeMemberImpl & ref()
Definition SBType.cpp:909
lldb::SBTypeStaticField & operator=(const lldb::SBTypeStaticField &rhs)
Definition SBType.cpp:357
const char * GetMangledName()
Definition SBType.cpp:386
lldb::SBType GetType()
Definition SBType.cpp:394
lldb::SBValue GetConstantValue(lldb::SBTarget target)
Definition SBType.cpp:402
std::unique_ptr< lldb_private::CompilerDecl > m_opaque_up
Definition SBType.h:136
bool IsValid() const
Definition SBType.cpp:372
friend class SBType
Definition SBType.h:132
friend class SBWatchpoint
Definition SBType.h:288
bool IsArrayType()
Definition SBType.cpp:156
uint32_t GetNumberOfTemplateArguments()
Definition SBType.cpp:645
uint32_t GetNumberOfDirectBaseClasses()
Definition SBType.cpp:462
lldb::SBType FindDirectNestedType(const char *name)
Definition SBType.cpp:725
lldb::SBType GetReferenceType()
Definition SBType.cpp:198
lldb::SBType GetArrayType(uint64_t size)
Definition SBType.cpp:231
lldb::SBType GetVectorElementType()
Definition SBType.cpp:240
lldb::SBValue GetTemplateArgumentValue(lldb::SBTarget target, uint32_t idx)
Returns the value of the non-type template parameter at index idx.
Definition SBType.cpp:689
uint32_t GetNumberOfFields()
Definition SBType.cpp:478
lldb::SBType GetDereferencedType()
Definition SBType.cpp:214
friend class SBTypeEnumMember
Definition SBType.h:280
lldb::SBModule GetModule()
Definition SBType.cpp:610
lldb::BasicType GetBasicType()
Definition SBType.cpp:445
bool IsPolymorphicClass()
Definition SBType.cpp:261
uint32_t GetTypeFlags()
Definition SBType.cpp:602
lldb::TypeImplSP GetSP()
Definition SBType.cpp:82
friend class lldb_private::python::SWIGBridge
Definition SBType.h:290
friend class SBTypeEnumMemberList
Definition SBType.h:281
bool IsAggregateType()
Definition SBType.cpp:293
bool IsReferenceType()
Definition SBType.cpp:173
lldb::SBTypeMember GetDirectBaseClassAtIndex(uint32_t idx)
Definition SBType.cpp:500
bool IsVectorType()
Definition SBType.cpp:165
lldb::TemplateArgumentKind GetTemplateArgumentKind(uint32_t idx)
Return the TemplateArgumentKind of the template argument at index idx.
Definition SBType.cpp:680
lldb::SBTypeMemberFunction GetMemberFunctionAtIndex(uint32_t idx)
Definition SBType.cpp:336
lldb::SBType GetPointerType()
Definition SBType.cpp:181
uint32_t GetNumberOfMemberFunctions()
Definition SBType.cpp:327
lldb::SBType GetTemplateArgumentType(uint32_t idx)
Definition SBType.cpp:654
lldb::TypeClass GetTypeClass()
Definition SBType.cpp:637
friend class SBTarget
Definition SBType.h:279
friend class SBModule
Definition SBType.h:278
lldb::SBType GetCanonicalType()
Definition SBType.cpp:427
friend class SBTypeStaticField
Definition SBType.h:285
bool operator!=(lldb::SBType &rhs)
Definition SBType.cpp:70
friend class SBValue
Definition SBType.h:287
bool GetDescription(lldb::SBStream &description, lldb::DescriptionLevel description_level)
Definition SBType.cpp:486
lldb::SBTypeList GetFunctionArgumentTypes()
Definition SBType.cpp:313
friend class SBTypeMemberFunction
Definition SBType.h:284
uint32_t GetNumberOfVirtualBaseClasses()
Definition SBType.cpp:470
lldb::SBType GetTypedefedType()
Definition SBType.cpp:206
lldb_private::TypeImpl & ref()
Definition SBType.cpp:99
lldb::SBTypeStaticField GetStaticFieldWithName(const char *name)
Definition SBType.cpp:532
lldb::SBType & operator=(const lldb::SBType &rhs)
Definition SBType.cpp:88
lldb::SBType GetFunctionReturnType()
Definition SBType.cpp:301
friend class SBTypeList
Definition SBType.h:286
lldb::TypeImplSP m_opaque_sp
Definition SBType.h:275
lldb::SBType GetUnqualifiedType()
Definition SBType.cpp:419
lldb::SBTypeMember GetVirtualBaseClassAtIndex(uint32_t idx)
Definition SBType.cpp:516
bool IsTypeComplete()
Definition SBType.cpp:589
friend class SBTypeMember
Definition SBType.h:283
const char * GetDisplayTypeName()
Definition SBType.cpp:629
lldb::SBType GetArrayElementType()
Definition SBType.cpp:222
bool IsTypedefType()
Definition SBType.cpp:269
friend class SBFunction
Definition SBType.h:277
bool IsAnonymousType()
Definition SBType.cpp:277
friend class SBTypeNameSpecifier
Definition SBType.h:282
bool IsPointerType()
Definition SBType.cpp:148
const char * GetName()
Definition SBType.cpp:621
lldb::SBType GetPointeeType()
Definition SBType.cpp:190
lldb::SBTypeMember GetFieldAtIndex(uint32_t idx)
Definition SBType.cpp:563
void SetSP(const lldb::TypeImplSP &type_impl_sp)
Definition SBType.cpp:84
uint64_t GetByteSize()
Definition SBType.cpp:126
bool IsValid() const
Definition SBType.cpp:113
uint64_t GetByteAlign()
Definition SBType.cpp:136
bool operator==(lldb::SBType &rhs)
Definition SBType.cpp:58
lldb::SBType GetEnumerationIntegerType()
Definition SBType.cpp:435
lldb::SBTypeEnumMemberList GetEnumMembers()
Definition SBType.cpp:542
bool IsFunctionType()
Definition SBType.cpp:253
bool IsScopedEnumerationType()
Definition SBType.cpp:285
Represents a generic declaration such as a function declaration.
Generic representation of a type in a programming language.
A class that represents a running process on the host machine.
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
std::shared_ptr< lldb_private::Type > TypeSP
MemberFunctionKind
Kind of member function.
std::shared_ptr< lldb_private::TypeImpl > TypeImplSP