LLDB mainline
lldb_private::TypeSystem Class Referenceabstract

Interface for representing a type system. More...

#include <TypeSystem.h>

Inheritance diagram for lldb_private::TypeSystem:
[legend]

Public Member Functions

 TypeSystem ()
 ~TypeSystem () override
virtual bool isA (const void *ClassID) const =0
virtual void Finalize ()
 Free up any resources associated with this TypeSystem.
virtual plugin::dwarf::DWARFASTParserGetDWARFParser ()
virtual PDBASTParserGetPDBParser ()
virtual npdb::PdbAstBuilderGetNativePDBParser ()
virtual SymbolFileGetSymbolFile () const
virtual void SetSymbolFile (SymbolFile *sym_file)
virtual ConstString DeclGetName (void *opaque_decl)=0
virtual ConstString DeclGetMangledName (void *opaque_decl)
virtual CompilerDeclContext DeclGetDeclContext (void *opaque_decl)
virtual CompilerType DeclGetFunctionReturnType (void *opaque_decl)
virtual size_t DeclGetFunctionNumArguments (void *opaque_decl)
virtual CompilerType DeclGetFunctionArgumentType (void *opaque_decl, size_t arg_idx)
virtual std::vector< lldb_private::CompilerContextDeclGetCompilerContext (void *opaque_decl)
virtual Scalar DeclGetConstantValue (void *opaque_decl)
virtual CompilerType GetTypeForDecl (void *opaque_decl)=0
virtual std::vector< CompilerDeclDeclContextFindDeclByName (void *opaque_decl_ctx, ConstString name, const bool ignore_imported_decls)
virtual ConstString DeclContextGetName (void *opaque_decl_ctx)=0
virtual ConstString DeclContextGetScopeQualifiedName (void *opaque_decl_ctx)=0
virtual bool DeclContextIsClassMethod (void *opaque_decl_ctx)=0
virtual bool DeclContextIsContainedInLookup (void *opaque_decl_ctx, void *other_opaque_decl_ctx)=0
virtual lldb::LanguageType DeclContextGetLanguage (void *opaque_decl_ctx)=0
virtual CompilerDeclContext GetCompilerDeclContextForType (const CompilerType &type)
 Returns the direct parent context of specified type.
virtual std::vector< lldb_private::CompilerContextDeclContextGetCompilerContext (void *opaque_decl_ctx)
virtual bool Verify (lldb::opaque_compiler_type_t type)=0
 Verify the integrity of the type to catch CompilerTypes that mix and match invalid TypeSystem/Opaque type pairs.
virtual bool IsArrayType (lldb::opaque_compiler_type_t type, CompilerType *element_type, uint64_t *size, bool *is_incomplete)=0
virtual bool IsAggregateType (lldb::opaque_compiler_type_t type)=0
virtual bool IsAnonymousType (lldb::opaque_compiler_type_t type)
virtual bool IsCharType (lldb::opaque_compiler_type_t type)=0
virtual bool IsCompleteType (lldb::opaque_compiler_type_t type)=0
virtual bool IsDefined (lldb::opaque_compiler_type_t type)=0
virtual bool IsFloatingPointType (lldb::opaque_compiler_type_t type, uint32_t &count, bool &is_complex)=0
virtual bool IsFunctionType (lldb::opaque_compiler_type_t type)=0
virtual size_t GetNumberOfFunctionArguments (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetFunctionArgumentAtIndex (lldb::opaque_compiler_type_t type, const size_t index)=0
virtual bool IsFunctionPointerType (lldb::opaque_compiler_type_t type)=0
virtual bool IsMemberFunctionPointerType (lldb::opaque_compiler_type_t type)=0
virtual bool IsBlockPointerType (lldb::opaque_compiler_type_t type, CompilerType *function_pointer_type_ptr)=0
virtual bool IsIntegerType (lldb::opaque_compiler_type_t type, bool &is_signed)=0
virtual bool IsEnumerationType (lldb::opaque_compiler_type_t type, bool &is_signed)
virtual bool IsScopedEnumerationType (lldb::opaque_compiler_type_t type)=0
virtual bool IsPossibleDynamicType (lldb::opaque_compiler_type_t type, CompilerType *target_type, bool check_cplusplus, bool check_objc)=0
virtual bool IsPointerType (lldb::opaque_compiler_type_t type, CompilerType *pointee_type)=0
virtual bool IsScalarType (lldb::opaque_compiler_type_t type)=0
virtual bool IsVoidType (lldb::opaque_compiler_type_t type)=0
virtual bool CanPassInRegisters (const CompilerType &type)=0
virtual bool SupportsLanguage (lldb::LanguageType language)=0
virtual bool GetCompleteType (lldb::opaque_compiler_type_t type)=0
virtual bool IsForcefullyCompleted (lldb::opaque_compiler_type_t type)
virtual uint32_t GetPointerByteSize ()=0
virtual unsigned GetPtrAuthKey (lldb::opaque_compiler_type_t type)=0
virtual unsigned GetPtrAuthDiscriminator (lldb::opaque_compiler_type_t type)=0
virtual bool GetPtrAuthAddressDiversity (lldb::opaque_compiler_type_t type)=0
virtual ConstString GetTypeName (lldb::opaque_compiler_type_t type, bool BaseOnly)=0
virtual ConstString GetDisplayTypeName (lldb::opaque_compiler_type_t type)=0
virtual ConstString GetMangledTypeName (lldb::opaque_compiler_type_t type)
 Defaults to GetTypeName(type).
virtual uint32_t GetTypeInfo (lldb::opaque_compiler_type_t type, CompilerType *pointee_or_element_compiler_type)=0
virtual lldb::LanguageType GetMinimumLanguage (lldb::opaque_compiler_type_t type)=0
virtual lldb::TypeClass GetTypeClass (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetArrayElementType (lldb::opaque_compiler_type_t type, ExecutionContextScope *exe_scope)=0
virtual CompilerType GetArrayType (lldb::opaque_compiler_type_t type, uint64_t size)
virtual CompilerType GetCanonicalType (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetEnumerationIntegerType (lldb::opaque_compiler_type_t type)=0
virtual int GetFunctionArgumentCount (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetFunctionArgumentTypeAtIndex (lldb::opaque_compiler_type_t type, size_t idx)=0
virtual CompilerType GetFunctionReturnType (lldb::opaque_compiler_type_t type)=0
virtual size_t GetNumMemberFunctions (lldb::opaque_compiler_type_t type)=0
virtual TypeMemberFunctionImpl GetMemberFunctionAtIndex (lldb::opaque_compiler_type_t type, size_t idx)=0
virtual CompilerType GetPointeeType (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetPointerType (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetLValueReferenceType (lldb::opaque_compiler_type_t type)
virtual CompilerType GetRValueReferenceType (lldb::opaque_compiler_type_t type)
virtual CompilerType GetAtomicType (lldb::opaque_compiler_type_t type)
virtual CompilerType AddConstModifier (lldb::opaque_compiler_type_t type)
virtual CompilerType AddVolatileModifier (lldb::opaque_compiler_type_t type)
virtual CompilerType AddRestrictModifier (lldb::opaque_compiler_type_t type)
virtual CompilerType AddPtrAuthModifier (lldb::opaque_compiler_type_t type, uint32_t payload)
virtual CompilerType CreateTypedef (lldb::opaque_compiler_type_t type, const char *name, const CompilerDeclContext &decl_ctx, uint32_t opaque_payload)
virtual const llvm::fltSemantics & GetFloatTypeSemantics (size_t byte_size, lldb::Format format)=0
virtual llvm::Expected< uint64_t > GetBitSize (lldb::opaque_compiler_type_t type, ExecutionContextScope *exe_scope)=0
virtual lldb::Encoding GetEncoding (lldb::opaque_compiler_type_t type, uint64_t &count)=0
virtual lldb::Format GetFormat (lldb::opaque_compiler_type_t type)=0
virtual llvm::Expected< uint32_t > GetNumChildren (lldb::opaque_compiler_type_t type, bool omit_empty_base_classes, const ExecutionContext *exe_ctx)=0
virtual CompilerType GetBuiltinTypeByName (ConstString name)
virtual lldb::BasicType GetBasicTypeEnumeration (lldb::opaque_compiler_type_t type)=0
virtual void ForEachEnumerator (lldb::opaque_compiler_type_t type, std::function< bool(const CompilerType &integer_type, ConstString name, const llvm::APSInt &value)> const &callback)
virtual uint32_t GetNumFields (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetFieldAtIndex (lldb::opaque_compiler_type_t type, size_t idx, std::string &name, uint64_t *bit_offset_ptr, uint32_t *bitfield_bit_size_ptr, bool *is_bitfield_ptr)=0
virtual uint32_t GetNumDirectBaseClasses (lldb::opaque_compiler_type_t type)=0
virtual uint32_t GetNumVirtualBaseClasses (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetDirectBaseClassAtIndex (lldb::opaque_compiler_type_t type, size_t idx, uint32_t *bit_offset_ptr)=0
virtual CompilerType GetVirtualBaseClassAtIndex (lldb::opaque_compiler_type_t type, size_t idx, uint32_t *bit_offset_ptr)=0
virtual CompilerDecl GetStaticFieldWithName (lldb::opaque_compiler_type_t type, llvm::StringRef name)
virtual llvm::Expected< CompilerTypeGetDereferencedType (lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, std::string &deref_name, uint32_t &deref_byte_size, int32_t &deref_byte_offset, ValueObject *valobj, uint64_t &language_flags)=0
virtual llvm::Expected< CompilerTypeGetChildCompilerTypeAtIndex (lldb::opaque_compiler_type_t type, 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)=0
virtual llvm::Expected< uint32_t > GetIndexOfChildWithName (lldb::opaque_compiler_type_t type, llvm::StringRef name, bool omit_empty_base_classes)=0
virtual size_t GetIndexOfChildMemberWithName (lldb::opaque_compiler_type_t type, llvm::StringRef name, bool omit_empty_base_classes, std::vector< uint32_t > &child_indexes)=0
virtual CompilerType GetDirectNestedTypeWithName (lldb::opaque_compiler_type_t type, llvm::StringRef name)
virtual bool IsTemplateType (lldb::opaque_compiler_type_t type)
virtual size_t GetNumTemplateArguments (lldb::opaque_compiler_type_t type, bool expand_pack)
virtual lldb::TemplateArgumentKind GetTemplateArgumentKind (lldb::opaque_compiler_type_t type, size_t idx, bool expand_pack)
virtual CompilerType GetTypeTemplateArgument (lldb::opaque_compiler_type_t type, size_t idx, bool expand_pack)
virtual std::optional< CompilerType::IntegralTemplateArgumentGetIntegralTemplateArgument (lldb::opaque_compiler_type_t type, size_t idx, bool expand_pack)
virtual LLVM_DUMP_METHOD void dump (lldb::opaque_compiler_type_t type) const =0
 Convenience LLVM-style dump method for use in the debugger only.
virtual bool DumpTypeValue (lldb::opaque_compiler_type_t type, 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)=0
virtual void DumpTypeDescription (lldb::opaque_compiler_type_t type, lldb::DescriptionLevel level=lldb::eDescriptionLevelFull)=0
 Dump the type to stdout.
virtual void DumpTypeDescription (lldb::opaque_compiler_type_t type, Stream &s, lldb::DescriptionLevel level=lldb::eDescriptionLevelFull)=0
 Print a description of the type to a stream.
virtual void Dump (llvm::raw_ostream &output, llvm::StringRef filter, bool show_color)=0
 Dump a textual representation of the internal TypeSystem state to the given stream.
virtual bool IsRuntimeGeneratedType (lldb::opaque_compiler_type_t type)=0
 This is used by swift.
virtual bool IsPointerOrReferenceType (lldb::opaque_compiler_type_t type, CompilerType *pointee_type)=0
virtual unsigned GetTypeQualifiers (lldb::opaque_compiler_type_t type)=0
virtual std::optional< size_t > GetTypeBitAlign (lldb::opaque_compiler_type_t type, ExecutionContextScope *exe_scope)=0
virtual CompilerType GetBasicTypeFromAST (lldb::BasicType basic_type)=0
virtual CompilerType CreateGenericFunctionPrototype ()
virtual CompilerType GetBuiltinTypeForEncodingAndBitSize (lldb::Encoding encoding, size_t bit_size)=0
virtual bool IsBeingDefined (lldb::opaque_compiler_type_t type)=0
virtual bool IsConst (lldb::opaque_compiler_type_t type)=0
virtual uint32_t IsHomogeneousAggregate (lldb::opaque_compiler_type_t type, CompilerType *base_type_ptr)=0
virtual bool IsPolymorphicClass (lldb::opaque_compiler_type_t type)=0
virtual bool IsTypedefType (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetTypedefedType (lldb::opaque_compiler_type_t type)=0
virtual bool IsVectorType (lldb::opaque_compiler_type_t type, CompilerType *element_type, uint64_t *size)=0
virtual CompilerType GetFullyUnqualifiedType (lldb::opaque_compiler_type_t type)=0
virtual CompilerType GetNonReferenceType (lldb::opaque_compiler_type_t type)=0
virtual bool IsReferenceType (lldb::opaque_compiler_type_t type, CompilerType *pointee_type, bool *is_rvalue)=0
virtual bool ShouldTreatScalarValueAsAddress (lldb::opaque_compiler_type_t type)
virtual UserExpressionGetUserExpression (llvm::StringRef expr, llvm::StringRef prefix, SourceLanguage language, Expression::ResultType desired_type, const EvaluateExpressionOptions &options, ValueObject *ctx_obj)
virtual FunctionCallerGetFunctionCaller (const CompilerType &return_type, const Address &function_address, const ValueList &arg_value_list, const char *name)
virtual std::unique_ptr< UtilityFunctionCreateUtilityFunction (std::string text, std::string name)
virtual PersistentExpressionStateGetPersistentExpressionState ()
virtual CompilerType GetTypeForFormatters (void *type)
virtual LazyBool ShouldPrintAsOneLiner (void *type, ValueObject *valobj)
virtual bool IsMeaninglessWithoutDynamicResolution (void *type)
virtual std::optional< llvm::json::Value > ReportStatistics ()
bool GetHasForcefullyCompletedTypes () const
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
virtual llvm::StringRef GetPluginName ()=0
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Static Public Member Functions

static lldb::TypeSystemSP CreateInstance (lldb::LanguageType language, Module *module)
static lldb::TypeSystemSP CreateInstance (lldb::LanguageType language, Target *target)
static bool SupportsLanguageStatic (lldb::LanguageType language)

Protected Attributes

SymbolFilem_sym_file = nullptr
bool m_has_forcefully_completed_types = false
 Used for reporting statistics.

Detailed Description

Interface for representing a type system.

Implemented by language plugins to define the type system for a given language.

This interface extensively used opaque pointers to prevent that generic LLDB code has dependencies on language plugins. The type and semantics of these opaque pointers are defined by the TypeSystem implementation inside the respective language plugin. Opaque pointers from one TypeSystem instance should never be passed to a different TypeSystem instance (even when the language plugin for both TypeSystem instances is the same).

Most of the functions in this class should not be called directly but only called by their respective counterparts in CompilerType, CompilerDecl and CompilerDeclContext.

See also
lldb_private::CompilerType
lldb_private::CompilerDecl
lldb_private::CompilerDeclContext

Definition at line 69 of file TypeSystem.h.

Constructor & Destructor Documentation

◆ TypeSystem()

◆ ~TypeSystem()

TypeSystem::~TypeSystem ( )
overridedefault

Member Function Documentation

◆ AddConstModifier()

CompilerType TypeSystem::AddConstModifier ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 92 of file TypeSystem.cpp.

◆ AddPtrAuthModifier()

CompilerType TypeSystem::AddPtrAuthModifier ( lldb::opaque_compiler_type_t type,
uint32_t payload )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 96 of file TypeSystem.cpp.

◆ AddRestrictModifier()

CompilerType TypeSystem::AddRestrictModifier ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 107 of file TypeSystem.cpp.

◆ AddVolatileModifier()

CompilerType TypeSystem::AddVolatileModifier ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 102 of file TypeSystem.cpp.

◆ CanPassInRegisters()

virtual bool lldb_private::TypeSystem::CanPassInRegisters ( const CompilerType & type)
pure virtual

◆ CreateGenericFunctionPrototype()

virtual CompilerType lldb_private::TypeSystem::CreateGenericFunctionPrototype ( )
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 471 of file TypeSystem.h.

◆ CreateInstance() [1/2]

lldb::TypeSystemSP TypeSystem::CreateInstance ( lldb::LanguageType language,
Module * module )
static

◆ CreateInstance() [2/2]

lldb::TypeSystemSP TypeSystem::CreateInstance ( lldb::LanguageType language,
Target * target )
static

Definition at line 60 of file TypeSystem.cpp.

References CreateInstanceHelper().

◆ CreateTypedef()

CompilerType TypeSystem::CreateTypedef ( lldb::opaque_compiler_type_t type,
const char * name,
const CompilerDeclContext & decl_ctx,
uint32_t opaque_payload )
virtual
Parameters
opaque_payloadThe m_payload field of Type, which may carry TypeSystem-specific extra information.

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 111 of file TypeSystem.cpp.

◆ CreateUtilityFunction()

std::unique_ptr< UtilityFunction > TypeSystem::CreateUtilityFunction ( std::string text,
std::string name )
virtual

Reimplemented in lldb_private::ScratchTypeSystemClang.

Definition at line 200 of file TypeSystem.cpp.

◆ DeclContextFindDeclByName()

std::vector< CompilerDecl > TypeSystem::DeclContextFindDeclByName ( void * opaque_decl_ctx,
ConstString name,
const bool ignore_imported_decls )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 194 of file TypeSystem.cpp.

◆ DeclContextGetCompilerContext()

std::vector< lldb_private::CompilerContext > TypeSystem::DeclContextGetCompilerContext ( void * opaque_decl_ctx)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 189 of file TypeSystem.cpp.

◆ DeclContextGetLanguage()

virtual lldb::LanguageType lldb_private::TypeSystem::DeclContextGetLanguage ( void * opaque_decl_ctx)
pure virtual

◆ DeclContextGetName()

virtual ConstString lldb_private::TypeSystem::DeclContextGetName ( void * opaque_decl_ctx)
pure virtual

◆ DeclContextGetScopeQualifiedName()

virtual ConstString lldb_private::TypeSystem::DeclContextGetScopeQualifiedName ( void * opaque_decl_ctx)
pure virtual

◆ DeclContextIsClassMethod()

virtual bool lldb_private::TypeSystem::DeclContextIsClassMethod ( void * opaque_decl_ctx)
pure virtual

◆ DeclContextIsContainedInLookup()

virtual bool lldb_private::TypeSystem::DeclContextIsContainedInLookup ( void * opaque_decl_ctx,
void * other_opaque_decl_ctx )
pure virtual

◆ DeclGetCompilerContext()

std::vector< lldb_private::CompilerContext > TypeSystem::DeclGetCompilerContext ( void * opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 184 of file TypeSystem.cpp.

◆ DeclGetConstantValue()

virtual Scalar lldb_private::TypeSystem::DeclGetConstantValue ( void * opaque_decl)
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 115 of file TypeSystem.h.

◆ DeclGetDeclContext()

CompilerDeclContext TypeSystem::DeclGetDeclContext ( void * opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 168 of file TypeSystem.cpp.

◆ DeclGetFunctionArgumentType()

CompilerType TypeSystem::DeclGetFunctionArgumentType ( void * opaque_decl,
size_t arg_idx )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 178 of file TypeSystem.cpp.

◆ DeclGetFunctionNumArguments()

size_t TypeSystem::DeclGetFunctionNumArguments ( void * opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 176 of file TypeSystem.cpp.

◆ DeclGetFunctionReturnType()

CompilerType TypeSystem::DeclGetFunctionReturnType ( void * opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 172 of file TypeSystem.cpp.

◆ DeclGetMangledName()

ConstString TypeSystem::DeclGetMangledName ( void * opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 164 of file TypeSystem.cpp.

◆ DeclGetName()

virtual ConstString lldb_private::TypeSystem::DeclGetName ( void * opaque_decl)
pure virtual

◆ Dump()

virtual void lldb_private::TypeSystem::Dump ( llvm::raw_ostream & output,
llvm::StringRef filter,
bool show_color )
pure virtual

Dump a textual representation of the internal TypeSystem state to the given stream.

This should not modify the state of the TypeSystem if possible.

Parameters
[out]outputStream to dup the AST into.
[in]filterIf empty, dump whole AST. If non-empty, will only dump decls whose names contain filter.
[in]show_colorIf true, prints the AST color-highlighted.

Implemented in lldb_private::ScratchTypeSystemClang, and lldb_private::TypeSystemClang.

◆ dump()

virtual LLVM_DUMP_METHOD void lldb_private::TypeSystem::dump ( lldb::opaque_compiler_type_t type) const
pure virtual

Convenience LLVM-style dump method for use in the debugger only.

Implemented in lldb_private::TypeSystemClang.

◆ DumpTypeDescription() [1/2]

virtual void lldb_private::TypeSystem::DumpTypeDescription ( lldb::opaque_compiler_type_t type,
lldb::DescriptionLevel level = lldb::eDescriptionLevelFull )
pure virtual

Dump the type to stdout.

Implemented in lldb_private::TypeSystemClang.

References lldb::eDescriptionLevelFull.

◆ DumpTypeDescription() [2/2]

virtual void lldb_private::TypeSystem::DumpTypeDescription ( lldb::opaque_compiler_type_t type,
Stream & s,
lldb::DescriptionLevel level = lldb::eDescriptionLevelFull )
pure virtual

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.

Implemented in lldb_private::TypeSystemClang.

References lldb::eDescriptionLevelFull.

◆ DumpTypeValue()

virtual bool lldb_private::TypeSystem::DumpTypeValue ( lldb::opaque_compiler_type_t type,
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 )
pure virtual

◆ Finalize()

virtual void lldb_private::TypeSystem::Finalize ( )
inlinevirtual

Free up any resources associated with this TypeSystem.

Done before removing all the TypeSystems from the TypeSystemMap.

Reimplemented in lldb_private::ScratchTypeSystemClang, and lldb_private::TypeSystemClang.

Definition at line 87 of file TypeSystem.h.

◆ ForEachEnumerator()

virtual void lldb_private::TypeSystem::ForEachEnumerator ( lldb::opaque_compiler_type_t type,
std::function< bool(const CompilerType &integer_type, ConstString name, const llvm::APSInt &value)> const & callback )
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 335 of file TypeSystem.h.

◆ GetArrayElementType()

virtual CompilerType lldb_private::TypeSystem::GetArrayElementType ( lldb::opaque_compiler_type_t type,
ExecutionContextScope * exe_scope )
pure virtual

◆ GetArrayType()

CompilerType TypeSystem::GetArrayType ( lldb::opaque_compiler_type_t type,
uint64_t size )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 73 of file TypeSystem.cpp.

◆ GetAtomicType()

CompilerType TypeSystem::GetAtomicType ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 88 of file TypeSystem.cpp.

◆ GetBasicTypeEnumeration()

virtual lldb::BasicType lldb_private::TypeSystem::GetBasicTypeEnumeration ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetBasicTypeFromAST()

virtual CompilerType lldb_private::TypeSystem::GetBasicTypeFromAST ( lldb::BasicType basic_type)
pure virtual

◆ GetBitSize()

virtual llvm::Expected< uint64_t > lldb_private::TypeSystem::GetBitSize ( lldb::opaque_compiler_type_t type,
ExecutionContextScope * exe_scope )
pure virtual

◆ GetBuiltinTypeByName()

CompilerType TypeSystem::GetBuiltinTypeByName ( ConstString name)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 118 of file TypeSystem.cpp.

◆ GetBuiltinTypeForEncodingAndBitSize()

virtual CompilerType lldb_private::TypeSystem::GetBuiltinTypeForEncodingAndBitSize ( lldb::Encoding encoding,
size_t bit_size )
pure virtual

◆ GetCanonicalType()

virtual CompilerType lldb_private::TypeSystem::GetCanonicalType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetChildCompilerTypeAtIndex()

virtual llvm::Expected< CompilerType > lldb_private::TypeSystem::GetChildCompilerTypeAtIndex ( lldb::opaque_compiler_type_t type,
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 )
pure virtual

◆ GetCompilerDeclContextForType()

CompilerDeclContext TypeSystem::GetCompilerDeclContextForType ( const CompilerType & type)
virtual

Returns the direct parent context of specified type.

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 209 of file TypeSystem.cpp.

◆ GetCompleteType()

virtual bool lldb_private::TypeSystem::GetCompleteType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetDereferencedType()

virtual llvm::Expected< CompilerType > lldb_private::TypeSystem::GetDereferencedType ( lldb::opaque_compiler_type_t type,
ExecutionContext * exe_ctx,
std::string & deref_name,
uint32_t & deref_byte_size,
int32_t & deref_byte_offset,
ValueObject * valobj,
uint64_t & language_flags )
pure virtual

◆ GetDirectBaseClassAtIndex()

virtual CompilerType lldb_private::TypeSystem::GetDirectBaseClassAtIndex ( lldb::opaque_compiler_type_t type,
size_t idx,
uint32_t * bit_offset_ptr )
pure virtual

◆ GetDirectNestedTypeWithName()

virtual CompilerType lldb_private::TypeSystem::GetDirectNestedTypeWithName ( lldb::opaque_compiler_type_t type,
llvm::StringRef name )
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 395 of file TypeSystem.h.

◆ GetDisplayTypeName()

virtual ConstString lldb_private::TypeSystem::GetDisplayTypeName ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetDWARFParser()

virtual plugin::dwarf::DWARFASTParser * lldb_private::TypeSystem::GetDWARFParser ( )
inlinevirtual

◆ GetEncoding()

virtual lldb::Encoding lldb_private::TypeSystem::GetEncoding ( lldb::opaque_compiler_type_t type,
uint64_t & count )
pure virtual

◆ GetEnumerationIntegerType()

virtual CompilerType lldb_private::TypeSystem::GetEnumerationIntegerType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetFieldAtIndex()

virtual CompilerType lldb_private::TypeSystem::GetFieldAtIndex ( lldb::opaque_compiler_type_t type,
size_t idx,
std::string & name,
uint64_t * bit_offset_ptr,
uint32_t * bitfield_bit_size_ptr,
bool * is_bitfield_ptr )
pure virtual

◆ GetFloatTypeSemantics()

virtual const llvm::fltSemantics & lldb_private::TypeSystem::GetFloatTypeSemantics ( size_t byte_size,
lldb::Format format )
pure virtual

◆ GetFormat()

virtual lldb::Format lldb_private::TypeSystem::GetFormat ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetFullyUnqualifiedType()

virtual CompilerType lldb_private::TypeSystem::GetFullyUnqualifiedType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetFunctionArgumentAtIndex()

virtual CompilerType lldb_private::TypeSystem::GetFunctionArgumentAtIndex ( lldb::opaque_compiler_type_t type,
const size_t index )
pure virtual

◆ GetFunctionArgumentCount()

virtual int lldb_private::TypeSystem::GetFunctionArgumentCount ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetFunctionArgumentTypeAtIndex()

virtual CompilerType lldb_private::TypeSystem::GetFunctionArgumentTypeAtIndex ( lldb::opaque_compiler_type_t type,
size_t idx )
pure virtual

◆ GetFunctionCaller()

virtual FunctionCaller * lldb_private::TypeSystem::GetFunctionCaller ( const CompilerType & return_type,
const Address & function_address,
const ValueList & arg_value_list,
const char * name )
inlinevirtual

Reimplemented in lldb_private::ScratchTypeSystemClang.

Definition at line 517 of file TypeSystem.h.

◆ GetFunctionReturnType()

virtual CompilerType lldb_private::TypeSystem::GetFunctionReturnType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetHasForcefullyCompletedTypes()

bool lldb_private::TypeSystem::GetHasForcefullyCompletedTypes ( ) const
inline

Definition at line 551 of file TypeSystem.h.

References m_has_forcefully_completed_types.

◆ GetIndexOfChildMemberWithName()

virtual size_t lldb_private::TypeSystem::GetIndexOfChildMemberWithName ( lldb::opaque_compiler_type_t type,
llvm::StringRef name,
bool omit_empty_base_classes,
std::vector< uint32_t > & child_indexes )
pure virtual

◆ GetIndexOfChildWithName()

virtual llvm::Expected< uint32_t > lldb_private::TypeSystem::GetIndexOfChildWithName ( lldb::opaque_compiler_type_t type,
llvm::StringRef name,
bool omit_empty_base_classes )
pure virtual

◆ GetIntegralTemplateArgument()

std::optional< CompilerType::IntegralTemplateArgument > TypeSystem::GetIntegralTemplateArgument ( lldb::opaque_compiler_type_t type,
size_t idx,
bool expand_pack )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 147 of file TypeSystem.cpp.

◆ GetLValueReferenceType()

CompilerType TypeSystem::GetLValueReferenceType ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 79 of file TypeSystem.cpp.

◆ GetMangledTypeName()

ConstString TypeSystem::GetMangledTypeName ( lldb::opaque_compiler_type_t type)
virtual

Defaults to GetTypeName(type).

Override if your language desires specialized behavior.

Definition at line 160 of file TypeSystem.cpp.

References GetTypeName().

◆ GetMemberFunctionAtIndex()

virtual TypeMemberFunctionImpl lldb_private::TypeSystem::GetMemberFunctionAtIndex ( lldb::opaque_compiler_type_t type,
size_t idx )
pure virtual

◆ GetMinimumLanguage()

◆ GetNativePDBParser()

virtual npdb::PdbAstBuilder * lldb_private::TypeSystem::GetNativePDBParser ( )
inlinevirtual

◆ GetNonReferenceType()

virtual CompilerType lldb_private::TypeSystem::GetNonReferenceType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetNumberOfFunctionArguments()

virtual size_t lldb_private::TypeSystem::GetNumberOfFunctionArguments ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetNumChildren()

virtual llvm::Expected< uint32_t > lldb_private::TypeSystem::GetNumChildren ( lldb::opaque_compiler_type_t type,
bool omit_empty_base_classes,
const ExecutionContext * exe_ctx )
pure virtual

◆ GetNumDirectBaseClasses()

virtual uint32_t lldb_private::TypeSystem::GetNumDirectBaseClasses ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetNumFields()

virtual uint32_t lldb_private::TypeSystem::GetNumFields ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetNumMemberFunctions()

virtual size_t lldb_private::TypeSystem::GetNumMemberFunctions ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetNumTemplateArguments()

size_t TypeSystem::GetNumTemplateArguments ( lldb::opaque_compiler_type_t type,
bool expand_pack )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 130 of file TypeSystem.cpp.

◆ GetNumVirtualBaseClasses()

virtual uint32_t lldb_private::TypeSystem::GetNumVirtualBaseClasses ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetPDBParser()

virtual PDBASTParser * lldb_private::TypeSystem::GetPDBParser ( )
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 91 of file TypeSystem.h.

◆ GetPersistentExpressionState()

virtual PersistentExpressionState * lldb_private::TypeSystem::GetPersistentExpressionState ( )
inlinevirtual

Reimplemented in lldb_private::ScratchTypeSystemClang.

Definition at line 527 of file TypeSystem.h.

◆ GetPointeeType()

virtual CompilerType lldb_private::TypeSystem::GetPointeeType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetPointerByteSize()

virtual uint32_t lldb_private::TypeSystem::GetPointerByteSize ( )
pure virtual

◆ GetPointerType()

virtual CompilerType lldb_private::TypeSystem::GetPointerType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetPtrAuthAddressDiversity()

virtual bool lldb_private::TypeSystem::GetPtrAuthAddressDiversity ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetPtrAuthDiscriminator()

virtual unsigned lldb_private::TypeSystem::GetPtrAuthDiscriminator ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetPtrAuthKey()

virtual unsigned lldb_private::TypeSystem::GetPtrAuthKey ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetRValueReferenceType()

CompilerType TypeSystem::GetRValueReferenceType ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 84 of file TypeSystem.cpp.

◆ GetStaticFieldWithName()

virtual CompilerDecl lldb_private::TypeSystem::GetStaticFieldWithName ( lldb::opaque_compiler_type_t type,
llvm::StringRef name )
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 363 of file TypeSystem.h.

Referenced by lldb_private::CompilerType::GetStaticFieldWithName().

◆ GetSymbolFile()

◆ GetTemplateArgumentKind()

TemplateArgumentKind TypeSystem::GetTemplateArgumentKind ( lldb::opaque_compiler_type_t type,
size_t idx,
bool expand_pack )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 136 of file TypeSystem.cpp.

References lldb::eTemplateArgumentKindNull.

◆ GetTypeBitAlign()

virtual std::optional< size_t > lldb_private::TypeSystem::GetTypeBitAlign ( lldb::opaque_compiler_type_t type,
ExecutionContextScope * exe_scope )
pure virtual

◆ GetTypeClass()

virtual lldb::TypeClass lldb_private::TypeSystem::GetTypeClass ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetTypedefedType()

virtual CompilerType lldb_private::TypeSystem::GetTypedefedType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetTypeForDecl()

virtual CompilerType lldb_private::TypeSystem::GetTypeForDecl ( void * opaque_decl)
pure virtual

◆ GetTypeForFormatters()

CompilerType TypeSystem::GetTypeForFormatters ( void * type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 122 of file TypeSystem.cpp.

◆ GetTypeInfo()

virtual uint32_t lldb_private::TypeSystem::GetTypeInfo ( lldb::opaque_compiler_type_t type,
CompilerType * pointee_or_element_compiler_type )
pure virtual

◆ GetTypeName()

virtual ConstString lldb_private::TypeSystem::GetTypeName ( lldb::opaque_compiler_type_t type,
bool BaseOnly )
pure virtual

Implemented in lldb_private::TypeSystemClang.

Referenced by GetMangledTypeName().

◆ GetTypeQualifiers()

virtual unsigned lldb_private::TypeSystem::GetTypeQualifiers ( lldb::opaque_compiler_type_t type)
pure virtual

◆ GetTypeTemplateArgument()

CompilerType TypeSystem::GetTypeTemplateArgument ( lldb::opaque_compiler_type_t type,
size_t idx,
bool expand_pack )
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 141 of file TypeSystem.cpp.

◆ GetUserExpression()

virtual UserExpression * lldb_private::TypeSystem::GetUserExpression ( llvm::StringRef expr,
llvm::StringRef prefix,
SourceLanguage language,
Expression::ResultType desired_type,
const EvaluateExpressionOptions & options,
ValueObject * ctx_obj )
inlinevirtual

Reimplemented in lldb_private::ScratchTypeSystemClang.

Definition at line 510 of file TypeSystem.h.

◆ GetVirtualBaseClassAtIndex()

virtual CompilerType lldb_private::TypeSystem::GetVirtualBaseClassAtIndex ( lldb::opaque_compiler_type_t type,
size_t idx,
uint32_t * bit_offset_ptr )
pure virtual

◆ isA()

virtual bool lldb_private::TypeSystem::isA ( const void * ClassID) const
pure virtual

◆ IsAggregateType()

virtual bool lldb_private::TypeSystem::IsAggregateType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsAnonymousType()

bool TypeSystem::IsAnonymousType ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 69 of file TypeSystem.cpp.

◆ IsArrayType()

virtual bool lldb_private::TypeSystem::IsArrayType ( lldb::opaque_compiler_type_t type,
CompilerType * element_type,
uint64_t * size,
bool * is_incomplete )
pure virtual

◆ IsBeingDefined()

virtual bool lldb_private::TypeSystem::IsBeingDefined ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsBlockPointerType()

virtual bool lldb_private::TypeSystem::IsBlockPointerType ( lldb::opaque_compiler_type_t type,
CompilerType * function_pointer_type_ptr )
pure virtual

◆ IsCharType()

virtual bool lldb_private::TypeSystem::IsCharType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsCompleteType()

virtual bool lldb_private::TypeSystem::IsCompleteType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsConst()

virtual bool lldb_private::TypeSystem::IsConst ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsDefined()

virtual bool lldb_private::TypeSystem::IsDefined ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsEnumerationType()

virtual bool lldb_private::TypeSystem::IsEnumerationType ( lldb::opaque_compiler_type_t type,
bool & is_signed )
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 188 of file TypeSystem.h.

◆ IsFloatingPointType()

virtual bool lldb_private::TypeSystem::IsFloatingPointType ( lldb::opaque_compiler_type_t type,
uint32_t & count,
bool & is_complex )
pure virtual

◆ IsForcefullyCompleted()

virtual bool lldb_private::TypeSystem::IsForcefullyCompleted ( lldb::opaque_compiler_type_t type)
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 217 of file TypeSystem.h.

◆ IsFunctionPointerType()

virtual bool lldb_private::TypeSystem::IsFunctionPointerType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsFunctionType()

virtual bool lldb_private::TypeSystem::IsFunctionType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsHomogeneousAggregate()

virtual uint32_t lldb_private::TypeSystem::IsHomogeneousAggregate ( lldb::opaque_compiler_type_t type,
CompilerType * base_type_ptr )
pure virtual

◆ IsIntegerType()

virtual bool lldb_private::TypeSystem::IsIntegerType ( lldb::opaque_compiler_type_t type,
bool & is_signed )
pure virtual

◆ IsMeaninglessWithoutDynamicResolution()

bool TypeSystem::IsMeaninglessWithoutDynamicResolution ( void * type)
virtual

Definition at line 156 of file TypeSystem.cpp.

◆ IsMemberFunctionPointerType()

virtual bool lldb_private::TypeSystem::IsMemberFunctionPointerType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsPointerOrReferenceType()

virtual bool lldb_private::TypeSystem::IsPointerOrReferenceType ( lldb::opaque_compiler_type_t type,
CompilerType * pointee_type )
pure virtual

◆ IsPointerType()

virtual bool lldb_private::TypeSystem::IsPointerType ( lldb::opaque_compiler_type_t type,
CompilerType * pointee_type )
pure virtual

◆ IsPolymorphicClass()

virtual bool lldb_private::TypeSystem::IsPolymorphicClass ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsPossibleDynamicType()

virtual bool lldb_private::TypeSystem::IsPossibleDynamicType ( lldb::opaque_compiler_type_t type,
CompilerType * target_type,
bool check_cplusplus,
bool check_objc )
pure virtual

◆ IsReferenceType()

virtual bool lldb_private::TypeSystem::IsReferenceType ( lldb::opaque_compiler_type_t type,
CompilerType * pointee_type,
bool * is_rvalue )
pure virtual

◆ IsRuntimeGeneratedType()

virtual bool lldb_private::TypeSystem::IsRuntimeGeneratedType ( lldb::opaque_compiler_type_t type)
pure virtual

This is used by swift.

Implemented in lldb_private::TypeSystemClang.

◆ IsScalarType()

virtual bool lldb_private::TypeSystem::IsScalarType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsScopedEnumerationType()

virtual bool lldb_private::TypeSystem::IsScopedEnumerationType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsTemplateType()

bool TypeSystem::IsTemplateType ( lldb::opaque_compiler_type_t type)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 126 of file TypeSystem.cpp.

◆ IsTypedefType()

virtual bool lldb_private::TypeSystem::IsTypedefType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ IsVectorType()

virtual bool lldb_private::TypeSystem::IsVectorType ( lldb::opaque_compiler_type_t type,
CompilerType * element_type,
uint64_t * size )
pure virtual

◆ IsVoidType()

virtual bool lldb_private::TypeSystem::IsVoidType ( lldb::opaque_compiler_type_t type)
pure virtual

◆ ReportStatistics()

std::optional< llvm::json::Value > TypeSystem::ReportStatistics ( )
virtual

Definition at line 204 of file TypeSystem.cpp.

◆ SetSymbolFile()

virtual void lldb_private::TypeSystem::SetSymbolFile ( SymbolFile * sym_file)
inlinevirtual

Definition at line 96 of file TypeSystem.h.

References m_sym_file.

◆ ShouldPrintAsOneLiner()

LazyBool TypeSystem::ShouldPrintAsOneLiner ( void * type,
ValueObject * valobj )
virtual

Definition at line 152 of file TypeSystem.cpp.

References lldb_private::eLazyBoolCalculate.

◆ ShouldTreatScalarValueAsAddress()

virtual bool lldb_private::TypeSystem::ShouldTreatScalarValueAsAddress ( lldb::opaque_compiler_type_t type)
inlinevirtual

Definition at line 506 of file TypeSystem.h.

References IsPointerOrReferenceType().

◆ SupportsLanguage()

virtual bool lldb_private::TypeSystem::SupportsLanguage ( lldb::LanguageType language)
pure virtual

◆ SupportsLanguageStatic()

◆ Verify()

bool TypeSystem::Verify ( lldb::opaque_compiler_type_t type)
pure virtual

Verify the integrity of the type to catch CompilerTypes that mix and match invalid TypeSystem/Opaque type pairs.

Implemented in lldb_private::TypeSystemClang.

Definition at line 66 of file TypeSystem.cpp.

Member Data Documentation

◆ m_has_forcefully_completed_types

bool lldb_private::TypeSystem::m_has_forcefully_completed_types = false
protected

Used for reporting statistics.

Definition at line 557 of file TypeSystem.h.

Referenced by GetHasForcefullyCompletedTypes(), and lldb_private::TypeSystemClang::SetDeclIsForcefullyCompleted().

◆ m_sym_file

SymbolFile* lldb_private::TypeSystem::m_sym_file = nullptr
protected

Definition at line 555 of file TypeSystem.h.

Referenced by GetSymbolFile(), and SetSymbolFile().


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