LLDB mainline
lldb_private::CompilerType Class Reference

Generic representation of a type in a programming language. More...

#include <CompilerType.h>

Inheritance diagram for lldb_private::CompilerType:
[legend]

Classes

struct  IntegralTemplateArgument
class  TypeSystemSPWrapper
 This is a minimal wrapper of a TypeSystem shared pointer as returned by CompilerType which conventien dyn_cast support. More...

Public Member Functions

 CompilerType (lldb::TypeSystemWP type_system, lldb::opaque_compiler_type_t type)
 Creates a CompilerType with the given TypeSystem and opaque compiler type.
 CompilerType (TypeSystemSPWrapper type_system, lldb::opaque_compiler_type_t type)
 CompilerType (const CompilerType &rhs)
 CompilerType ()=default
bool IsForcefullyCompleted () const
unsigned GetPtrAuthKey () const
unsigned GetPtrAuthDiscriminator () const
bool GetPtrAuthAddressDiversity () const
bool GetValueAsScalar (const DataExtractor &data, lldb::offset_t data_offset, size_t data_byte_size, Scalar &value, ExecutionContextScope *exe_scope) const
void Clear ()
const CompilerTypeoperator= (const CompilerType &rhs)
 Operators.
bool operator< (const CompilerType &rhs) const
 operator bool () const
 Tests.
bool IsValid () const
bool IsArrayType (CompilerType *element_type=nullptr, uint64_t *size=nullptr, bool *is_incomplete=nullptr) const
bool IsVectorType (CompilerType *element_type=nullptr, uint64_t *size=nullptr) const
bool IsArrayOfScalarType () const
bool IsAggregateType () const
bool IsAnonymousType () const
bool IsScopedEnumerationType () const
bool IsBeingDefined () const
bool IsCharType () const
bool IsCompleteType () const
bool IsConst () const
bool IsDefined () const
bool IsComplexType () const
bool IsFloatingPointType () const
 Returns true for floating point types (including complex floats).
bool IsRealFloatingPointType () const
 Returns true for non-complex float types.
bool IsFunctionType () const
uint32_t IsHomogeneousAggregate (CompilerType *base_type_ptr) const
size_t GetNumberOfFunctionArguments () const
CompilerType GetFunctionArgumentAtIndex (const size_t index) const
bool IsVariadicFunctionType () const
bool IsFunctionPointerType () const
bool IsMemberFunctionPointerType () const
bool IsBlockPointerType (CompilerType *function_pointer_type_ptr=nullptr) const
bool IsIntegerType (bool &is_signed) const
bool IsEnumerationType (bool &is_signed) const
bool IsIntegerOrEnumerationType (bool &is_signed) const
bool IsPolymorphicClass () const
bool IsPossibleDynamicType (CompilerType *target_type, bool check_cplusplus, bool check_objc) const
bool IsPointerToScalarType () const
bool IsRuntimeGeneratedType () const
bool IsPointerType (CompilerType *pointee_type=nullptr) const
bool IsPointerOrReferenceType (CompilerType *pointee_type=nullptr) const
bool IsReferenceType (CompilerType *pointee_type=nullptr, bool *is_rvalue=nullptr) const
bool ShouldTreatScalarValueAsAddress () const
bool IsScalarType () const
bool IsTemplateType () const
bool IsTypedefType () const
bool IsVoidType () const
bool IsInteger () const
 This is used when you don't care about the signedness of the integer.
bool IsEnumerationType () const
 This is used when you don't care about the signedness of the enum.
bool IsUnscopedEnumerationType () const
bool IsIntegerOrUnscopedEnumerationType () const
bool IsSigned () const
bool IsNullPtrType () const
bool IsBoolean () const
bool IsEnumerationIntegerTypeSigned () const
bool IsScalarOrUnscopedEnumerationType () const
bool IsPromotableIntegerType () const
bool IsPointerToVoid () const
bool IsRecordType () const
bool IsVirtualBase (CompilerType target_base, CompilerType *virtual_base, bool carry_virtual=false) const
 Checks whether target_base is a virtual base of type (direct or indirect).
bool IsContextuallyConvertibleToBool () const
 This may only be defined in TypeSystemClang.
bool IsBasicType () const
std::string TypeDescription ()
bool CompareTypes (CompilerType rhs) const
const char * GetTypeTag ()
uint32_t GetNumberOfNonEmptyBaseClasses ()
 Go through the base classes and count non-empty ones.
bool GetCompleteType () const
 Type Completion.
size_t GetPointerByteSize () const
 AST related queries.
TypeSystemSPWrapper GetTypeSystem () const
 Accessors.
template<typename TypeSystemType>
std::shared_ptr< TypeSystemType > GetTypeSystem () const
ConstString GetTypeName (bool BaseOnly=false) const
ConstString GetDisplayTypeName () const
ConstString GetMangledTypeName () const
uint32_t GetTypeInfo (CompilerType *pointee_or_element_compiler_type=nullptr) const
lldb::LanguageType GetMinimumLanguage ()
lldb::opaque_compiler_type_t GetOpaqueQualType () const
lldb::TypeClass GetTypeClass () const
void SetCompilerType (lldb::TypeSystemWP type_system, lldb::opaque_compiler_type_t type)
void SetCompilerType (TypeSystemSPWrapper type_system, lldb::opaque_compiler_type_t type)
unsigned GetTypeQualifiers () const
CompilerType GetArrayElementType (ExecutionContextScope *exe_scope) const
 Creating related types.
CompilerType GetArrayType (uint64_t size) const
CompilerType GetCanonicalType () const
CompilerType GetFullyUnqualifiedType () const
CompilerType GetEnumerationIntegerType () const
int GetFunctionArgumentCount () const
 Returns -1 if this isn't a function of if the function doesn't have a prototype Returns a value >= 0 if there is a prototype.
CompilerType GetFunctionArgumentTypeAtIndex (size_t idx) const
CompilerType GetFunctionReturnType () const
size_t GetNumMemberFunctions () const
TypeMemberFunctionImpl GetMemberFunctionAtIndex (size_t idx)
CompilerType GetNonReferenceType () const
 If this type is a reference to a type (L value or R value reference), return a new type with the reference removed, else return the current type itself.
CompilerType GetPointeeType () const
 If this type is a pointer type, return the type that the pointer points to, else return an invalid type.
CompilerType GetPointerType () const
 Return a new CompilerType that is a pointer to this type.
CompilerType GetLValueReferenceType () const
 Return a new CompilerType that is a L value reference to this type if this type is valid and the type system supports L value references, else return an invalid type.
CompilerType GetRValueReferenceType () const
 Return a new CompilerType that is a R value reference to this type if this type is valid and the type system supports R value references, else return an invalid type.
CompilerType AddConstModifier () const
 Return a new CompilerType adds a const modifier to this type if this type is valid and the type system supports const modifiers, else return an invalid type.
CompilerType AddVolatileModifier () const
 Return a new CompilerType adds a volatile modifier to this type if this type is valid and the type system supports volatile modifiers, else return an invalid type.
CompilerType GetAtomicType () const
 Return a new CompilerType that is the atomic type of this type.
CompilerType AddRestrictModifier () const
 Return a new CompilerType adds a restrict modifier to this type if this type is valid and the type system supports restrict modifiers, else return an invalid type.
CompilerType CreateTypedef (const char *name, const CompilerDeclContext &decl_ctx, uint32_t payload) const
 Create a typedef to this type using "name" as the name of the typedef this type is valid and the type system supports typedefs, else return an invalid type.
CompilerType GetTypedefedType () const
 If the current object represents a typedef type, get the underlying type.
CompilerType GetBasicTypeFromAST (lldb::BasicType basic_type) const
 Create related types using the current type's AST.
CompilerType AddPtrAuthModifier (uint32_t payload) const
 Return a new CompilerType adds a ptrauth modifier from the given 32-bit opaque payload to this type if this type is valid and the type system supports ptrauth modifiers, else return an invalid type.
llvm::Expected< uint64_t > GetByteSize (ExecutionContextScope *exe_scope) const
 Return the size of the type in bytes.
llvm::Expected< uint64_t > GetBitSize (ExecutionContextScope *exe_scope) const
 Return the size of the type in bits.
lldb::Encoding GetEncoding () const
lldb::Format GetFormat () const
std::optional< size_t > GetTypeBitAlign (ExecutionContextScope *exe_scope) const
llvm::Expected< uint32_t > GetNumChildren (bool omit_empty_base_classes, const ExecutionContext *exe_ctx) const
lldb::BasicType GetBasicTypeEnumeration () const
void ForEachEnumerator (std::function< bool(const CompilerType &integer_type, ConstString name, const llvm::APSInt &value)> const &callback) const
 If this type is an enumeration, iterate through all of its enumerators using a callback.
uint32_t GetNumFields () const
CompilerType GetFieldAtIndex (size_t idx, std::string &name, uint64_t *bit_offset_ptr, uint32_t *bitfield_bit_size_ptr, bool *is_bitfield_ptr) const
uint32_t GetNumDirectBaseClasses () const
uint32_t GetNumVirtualBaseClasses () const
CompilerType GetDirectBaseClassAtIndex (size_t idx, uint32_t *bit_offset_ptr) const
CompilerType GetVirtualBaseClassAtIndex (size_t idx, uint32_t *bit_offset_ptr) const
CompilerDecl GetStaticFieldWithName (llvm::StringRef name) const
llvm::Expected< CompilerTypeGetDereferencedType (ExecutionContext *exe_ctx, std::string &deref_name, uint32_t &deref_byte_size, int32_t &deref_byte_offset, ValueObject *valobj, uint64_t &language_flags) const
llvm::Expected< CompilerTypeGetChildCompilerTypeAtIndex (ExecutionContext *exe_ctx, size_t idx, bool transparent_pointers, bool omit_empty_base_classes, bool ignore_array_bounds, std::string &child_name, uint32_t &child_byte_size, int32_t &child_byte_offset, uint32_t &child_bitfield_bit_size, uint32_t &child_bitfield_bit_offset, bool &child_is_base_class, bool &child_is_deref_of_parent, ValueObject *valobj, uint64_t &language_flags) const
llvm::Expected< uint32_t > GetIndexOfChildWithName (llvm::StringRef name, bool omit_empty_base_classes) const
 Lookup a child given a name.
size_t GetIndexOfChildMemberWithName (llvm::StringRef name, bool omit_empty_base_classes, std::vector< uint32_t > &child_indexes) const
 Lookup a child member given a name.
CompilerType GetDirectNestedTypeWithName (llvm::StringRef name) const
size_t GetNumTemplateArguments (bool expand_pack=false) const
 Return the number of template arguments the type has.
lldb::TemplateArgumentKind GetTemplateArgumentKind (size_t idx, bool expand_pack=false) const
CompilerType GetTypeTemplateArgument (size_t idx, bool expand_pack=false) const
std::optional< IntegralTemplateArgumentGetIntegralTemplateArgument (size_t idx, bool expand_pack=false) const
 Returns the value of the template argument and its type.
CompilerType GetTypeForFormatters () const
LazyBool ShouldPrintAsOneLiner (ValueObject *valobj) const
bool IsMeaninglessWithoutDynamicResolution () const
LLVM_DUMP_METHOD void dump () const
 Dumping types.
bool DumpTypeValue (Stream *s, lldb::Format format, const DataExtractor &data, lldb::offset_t data_offset, size_t data_byte_size, uint32_t bitfield_bit_size, uint32_t bitfield_bit_offset, ExecutionContextScope *exe_scope)
void DumpTypeDescription (lldb::DescriptionLevel level=lldb::eDescriptionLevelFull) const
 Dump to stdout.
void DumpTypeDescription (Stream *s, lldb::DescriptionLevel level=lldb::eDescriptionLevelFull) const
 Print a description of the type to a stream.

Private Member Functions

bool Verify () const
 If the type is valid, ask the TypeSystem to verify the integrity of the type to catch CompilerTypes that mix and match invalid TypeSystem/Opaque type pairs.

Private Attributes

lldb::TypeSystemWP m_type_system
lldb::opaque_compiler_type_t m_type = nullptr

Detailed Description

Generic representation of a type in a programming language.

This class serves as an abstraction for a type inside one of the TypeSystems implemented by the language plugins. It does not have any actual logic in it but only stores an opaque pointer and a pointer to the TypeSystem that gives meaning to this opaque pointer. All methods of this class should call their respective method in the TypeSystem interface and pass the opaque pointer along.

See also
lldb_private::TypeSystem

Definition at line 37 of file CompilerType.h.

Constructor & Destructor Documentation

◆ CompilerType() [1/4]

◆ CompilerType() [2/4]

CompilerType::CompilerType ( CompilerType::TypeSystemSPWrapper type_system,
lldb::opaque_compiler_type_t type )

Definition at line 1179 of file CompilerType.cpp.

References m_type, m_type_system, and Verify().

◆ CompilerType() [3/4]

lldb_private::CompilerType::CompilerType ( const CompilerType & rhs)
inline

Definition at line 92 of file CompilerType.h.

References CompilerType(), m_type, and m_type_system.

◆ CompilerType() [4/4]

Member Function Documentation

◆ AddConstModifier()

CompilerType CompilerType::AddConstModifier ( ) const

Return a new CompilerType adds a const modifier to this type if this type is valid and the type system supports const modifiers, else return an invalid type.

Definition at line 705 of file CompilerType.cpp.

References AddConstModifier(), CompilerType(), CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by AddConstModifier(), PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::SymbolFileCTF::CreateModifier(), and lldb_private::Type::ResolveCompilerType().

◆ AddPtrAuthModifier()

CompilerType CompilerType::AddPtrAuthModifier ( uint32_t payload) const

Return a new CompilerType adds a ptrauth modifier from the given 32-bit opaque payload to this type if this type is valid and the type system supports ptrauth modifiers, else return an invalid type.

Note that this does not check if this type is a pointer.

Definition at line 677 of file CompilerType.cpp.

References AddPtrAuthModifier(), CompilerType(), CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by AddPtrAuthModifier(), and lldb_private::Type::ResolveCompilerType().

◆ AddRestrictModifier()

CompilerType CompilerType::AddRestrictModifier ( ) const

Return a new CompilerType adds a restrict modifier to this type if this type is valid and the type system supports restrict modifiers, else return an invalid type.

Definition at line 719 of file CompilerType.cpp.

References AddRestrictModifier(), CompilerType(), CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by AddRestrictModifier(), PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::SymbolFileCTF::CreateModifier(), and lldb_private::Type::ResolveCompilerType().

◆ AddVolatileModifier()

CompilerType CompilerType::AddVolatileModifier ( ) const

Return a new CompilerType adds a volatile modifier to this type if this type is valid and the type system supports volatile modifiers, else return an invalid type.

Definition at line 712 of file CompilerType.cpp.

References AddVolatileModifier(), CompilerType(), CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by AddVolatileModifier(), PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::SymbolFileCTF::CreateModifier(), and lldb_private::Type::ResolveCompilerType().

◆ Clear()

◆ CompareTypes()

◆ CreateTypedef()

CompilerType CompilerType::CreateTypedef ( const char * name,
const CompilerDeclContext & decl_ctx,
uint32_t payload ) const

Create a typedef to this type using "name" as the name of the typedef this type is valid and the type system supports typedefs, else return an invalid type.

Parameters
payloadThe typesystem-specific lldb::Type payload.

Definition at line 726 of file CompilerType.cpp.

References CompilerType(), CompilerType(), CreateTypedef(), GetTypeSystem(), IsValid(), and m_type.

Referenced by PDBASTParser::CreateLLDBTypeFromPDBType(), CreateTypedef(), lldb_private::SymbolFileCTF::CreateTypedef(), lldb_private::npdb::PdbAstBuilderClang::GetOrCreateTypedefType(), and lldb_private::Type::ResolveCompilerType().

◆ dump()

LLVM_DUMP_METHOD void CompilerType::dump ( ) const

Dumping types.

Convenience LLVM-style dump method for use in the debugger only. Don't call this function from actual code.

Definition at line 1059 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ DumpTypeDescription() [1/2]

void CompilerType::DumpTypeDescription ( lldb::DescriptionLevel level = lldb::eDescriptionLevelFull) const

◆ DumpTypeDescription() [2/2]

void CompilerType::DumpTypeDescription ( Stream * s,
lldb::DescriptionLevel level = lldb::eDescriptionLevelFull ) const

Print a description of the type to a stream.

The exact implementation varies, but the expectation is that eDescriptionLevelFull returns a source-like representation of the type, whereas eDescriptionLevelVerbose does a dump of the underlying AST if applicable.

Definition at line 1051 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ DumpTypeValue()

bool CompilerType::DumpTypeValue ( Stream * s,
lldb::Format format,
const DataExtractor & data,
lldb::offset_t data_offset,
size_t data_byte_size,
uint32_t bitfield_bit_size,
uint32_t bitfield_bit_offset,
ExecutionContextScope * exe_scope )

◆ ForEachEnumerator()

void CompilerType::ForEachEnumerator ( std::function< bool(const CompilerType &integer_type, ConstString name, const llvm::APSInt &value)> const & callback) const

If this type is an enumeration, iterate through all of its enumerators using a callback.

If the callback returns true, keep iterating, else abort the iteration.

Definition at line 808 of file CompilerType.cpp.

References CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb::SBType::GetEnumMembers().

◆ GetArrayElementType()

CompilerType CompilerType::GetArrayElementType ( ExecutionContextScope * exe_scope) const

◆ GetArrayType()

CompilerType CompilerType::GetArrayType ( uint64_t size) const

◆ GetAtomicType()

CompilerType CompilerType::GetAtomicType ( ) const

Return a new CompilerType that is the atomic type of this type.

If this type is not valid or the type system doesn't support atomic types, this returns an invalid type.

Definition at line 698 of file CompilerType.cpp.

References CompilerType(), CompilerType(), GetAtomicType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by GetAtomicType(), and lldb_private::Type::ResolveCompilerType().

◆ GetBasicTypeEnumeration()

◆ GetBasicTypeFromAST()

◆ GetBitSize()

llvm::Expected< uint64_t > CompilerType::GetBitSize ( ExecutionContextScope * exe_scope) const

◆ GetByteSize()

llvm::Expected< uint64_t > CompilerType::GetByteSize ( ExecutionContextScope * exe_scope) const

Return the size of the type in bytes.

Definition at line 762 of file CompilerType.cpp.

References GetBitSize().

Referenced by CalculateNumChildren(), lldb_private::ValueObject::Cast(), lldb_private::ValueObject::CastToBasicType(), lldb_private::ValueObject::CastToEnumType(), CopyExpressionResult(), lldb_private::ValueObject::CreateValueObjectFromAPInt(), lldb_private::ValueObject::CreateValueObjectFromBool(), lldb_private::ValueObject::CreateValueObjectFromNullptr(), CommandObjectMemoryRead::DoExecute(), lldb_private::TypeSystemClang::DoIntegralPromotion(), ProcessFreeBSDKernelCore::DoUpdateThreadList(), lldb_private::ClassDescriptorV2::iVarsStorage::fill(), lldb_private::TypeFormatImpl_Format::FormatObject(), lldb_private::Type::GetByteSize(), lldb_private::ValueObjectConstResult::GetByteSize(), lldb_private::ValueObjectVariable::GetByteSize(), lldb_private::TypeSystemClang::GetChildCompilerTypeAtIndex(), lldb_private::ValueObject::GetPointeeData(), lldb_private::TypeSystemClang::GetPointerByteSize(), lldb_private::RegisterTypeBuilderClang::GetRegisterType(), ABIMacOSX_arm64::GetReturnValueObjectImpl(), ABIMacOSX_arm::GetReturnValueObjectImpl(), ABISysV_arm64::GetReturnValueObjectImpl(), ABISysV_arm::GetReturnValueObjectImpl(), ABISysV_mips64::GetReturnValueObjectImpl(), ABISysV_x86_64::GetReturnValueObjectImpl(), ABIWindows_x86_64::GetReturnValueObjectImpl(), ABISysV_arc::GetReturnValueObjectSimple(), ABISysV_i386::GetReturnValueObjectSimple(), ABISysV_loongarch::GetReturnValueObjectSimple(), ABISysV_ppc::GetReturnValueObjectSimple(), ABISysV_riscv::GetReturnValueObjectSimple(), ABISysV_s390x::GetReturnValueObjectSimple(), ABISysV_x86_64::GetReturnValueObjectSimple(), ABIWindows_x86_64::GetReturnValueObjectSimple(), lldb_private::Thread::GetSiginfoValue(), lldb_private::ValueObject::GetSyntheticBase(), lldb_private::ValueObject::GetSyntheticChildAtOffset(), lldb_private::Value::GetValueAsData(), GetValueAsScalar(), lldb_private::Value::GetValueByteSize(), lldb_private::formatters::GetWCharByteSize(), LoadValueFromConsecutiveGPRRegisters(), LoadValueFromConsecutiveGPRRegisters(), IRForTarget::MaybeHandleVariable(), DWARFASTParserClang::ParsePointerToMemberType(), lldb_private::ProcessStructReader::ProcessStructReader(), lldb_private::formatters::MsvcStlDequeSyntheticFrontEnd::Update(), and lldb_private::dil::Interpreter::VerifyArithmeticCast().

◆ GetCanonicalType()

◆ GetChildCompilerTypeAtIndex()

llvm::Expected< CompilerType > CompilerType::GetChildCompilerTypeAtIndex ( ExecutionContext * exe_ctx,
size_t idx,
bool transparent_pointers,
bool omit_empty_base_classes,
bool ignore_array_bounds,
std::string & child_name,
uint32_t & child_byte_size,
int32_t & child_byte_offset,
uint32_t & child_bitfield_bit_size,
uint32_t & child_bitfield_bit_offset,
bool & child_is_base_class,
bool & child_is_deref_of_parent,
ValueObject * valobj,
uint64_t & language_flags ) const

◆ GetCompleteType()

◆ GetDereferencedType()

llvm::Expected< CompilerType > CompilerType::GetDereferencedType ( ExecutionContext * exe_ctx,
std::string & deref_name,
uint32_t & deref_byte_size,
int32_t & deref_byte_offset,
ValueObject * valobj,
uint64_t & language_flags ) const

Definition at line 875 of file CompilerType.cpp.

References CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ValueObject::Dereference().

◆ GetDirectBaseClassAtIndex()

◆ GetDirectNestedTypeWithName()

◆ GetDisplayTypeName()

◆ GetEncoding()

◆ GetEnumerationIntegerType()

CompilerType CompilerType::GetEnumerationIntegerType ( ) const

◆ GetFieldAtIndex()

◆ GetFormat()

◆ GetFullyUnqualifiedType()

◆ GetFunctionArgumentAtIndex()

CompilerType CompilerType::GetFunctionArgumentAtIndex ( const size_t index) const

◆ GetFunctionArgumentCount()

int CompilerType::GetFunctionArgumentCount ( ) const

Returns -1 if this isn't a function of if the function doesn't have a prototype Returns a value >= 0 if there is a prototype.

Definition at line 614 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ClangFunctionCaller::CompileFunction().

◆ GetFunctionArgumentTypeAtIndex()

CompilerType CompilerType::GetFunctionArgumentTypeAtIndex ( size_t idx) const

◆ GetFunctionReturnType()

CompilerType CompilerType::GetFunctionReturnType ( ) const

◆ GetIndexOfChildMemberWithName()

size_t CompilerType::GetIndexOfChildMemberWithName ( llvm::StringRef name,
bool omit_empty_base_classes,
std::vector< uint32_t > & child_indexes ) const

Lookup a child member given a name.

This function will match member names only and will descend into "clang_type" children in search for the first member in this class, or any base class that matches "name".

Parameters
child_indexesreturns an index path for the result.
Returns
0 if unsuccessful, otherwise the length of the index path.

TODO: Return all matches for a given name by returning a vector<vector<uint32_t>> so we catch all names that match a given child name, not just the first.

Definition at line 939 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ValueObject::GetChildMemberWithName(), lldb_private::TypeSystemClang::GetIndexOfChildMemberWithName(), lldb_private::formatters::IsMsvcStlOrdering(), lldb_private::formatters::IsMsvcStlStringType(), and lldb_private::formatters::IsMsvcStlStringViewType().

◆ GetIndexOfChildWithName()

llvm::Expected< uint32_t > CompilerType::GetIndexOfChildWithName ( llvm::StringRef name,
bool omit_empty_base_classes ) const

Lookup a child given a name.

This function will match base class names and member member names in "clang_type" only, not descendants.

Definition at line 1018 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::TypeSystemClang::GetIndexOfChildWithName(), and lldb_private::ValueObject::GetIndexOfChildWithName().

◆ GetIntegralTemplateArgument()

std::optional< CompilerType::IntegralTemplateArgument > CompilerType::GetIntegralTemplateArgument ( size_t idx,
bool expand_pack = false ) const

Returns the value of the template argument and its type.

If expand_pack is true, then variadic argument packs are automatically expanded to their supplied arguments. With expand_pack set to false, an arguement pack will count as 1 argument and it is invalid to call this method on the pack argument.

Definition at line 985 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ GetLValueReferenceType()

◆ GetMangledTypeName()

ConstString CompilerType::GetMangledTypeName ( ) const

Definition at line 524 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ GetMemberFunctionAtIndex()

TypeMemberFunctionImpl CompilerType::GetMemberFunctionAtIndex ( size_t idx)

Definition at line 646 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ GetMinimumLanguage()

◆ GetNonReferenceType()

CompilerType CompilerType::GetNonReferenceType ( ) const

◆ GetNumberOfFunctionArguments()

size_t CompilerType::GetNumberOfFunctionArguments ( ) const

Definition at line 151 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb::SBType::GetFunctionArgumentTypes().

◆ GetNumberOfNonEmptyBaseClasses()

uint32_t CompilerType::GetNumberOfNonEmptyBaseClasses ( )

Go through the base classes and count non-empty ones.

Definition at line 479 of file CompilerType.cpp.

References CompilerType(), GetDirectBaseClassAtIndex(), GetNumberOfNonEmptyBaseClasses(), GetNumDirectBaseClasses(), and GetNumFields().

Referenced by GetNumberOfNonEmptyBaseClasses().

◆ GetNumChildren()

◆ GetNumDirectBaseClasses()

uint32_t CompilerType::GetNumDirectBaseClasses ( ) const

◆ GetNumFields()

◆ GetNumMemberFunctions()

size_t CompilerType::GetNumMemberFunctions ( ) const

Definition at line 638 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ GetNumTemplateArguments()

size_t CompilerType::GetNumTemplateArguments ( bool expand_pack = false) const

Return the number of template arguments the type has.

If expand_pack is true, then variadic argument packs are automatically expanded to their supplied arguments. If it is false an argument pack will only count as 1 argument.

Definition at line 959 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::formatters::LibcxxStdSpanSyntheticFrontEndCreator(), lldb_private::formatters::LibStdcppSpanSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdProxyArraySyntheticFrontEnd::Update(), lldb_private::formatters::LibcxxStdSliceArraySyntheticFrontEnd::Update(), and lldb_private::formatters::LibcxxStdValarraySyntheticFrontEnd::Update().

◆ GetNumVirtualBaseClasses()

uint32_t CompilerType::GetNumVirtualBaseClasses ( ) const

Definition at line 842 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by IsVirtualBase(), and PrivateAutoCompleteMembers().

◆ GetOpaqueQualType()

lldb::opaque_compiler_type_t lldb_private::CompilerType::GetOpaqueQualType ( ) const
inline

Definition at line 299 of file CompilerType.h.

References m_type.

Referenced by lldb_private::ClangExpressionDeclMap::AddContextClassType(), lldb_private::TypeSystemClang::AddEnumerationValueToEnumerationType(), lldb_private::ClangExpressionDeclMap::AddExpressionVariable(), lldb_private::ClangExpressionDeclMap::AddOneVariable(), lldb_private::ClangExpressionDeclMap::AddPersistentVariable(), PDBASTParser::AddRecordBases(), PDBASTParser::AddRecordMethod(), lldb_private::TypeSystemClang::AreTypesSame(), DWARFASTParserClang::CompleteRecordType(), lldb_private::ClangASTImporter::CompleteType(), lldb_private::plugin::dwarf::SymbolFileDWARF::CompleteType(), lldb_private::SymbolFileCTF::CompleteType(), DWARFASTParserClang::CompleteTypeFromDWARF(), PDBASTParser::CompleteTypeFromPDB(), PDBASTParser::CompleteTypeFromUDT(), lldb_private::npdb::PdbAstBuilderClang::CreateArrayType(), lldb_private::TypeSystemClang::CreateBlockPointerType(), lldb_private::npdb::PdbAstBuilderClang::CreateEnumType(), lldb_private::npdb::PdbAstBuilderClang::CreateFunctionDecl(), lldb_private::npdb::PdbAstBuilderClang::CreateFunctionType(), PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::SymbolFileCTF::CreateRecord(), lldb_private::npdb::PdbAstBuilderClang::CreateRecordType(), lldb_private::ClangASTImporter::DeportType(), CommandObjectMemoryRead::DoExecute(), lldb_private::TypeSystemClang::DumpFromSymbolFile(), lldb_private::npdb::PdbAstBuilderClang::GetBasicType(), lldb_private::ClangASTSource::GetCompleteObjCInterface(), lldb_private::FormatManager::GetPossibleMatches(), lldb_private::ClangUtil::GetQualType(), lldb_private::ObjCLanguageRuntime::GetTypeBitSize(), lldb_private::plugin::dwarf::SymbolFileDWARF::HasForwardDeclForCompilerType(), lldb_private::ClangUtil::IsClangType(), lldb_private::operator==(), DWARFASTParserClang::ParseCXXMethod(), DWARFASTParserClang::ParseInheritance(), and DWARFASTParserClang::ParseStructureLikeDIE().

◆ GetPointeeType()

◆ GetPointerByteSize()

size_t CompilerType::GetPointerByteSize ( ) const

AST related queries.

Definition at line 503 of file CompilerType.cpp.

References GetTypeSystem().

Referenced by lldb_private::Value::GetValueAsData().

◆ GetPointerType()

CompilerType CompilerType::GetPointerType ( ) const

Return a new CompilerType that is a pointer to this type.

Definition at line 669 of file CompilerType.cpp.

References CompilerType(), CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ClangExpressionDeclMap::AddContextClassType(), lldb_private::ValueObject::AddressOf(), lldb_private::ValueObjectConstResultImpl::AddressOf(), lldb_private::dil::ArrayToPointerConversion(), lldb_private::Process::CallVoidArgVoidPtrReturn(), lldb_private::ValueObject::CastBaseToDerivedType(), PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::SymbolFileCTF::CreateModifier(), lldb_private::ValueObject::CreateValueObjectFromAddress(), CommandObjectMemoryRead::DoExecute(), lldb_private::PlatformWindows::DoLoadImage(), lldb_private::AppleObjCRuntime::FixUpDynamicType(), lldb_private::CPPLanguageRuntime::FixUpDynamicType(), lldb_private::GNUstepObjCRuntime::FixUpDynamicType(), lldb_private::TypeSystemClang::GetPointerByteSize(), lldb_private::FormatManager::GetPossibleMatches(), lldb_private::platform_freebsd::PlatformFreeBSD::GetSiginfoType(), lldb_private::platform_linux::PlatformLinux::GetSiginfoType(), lldb_private::platform_netbsd::PlatformNetBSD::GetSiginfoType(), lldb_private::StackFrame::GuessValueForAddress(), lldb_private::InferiorCallMmap(), IRForTarget::MaybeHandleVariable(), lldb_private::formatters::ObjCSELSummaryProvider(), lldb_private::Type::ResolveCompilerType(), lldb_private::dil::DILParser::ResolveTypeDeclarators(), lldb_private::AppleGetItemInfoHandler::SetupGetItemInfoFunction(), lldb_private::formatters::StdlibCoroutineHandleSyntheticFrontEnd::Update(), and ValueObjectVTableChild::UpdateValue().

◆ GetPtrAuthAddressDiversity()

bool CompilerType::GetPtrAuthAddressDiversity ( ) const

Definition at line 128 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ GetPtrAuthDiscriminator()

unsigned CompilerType::GetPtrAuthDiscriminator ( ) const

Definition at line 121 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ GetPtrAuthKey()

unsigned CompilerType::GetPtrAuthKey ( ) const

Definition at line 114 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ GetRValueReferenceType()

CompilerType CompilerType::GetRValueReferenceType ( ) const

Return a new CompilerType that is a R value reference to this type if this type is valid and the type system supports R value references, else return an invalid type.

Definition at line 691 of file CompilerType.cpp.

References CompilerType(), CompilerType(), GetRValueReferenceType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::FormatManager::GetPossibleMatches(), GetRValueReferenceType(), and lldb_private::Type::ResolveCompilerType().

◆ GetStaticFieldWithName()

CompilerDecl CompilerType::GetStaticFieldWithName ( llvm::StringRef name) const

◆ GetTemplateArgumentKind()

TemplateArgumentKind CompilerType::GetTemplateArgumentKind ( size_t idx,
bool expand_pack = false ) const

Definition at line 968 of file CompilerType.cpp.

References lldb::eTemplateArgumentKindNull, GetTypeSystem(), IsValid(), and m_type.

◆ GetTypeBitAlign()

std::optional< size_t > CompilerType::GetTypeBitAlign ( ExecutionContextScope * exe_scope) const

Definition at line 770 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by IRForTarget::MaybeHandleVariable().

◆ GetTypeClass()

lldb::TypeClass CompilerType::GetTypeClass ( ) const

◆ GetTypedefedType()

◆ GetTypeForFormatters()

CompilerType CompilerType::GetTypeForFormatters ( ) const

◆ GetTypeInfo()

uint32_t CompilerType::GetTypeInfo ( CompilerType * pointee_or_element_compiler_type = nullptr) const

Definition at line 532 of file CompilerType.cpp.

References CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ValueObject::CanProvideValue(), DerefToNSErrorPointer(), lldb_private::ValueObjectVariable::DoUpdateChildrenAddressType(), lldb_private::FormatEntity::Formatter::DumpValue(), ExtractFields(), lldb_private::AppleObjCRuntime::FixUpDynamicType(), lldb_private::CPPLanguageRuntime::FixUpDynamicType(), lldb_private::GNUstepObjCRuntime::FixUpDynamicType(), FlattenAggregateType(), FlattenAggregateType(), lldb_private::TypeFormatImpl_Format::FormatObject(), lldb_private::ValueObject::GetExpressionPath(), ABIMacOSX_arm64::GetReturnValueObjectImpl(), ABISysV_arm64::GetReturnValueObjectImpl(), ABISysV_arm::GetReturnValueObjectImpl(), ABISysV_mips64::GetReturnValueObjectImpl(), ABISysV_ppc::GetReturnValueObjectImpl(), ABISysV_x86_64::GetReturnValueObjectImpl(), ABIWindows_x86_64::GetReturnValueObjectImpl(), ABISysV_arc::GetReturnValueObjectSimple(), ABISysV_i386::GetReturnValueObjectSimple(), ABISysV_loongarch::GetReturnValueObjectSimple(), ABISysV_ppc::GetReturnValueObjectSimple(), ABISysV_riscv::GetReturnValueObjectSimple(), ABISysV_s390x::GetReturnValueObjectSimple(), ABISysV_x86_64::GetReturnValueObjectSimple(), ABIWindows_x86_64::GetReturnValueObjectSimple(), lldb_private::TypeSystemClang::GetTypeInfo(), lldb_private::ValueObject::GetTypeInfo(), GetValueAsScalar(), lldb_private::ValueObject::GetValueForExpressionPath_Impl(), GetVTableAddress(), HasFloatingRepresentation(), IsEnumerationIntegerTypeSigned(), IsPointerValue(), IsSigned(), lldb_private::formatters::ObjCBOOLSummaryProvider(), ABIMacOSX_arm64::SetReturnValueObject(), ABISysV_arm64::SetReturnValueObject(), ABISysV_i386::SetReturnValueObject(), ABISysV_mips64::SetReturnValueObject(), lldb_private::ValueObjectChild::UpdateValue(), lldb_private::dil::Interpreter::VerifyArithmeticCast(), and lldb_private::dil::Interpreter::Visit().

◆ GetTypeName()

◆ GetTypeQualifiers()

unsigned CompilerType::GetTypeQualifiers ( ) const

◆ GetTypeSystem() [1/2]

CompilerType::TypeSystemSPWrapper CompilerType::GetTypeSystem ( ) const

Accessors.

Returns a shared pointer to the type system. The TypeSystem::TypeSystemSPWrapper can be compared for equality.

Definition at line 1201 of file CompilerType.cpp.

References m_type_system.

Referenced by AddConstModifier(), lldb_private::TypeSystemClang::AddEnumerationValueToEnumerationType(), lldb_private::TypeSystemClang::AddFieldToRecordType(), lldb_private::NameSearchContext::AddFunDecl(), lldb_private::TypeSystemClang::AddMethodToObjCObjectType(), lldb_private::TypeSystemClang::AddObjCClassProperty(), lldb_private::ClangExpressionDeclMap::AddOneVariable(), lldb_private::ClangExpressionDeclMap::AddPersistentVariable(), AddPtrAuthModifier(), AddRestrictModifier(), lldb_private::NameSearchContext::AddVarDecl(), lldb_private::TypeSystemClang::AddVariableToRecordType(), AddVolatileModifier(), lldb_private::TypeSystemClang::AreTypesSame(), lldb_private::formatters::BlockPointerSyntheticFrontEnd::BlockPointerSyntheticFrontEnd(), lldb_private::TypeSystemClang::BuildIndirectFields(), lldb_private::ClangASTImporter::CanImport(), lldb_private::ValueObject::CastToBasicType(), lldb_private::formatters::CMTimeSummaryProvider(), lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::npdb::SymbolFileNativePDB::CompleteType(), lldb_private::plugin::dwarf::SymbolFileDWARF::CompleteType(), lldb_private::ClangASTImporter::CopyType(), lldb_private::TypeSystemClang::CreateMemberPointerType(), CreateTypedef(), lldb_private::ClangASTImporter::DeportType(), lldb_private::ClangExpressionDeclMap::DeportType(), dump(), DumpTypeDescription(), DumpTypeDescription(), lldb_private::TypeSystemClang::DumpTypeName(), DumpTypeValue(), DWARFASTParserClang::ExtractIntFromFormValue(), ForEachEnumerator(), GetArrayElementType(), GetArrayType(), GetAtomicType(), GetBasicTypeEnumeration(), GetBasicTypeFromAST(), GetBitSize(), GetCanonicalType(), GetChildCompilerTypeAtIndex(), GetCompleteType(), GetDereferencedType(), GetDirectBaseClassAtIndex(), GetDirectNestedTypeWithName(), GetDisplayTypeName(), GetEncoding(), GetEnumerationIntegerType(), GetFieldAtIndex(), GetFormat(), GetFullyUnqualifiedType(), GetFunctionArgumentAtIndex(), GetFunctionArgumentCount(), GetFunctionArgumentTypeAtIndex(), GetFunctionReturnType(), GetIndexOfChildMemberWithName(), GetIndexOfChildWithName(), GetIntegralTemplateArgument(), GetLValueReferenceType(), GetMangledTypeName(), GetMemberFunctionAtIndex(), GetMinimumLanguage(), GetNonReferenceType(), GetNumberOfFunctionArguments(), GetNumChildren(), GetNumDirectBaseClasses(), GetNumFields(), GetNumMemberFunctions(), GetNumTemplateArguments(), GetNumVirtualBaseClasses(), GetPointeeType(), GetPointerByteSize(), GetPointerType(), GetPtrAuthAddressDiversity(), GetPtrAuthDiscriminator(), GetPtrAuthKey(), ABISysV_x86_64::GetReturnValueObjectImpl(), GetRValueReferenceType(), GetStaticFieldWithName(), GetTemplateArgumentKind(), GetTypeBitAlign(), GetTypeClass(), GetTypedefedType(), GetTypeForFormatters(), GetTypeInfo(), GetTypeName(), GetTypeQualifiers(), GetTypeSystem(), GetTypeTemplateArgument(), lldb_private::ClangExpressionDeclMap::GetVariableValue(), GetVirtualBaseClassAtIndex(), lldb_private::ClangASTSource::GuardedCopyType(), lldb_private::plugin::dwarf::SymbolFileDWARF::HasForwardDeclForCompilerType(), lldb_private::ClangASTImporter::Import(), IsAggregateType(), IsAnonymousType(), IsArrayType(), IsBeingDefined(), IsBlockPointerType(), IsCharType(), lldb_private::ClangUtil::IsClangType(), IsCompleteType(), IsConst(), IsDefined(), IsEnumerationType(), IsFloatingPointType(), IsForcefullyCompleted(), IsFunctionPointerType(), IsFunctionType(), IsHomogeneousAggregate(), IsIntegerType(), IsMeaninglessWithoutDynamicResolution(), IsMemberFunctionPointerType(), lldb_private::TypeSystemClang::IsObjCObjectPointerType(), IsPointerOrReferenceType(), IsPointerType(), IsPolymorphicClass(), IsPossibleDynamicType(), IsPromotableIntegerType(), IsReferenceType(), IsRuntimeGeneratedType(), IsScalarType(), IsScopedEnumerationType(), IsTemplateType(), IsTypedefType(), IsVectorType(), IsVoidType(), lldb_private::operator==(), DWARFASTParserClang::ParseChildMembers(), DWARFASTParserClang::ParseInheritance(), lldb_private::ClangUtil::RemoveFastQualifiers(), lldb_private::TypeSystemClang::RequireCompleteType(), lldb_private::TypeSystemClang::SetIsPacked(), lldb_private::TypeSystemClang::SetObjCSuperClass(), ShouldPrintAsOneLiner(), ShouldTreatScalarValueAsAddress(), lldb_private::formatters::VectorTypeSyntheticFrontEnd::Update(), and Verify().

◆ GetTypeSystem() [2/2]

template<typename TypeSystemType>
std::shared_ptr< TypeSystemType > lldb_private::CompilerType::GetTypeSystem ( ) const
inline

◆ GetTypeTag()

const char * CompilerType::GetTypeTag ( )

Definition at line 463 of file CompilerType.cpp.

References GetTypeClass().

◆ GetTypeTemplateArgument()

◆ GetValueAsScalar()

◆ GetVirtualBaseClassAtIndex()

CompilerType CompilerType::GetVirtualBaseClassAtIndex ( size_t idx,
uint32_t * bit_offset_ptr ) const

◆ IsAggregateType()

◆ IsAnonymousType()

bool CompilerType::IsAnonymousType ( ) const

◆ IsArrayOfScalarType()

bool CompilerType::IsArrayOfScalarType ( ) const

Definition at line 321 of file CompilerType.cpp.

References CompilerType(), IsArrayType(), and IsScalarType().

◆ IsArrayType()

◆ IsBasicType()

bool CompilerType::IsBasicType ( ) const

Definition at line 437 of file CompilerType.cpp.

References lldb::eBasicTypeInvalid, and GetBasicTypeEnumeration().

◆ IsBeingDefined()

bool CompilerType::IsBeingDefined ( ) const

◆ IsBlockPointerType()

◆ IsBoolean()

◆ IsCharType()

◆ IsCompleteType()

bool CompilerType::IsCompleteType ( ) const

◆ IsComplexType()

bool CompilerType::IsComplexType ( ) const

Definition at line 244 of file CompilerType.cpp.

References GetTypeClass().

Referenced by ABISysV_arm::GetReturnValueObjectImpl(), and IsRealFloatingPointType().

◆ IsConst()

bool CompilerType::IsConst ( ) const

Definition at line 107 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ IsContextuallyConvertibleToBool()

bool CompilerType::IsContextuallyConvertibleToBool ( ) const

This may only be defined in TypeSystemClang.

Definition at line 432 of file CompilerType.cpp.

References IsArrayType(), IsNullPtrType(), IsPointerType(), IsScalarType(), and IsUnscopedEnumerationType().

◆ IsDefined()

bool CompilerType::IsDefined ( ) const

Definition at line 261 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by DWARFASTParserClang::ParseTypeFromClangModule().

◆ IsEnumerationIntegerTypeSigned()

bool CompilerType::IsEnumerationIntegerTypeSigned ( ) const

◆ IsEnumerationType() [1/2]

bool CompilerType::IsEnumerationType ( ) const

This is used when you don't care about the signedness of the enum.

Definition at line 340 of file CompilerType.cpp.

References IsEnumerationType().

Referenced by IsEnumerationType(), IsIntegerOrEnumerationType(), and IsUnscopedEnumerationType().

◆ IsEnumerationType() [2/2]

◆ IsFloatingPointType()

bool CompilerType::IsFloatingPointType ( ) const

Returns true for floating point types (including complex floats).

Definition at line 249 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by ABISysV_arm::GetReturnValueObjectImpl(), and IsRealFloatingPointType().

◆ IsForcefullyCompleted()

bool CompilerType::IsForcefullyCompleted ( ) const

Definition at line 100 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb::SBType::IsTypeComplete().

◆ IsFunctionPointerType()

bool CompilerType::IsFunctionPointerType ( ) const

◆ IsFunctionType()

bool CompilerType::IsFunctionType ( ) const

Definition at line 135 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ IsHomogeneousAggregate()

uint32_t CompilerType::IsHomogeneousAggregate ( CompilerType * base_type_ptr) const

◆ IsInteger()

◆ IsIntegerOrEnumerationType()

bool CompilerType::IsIntegerOrEnumerationType ( bool & is_signed) const

◆ IsIntegerOrUnscopedEnumerationType()

bool CompilerType::IsIntegerOrUnscopedEnumerationType ( ) const

Definition at line 349 of file CompilerType.cpp.

References IsInteger(), and IsUnscopedEnumerationType().

◆ IsIntegerType()

◆ IsMeaninglessWithoutDynamicResolution()

bool CompilerType::IsMeaninglessWithoutDynamicResolution ( ) const

Definition at line 1006 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::FormatManager::GetPossibleMatches().

◆ IsMemberFunctionPointerType()

bool CompilerType::IsMemberFunctionPointerType ( ) const

Definition at line 173 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ IsNullPtrType()

◆ IsPointerOrReferenceType()

◆ IsPointerToScalarType()

bool CompilerType::IsPointerToScalarType ( ) const

Definition at line 314 of file CompilerType.cpp.

References GetPointeeType(), IsPointerType(), IsScalarType(), and IsValid().

◆ IsPointerToVoid()

bool CompilerType::IsPointerToVoid ( ) const

◆ IsPointerType()

bool CompilerType::IsPointerType ( CompilerType * pointee_type = nullptr) const

Definition at line 206 of file CompilerType.cpp.

References Clear(), CompilerType(), GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ValueObject::CastBaseToDerivedType(), lldb_private::ValueObject::CastDerivedToBaseType(), lldb_private::ValueObject::CastToBasicType(), lldb_private::ValueObjectConstResultImpl::CreateChildAtIndex(), lldb_private::ValueObjectConstResultImpl::CreateSyntheticArrayMember(), FlattenAggregateType(), FlattenAggregateType(), ABIMacOSX_i386::GetArgumentValues(), ABISysV_i386::GetArgumentValues(), ABISysV_ppc64::GetArgumentValues(), ABISysV_ppc::GetArgumentValues(), ABISysV_s390x::GetArgumentValues(), ABISysV_x86_64::GetArgumentValues(), ABIWindows_x86_64::GetArgumentValues(), lldb_private::ValueObject::GetExpressionPath(), lldb_private::AppleObjCRuntime::GetObjectDescription(), lldb_private::FormatManager::GetPossibleMatches(), ABIMacOSX_arm::GetReturnValueObjectImpl(), ABIMacOSX_i386::GetReturnValueObjectImpl(), ABISysV_arm::GetReturnValueObjectImpl(), ABISysV_mips64::GetReturnValueObjectImpl(), ABISysV_mips::GetReturnValueObjectImpl(), ABISysV_ppc::GetReturnValueObjectImpl(), ABISysV_x86_64::GetReturnValueObjectImpl(), ABIWindows_x86_64::GetReturnValueObjectImpl(), lldb_private::ValueObject::GetValueAsBool(), IsContextuallyConvertibleToBool(), IsPointerToScalarType(), IsPointerToVoid(), lldb_private::ValueObject::IsPointerType(), ABIMacOSX_arm::SetReturnValueObject(), ABIMacOSX_i386::SetReturnValueObject(), ABISysV_arc::SetReturnValueObject(), ABISysV_arm::SetReturnValueObject(), ABISysV_loongarch::SetReturnValueObject(), ABISysV_mips::SetReturnValueObject(), ABISysV_ppc64::SetReturnValueObject(), ABISysV_ppc::SetReturnValueObject(), ABISysV_riscv::SetReturnValueObject(), ABISysV_s390x::SetReturnValueObject(), ABISysV_x86_64::SetReturnValueObject(), ABIWindows_x86_64::SetReturnValueObject(), lldb_private::ValueObject::SetValueFromInteger(), lldb_private::ValueObject::SetValueFromInteger(), lldb_private::dil::Interpreter::VerifyArithmeticCast(), lldb_private::dil::Interpreter::VerifyCastType(), lldb_private::dil::Interpreter::Visit(), lldb_private::dil::Interpreter::Visit(), lldb_private::dil::Interpreter::Visit(), and lldb_private::FunctionCaller::WriteFunctionArguments().

◆ IsPolymorphicClass()

bool CompilerType::IsPolymorphicClass ( ) const

Definition at line 268 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ItaniumABIRuntime::TypeHasVTable().

◆ IsPossibleDynamicType()

◆ IsPromotableIntegerType()

bool CompilerType::IsPromotableIntegerType ( ) const

Definition at line 376 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::TypeSystemClang::DoIntegralPromotion().

◆ IsRealFloatingPointType()

◆ IsRecordType()

bool CompilerType::IsRecordType ( ) const

Definition at line 391 of file CompilerType.cpp.

References GetCanonicalType(), GetTypeClass(), and IsValid().

◆ IsReferenceType()

◆ IsRuntimeGeneratedType()

bool CompilerType::IsRuntimeGeneratedType ( ) const

Definition at line 79 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

◆ IsScalarOrUnscopedEnumerationType()

bool CompilerType::IsScalarOrUnscopedEnumerationType ( ) const

Definition at line 372 of file CompilerType.cpp.

References IsScalarType(), and IsUnscopedEnumerationType().

◆ IsScalarType()

◆ IsScopedEnumerationType()

bool CompilerType::IsScopedEnumerationType ( ) const

Definition at line 48 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by IsUnscopedEnumerationType().

◆ IsSigned()

◆ IsTemplateType()

bool CompilerType::IsTemplateType ( ) const

Definition at line 293 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::Type::IsTemplateType().

◆ IsTypedefType()

◆ IsUnscopedEnumerationType()

◆ IsValid()

bool lldb_private::CompilerType::IsValid ( ) const
inline

Definition at line 120 of file CompilerType.h.

Referenced by AddConstModifier(), lldb_private::ClangExpressionDeclMap::AddContextClassType(), lldb_private::TypeSystemClang::AddFieldToRecordType(), lldb_private::NameSearchContext::AddFunDecl(), lldb_private::TypeSystemClang::AddMethodToCXXRecordType(), lldb_private::TypeSystemClang::AddMethodToObjCObjectType(), lldb_private::TypeSystemClang::AddObjCClassProperty(), AddPtrAuthModifier(), AddRestrictModifier(), lldb_private::NameSearchContext::AddVarDecl(), lldb_private::TypeSystemClang::AddVariableToRecordType(), AddVolatileModifier(), lldb_private::ValueObjectVariable::CalculateNumChildren(), lldb_private::ValueObject::CanProvideValue(), lldb_private::ValueObject::CastBaseToDerivedType(), lldb_private::formatters::CMTimeSummaryProvider(), lldb_private::TypeSystemClang::CreateArrayType(), PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::TypeSystemClang::CreateMemberPointerType(), lldb_private::npdb::PdbAstBuilderClang::CreateRecordType(), lldb_private::ValueObjectSynthetic::CreateSynthFilter(), CreateTypedef(), CommandObjectMemoryRead::DoExecute(), ProcessFreeBSDKernelCore::DoUpdateThreadList(), dump(), DumpTypeDescription(), DumpTypeDescription(), DumpTypeValue(), lldb_private::AppleObjCDeclVendor::FinishDecl(), ForEachEnumerator(), lldb_private::TypeFormatImpl_EnumType::FormatObject(), GetArrayElementType(), GetArrayType(), GetAtomicType(), GetBasicTypeEnumeration(), GetBasicTypeFromAST(), GetBitSize(), GetCanonicalType(), GetChildCompilerTypeAtIndex(), lldb_private::ObjCLanguageRuntime::GetClassDescriptor(), GetCompleteType(), GetDereferencedType(), lldb::SBType::GetDirectBaseClassAtIndex(), GetDirectBaseClassAtIndex(), GetDirectNestedTypeWithName(), GetDisplayTypeName(), GetEncoding(), GetEnumerationIntegerType(), lldb::SBType::GetEnumMembers(), lldb::SBType::GetFieldAtIndex(), GetFieldAtIndex(), GetFormat(), GetFullyUnqualifiedType(), GetFunctionArgumentAtIndex(), GetFunctionArgumentCount(), GetFunctionArgumentTypeAtIndex(), lldb::SBType::GetFunctionReturnType(), GetFunctionReturnType(), GetIndexOfChildMemberWithName(), GetIndexOfChildWithName(), GetIntegralTemplateArgument(), GetLValueReferenceType(), GetMangledTypeName(), GetMemberFunctionAtIndex(), GetMinimumLanguage(), GetNonReferenceType(), GetNumberOfFunctionArguments(), GetNumChildren(), GetNumDirectBaseClasses(), GetNumFields(), GetNumMemberFunctions(), GetNumTemplateArguments(), GetNumVirtualBaseClasses(), GetPointeeType(), GetPointerType(), lldb_private::FormatManager::GetPossibleMatches(), GetPtrAuthAddressDiversity(), GetPtrAuthDiscriminator(), GetPtrAuthKey(), lldb_private::ABI::GetReturnValueObject(), GetRValueReferenceType(), lldb_private::Thread::GetSiginfoValue(), GetStaticFieldWithName(), GetTemplateArgumentKind(), lldb::SBType::GetTemplateArgumentType(), lldb::SBTypeNameSpecifier::GetType(), GetTypeBitAlign(), GetTypeClass(), GetTypedefedType(), GetTypeForFormatters(), GetTypeInfo(), GetTypeName(), GetTypeQualifiers(), GetTypeTemplateArgument(), lldb_private::Value::GetValueAsData(), GetValueAsScalar(), lldb_private::Value::GetValueDefaultFormat(), lldb::SBType::GetVirtualBaseClassAtIndex(), GetVirtualBaseClassAtIndex(), IsAggregateType(), IsAnonymousType(), IsArrayType(), IsBeingDefined(), IsBlockPointerType(), IsCharType(), IsCompleteType(), IsConst(), lldb_private::TypeSystemClang::IsCStringType(), IsDefined(), IsEnumerationIntegerTypeSigned(), IsEnumerationType(), IsFloatingPointType(), IsForcefullyCompleted(), IsFunctionPointerType(), IsFunctionType(), IsHomogeneousAggregate(), IsIntegerType(), IsMeaninglessWithoutDynamicResolution(), IsMemberFunctionPointerType(), IsPointerOrReferenceType(), IsPointerToScalarType(), IsPointerToVoid(), IsPointerType(), IsPolymorphicClass(), IsPossibleDynamicType(), IsPromotableIntegerType(), IsRecordType(), IsReferenceType(), IsRuntimeGeneratedType(), IsScalarType(), IsScopedEnumerationType(), IsTemplateType(), IsTypedefType(), IsVectorType(), IsVoidType(), lldb_private::formatters::LibcxxStdRangesRefViewSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdSpanSyntheticFrontEndCreator(), lldb_private::ThreadPlanAssemblyTracer::Log(), lldb_private::dil::DILParser::ParseTypeId(), PrivateAutoComplete(), lldb_private::Type::ResolveCompilerType(), lldb_private::dil::ResolveTypeByName(), lldb_private::Value::ResolveValue(), lldb_private::TypeSystemClang::SetObjCSuperClass(), ShouldPrintAsOneLiner(), lldb_private::FormatManager::ShouldPrintAsOneLiner(), ShouldTreatScalarValueAsAddress(), lldb_private::TypeNameSpecifierImpl::TypeNameSpecifierImpl(), lldb_private::formatters::MsvcStlVectorBoolSyntheticFrontEnd::Update(), lldb_private::ValueObjectVariable::UpdateValue(), Verify(), and lldb_private::Watchpoint::Watchpoint().

◆ IsVariadicFunctionType()

bool lldb_private::CompilerType::IsVariadicFunctionType ( ) const

References CompilerType().

◆ IsVectorType()

◆ IsVirtualBase()

bool CompilerType::IsVirtualBase ( CompilerType target_base,
CompilerType * virtual_base,
bool carry_virtual = false ) const

Checks whether target_base is a virtual base of type (direct or indirect).

If it is, stores the first virtual base type on the path from type to target_type. Parameter "virtual_base" is where the first virtual base type gets stored. Parameter "carry_virtual" is used to denote that we're in a recursive check of virtual base classes and we have already seen a virtual base class (so should only check direct base classes). Note: This may only be defined in TypeSystemClang.

Definition at line 400 of file CompilerType.cpp.

References CompareTypes(), CompilerType(), GetDirectBaseClassAtIndex(), GetNumDirectBaseClasses(), GetNumVirtualBaseClasses(), and GetVirtualBaseClassAtIndex().

◆ IsVoidType()

◆ operator bool()

lldb_private::CompilerType::operator bool ( ) const
inlineexplicit

Tests.

Definition at line 116 of file CompilerType.h.

References m_type, and m_type_system.

◆ operator<()

bool lldb_private::CompilerType::operator< ( const CompilerType & rhs) const
inline

Definition at line 105 of file CompilerType.h.

References CompilerType(), m_type, and m_type_system.

◆ operator=()

const CompilerType & lldb_private::CompilerType::operator= ( const CompilerType & rhs)
inline

Operators.

Definition at line 99 of file CompilerType.h.

References CompilerType(), m_type, and m_type_system.

Referenced by lldb_private::TaggedASTType< 0 >::operator=().

◆ SetCompilerType() [1/2]

◆ SetCompilerType() [2/2]

void CompilerType::SetCompilerType ( CompilerType::TypeSystemSPWrapper type_system,
lldb::opaque_compiler_type_t type )

◆ ShouldPrintAsOneLiner()

LazyBool CompilerType::ShouldPrintAsOneLiner ( ValueObject * valobj) const

◆ ShouldTreatScalarValueAsAddress()

bool CompilerType::ShouldTreatScalarValueAsAddress ( ) const

Definition at line 237 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by lldb_private::ValueObjectChild::UpdateValue().

◆ TypeDescription()

◆ Verify()

bool CompilerType::Verify ( ) const
private

If the type is valid, ask the TypeSystem to verify the integrity of the type to catch CompilerTypes that mix and match invalid TypeSystem/Opaque type pairs.

Definition at line 1192 of file CompilerType.cpp.

References GetTypeSystem(), IsValid(), and m_type.

Referenced by CompilerType(), and CompilerType().

Member Data Documentation

◆ m_type

lldb::opaque_compiler_type_t lldb_private::CompilerType::m_type = nullptr
private

Definition at line 554 of file CompilerType.h.

Referenced by AddConstModifier(), AddPtrAuthModifier(), AddRestrictModifier(), AddVolatileModifier(), Clear(), CompilerType(), CompilerType(), CompilerType(), CreateTypedef(), dump(), DumpTypeDescription(), DumpTypeDescription(), DumpTypeValue(), ForEachEnumerator(), GetArrayElementType(), GetArrayType(), GetAtomicType(), GetBasicTypeEnumeration(), GetBitSize(), GetCanonicalType(), GetChildCompilerTypeAtIndex(), GetCompleteType(), GetDereferencedType(), GetDirectBaseClassAtIndex(), GetDirectNestedTypeWithName(), GetDisplayTypeName(), GetEncoding(), GetEnumerationIntegerType(), GetFieldAtIndex(), GetFormat(), GetFullyUnqualifiedType(), GetFunctionArgumentAtIndex(), GetFunctionArgumentCount(), GetFunctionArgumentTypeAtIndex(), GetFunctionReturnType(), GetIndexOfChildMemberWithName(), GetIndexOfChildWithName(), GetIntegralTemplateArgument(), GetLValueReferenceType(), GetMangledTypeName(), GetMemberFunctionAtIndex(), GetMinimumLanguage(), GetNonReferenceType(), GetNumberOfFunctionArguments(), GetNumChildren(), GetNumDirectBaseClasses(), GetNumFields(), GetNumMemberFunctions(), GetNumTemplateArguments(), GetNumVirtualBaseClasses(), GetOpaqueQualType(), GetPointeeType(), GetPointerType(), GetPtrAuthAddressDiversity(), GetPtrAuthDiscriminator(), GetPtrAuthKey(), GetRValueReferenceType(), GetStaticFieldWithName(), GetTemplateArgumentKind(), GetTypeBitAlign(), GetTypeClass(), GetTypedefedType(), GetTypeForFormatters(), GetTypeInfo(), GetTypeName(), GetTypeQualifiers(), GetTypeTemplateArgument(), GetVirtualBaseClassAtIndex(), IsAggregateType(), IsAnonymousType(), IsArrayType(), IsBeingDefined(), IsBlockPointerType(), IsCharType(), IsCompleteType(), IsConst(), IsDefined(), IsEnumerationType(), IsFloatingPointType(), IsForcefullyCompleted(), IsFunctionPointerType(), IsFunctionType(), IsHomogeneousAggregate(), IsIntegerType(), IsMeaninglessWithoutDynamicResolution(), IsMemberFunctionPointerType(), IsPointerOrReferenceType(), IsPointerType(), IsPolymorphicClass(), IsPossibleDynamicType(), IsPromotableIntegerType(), IsReferenceType(), IsRuntimeGeneratedType(), IsScalarType(), IsScopedEnumerationType(), IsTemplateType(), IsTypedefType(), IsVectorType(), IsVoidType(), operator bool(), operator<(), operator=(), SetCompilerType(), SetCompilerType(), ShouldPrintAsOneLiner(), ShouldTreatScalarValueAsAddress(), and Verify().

◆ m_type_system

lldb::TypeSystemWP lldb_private::CompilerType::m_type_system
private

The documentation for this class was generated from the following files: