LLDB mainline
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
lldb_private::TypeSystem Class Referenceabstract

Interface for representing a type system. More...

#include <TypeSystem.h>

Inheritance diagram for lldb_private::TypeSystem:
Inheritance graph
[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 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 ConstString GetTypeName (lldb::opaque_compiler_type_t type, bool BaseOnly)=0
 
virtual ConstString GetDisplayTypeName (lldb::opaque_compiler_type_t type)=0
 
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 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)=0
 
virtual std::optional< 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 CompilerType 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)=0
 
virtual 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 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)=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, lldb::LanguageType 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)
 

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 66 of file TypeSystem.h.

Constructor & Destructor Documentation

◆ TypeSystem()

TypeSystem::TypeSystem ( )
default

◆ ~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.

◆ AddRestrictModifier()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 102 of file TypeSystem.cpp.

◆ AddVolatileModifier()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 97 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 431 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 106 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 191 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 185 of file TypeSystem.cpp.

Referenced by lldb_private::CompilerDeclContext::FindDeclByName().

◆ DeclContextGetCompilerContext()

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

◆ 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 175 of file TypeSystem.cpp.

Referenced by lldb_private::CompilerDecl::GetCompilerContext().

◆ DeclGetDeclContext()

CompilerDeclContext TypeSystem::DeclGetDeclContext ( void *  opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 159 of file TypeSystem.cpp.

Referenced by lldb_private::CompilerDecl::GetDeclContext().

◆ DeclGetFunctionArgumentType()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 169 of file TypeSystem.cpp.

Referenced by lldb_private::CompilerDecl::GetFunctionArgumentType().

◆ DeclGetFunctionNumArguments()

size_t TypeSystem::DeclGetFunctionNumArguments ( void *  opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 167 of file TypeSystem.cpp.

Referenced by lldb_private::CompilerDecl::GetNumFunctionArguments().

◆ DeclGetFunctionReturnType()

CompilerType TypeSystem::DeclGetFunctionReturnType ( void *  opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 163 of file TypeSystem.cpp.

Referenced by lldb_private::CompilerDecl::GetFunctionReturnType().

◆ DeclGetMangledName()

ConstString TypeSystem::DeclGetMangledName ( void *  opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 155 of file TypeSystem.cpp.

Referenced by lldb_private::CompilerDecl::GetMangledName().

◆ DeclGetName()

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

◆ 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.

◆ Dump()

virtual void lldb_private::TypeSystem::Dump ( llvm::raw_ostream &  output)
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.

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

◆ 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.

◆ 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.

◆ 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::TypeSystemClang, and lldb_private::ScratchTypeSystemClang.

Definition at line 84 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 313 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 std::optional< 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 113 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 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 200 of file TypeSystem.cpp.

◆ GetCompleteType()

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

◆ 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)
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 479 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 513 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 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 142 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.

◆ GetMemberFunctionAtIndex()

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

◆ GetMinimumLanguage()

virtual lldb::LanguageType lldb_private::TypeSystem::GetMinimumLanguage ( lldb::opaque_compiler_type_t  type)
pure virtual

◆ 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 125 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 88 of file TypeSystem.h.

◆ GetPersistentExpressionState()

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

Reimplemented in lldb_private::ScratchTypeSystemClang.

Definition at line 489 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

◆ GetRValueReferenceType()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 84 of file TypeSystem.cpp.

◆ GetSymbolFile()

virtual SymbolFile * lldb_private::TypeSystem::GetSymbolFile ( ) const
inlinevirtual

Definition at line 91 of file TypeSystem.h.

References m_sym_file.

Referenced by lldb_private::TypeSystemClang::CompleteObjCInterfaceDecl(), lldb_private::npdb::PdbAstBuilder::CompleteTagDecl(), lldb_private::TypeSystemClang::CompleteTagDecl(), PDBASTParser::CompleteTypeFromPDB(), lldb_private::TypeSystemClang::CountDeclLevels(), lldb_private::npdb::PdbAstBuilder::CreateArrayType(), lldb_private::npdb::PdbAstBuilder::CreateDeclInfoForType(), lldb_private::npdb::PdbAstBuilder::CreateDeclInfoForUndecoratedName(), lldb_private::npdb::PdbAstBuilder::CreateFunctionDecl(), lldb_private::npdb::PdbAstBuilder::CreateFunctionDeclFromId(), lldb_private::npdb::PdbAstBuilder::CreateFunctionParameters(), lldb_private::npdb::PdbAstBuilder::CreateFunctionType(), PDBASTParser::CreateLLDBTypeFromPDBType(), lldb_private::npdb::PdbAstBuilder::CreateType(), lldb_private::TypeSystemClang::DeclContextFindDeclByName(), lldb_private::TypeSystemClang::DumpFromSymbolFile(), PDBASTParser::GetDeclContextContainingSymbol(), PDBASTParser::GetDeclContextForSymbol(), PDBASTParser::GetDeclForSymbol(), lldb_private::TypeSystemClang::GetNumChildren(), lldb_private::npdb::PdbAstBuilder::GetOrCreateFunctionDecl(), lldb_private::npdb::PdbAstBuilder::GetOrCreateInlinedFunctionDecl(), lldb_private::npdb::PdbAstBuilder::GetOrCreateSymbolForId(), lldb_private::npdb::PdbAstBuilder::GetOrCreateType(), lldb_private::npdb::PdbAstBuilder::GetOrCreateTypedefDecl(), lldb_private::npdb::PdbAstBuilder::GetOrCreateVariableDecl(), lldb_private::npdb::PdbAstBuilder::GetParentDeclContext(), lldb_private::npdb::PdbAstBuilder::ParseAllFunctionsAndNonLocalVars(), lldb_private::npdb::PdbAstBuilder::ParseAllTypes(), lldb_private::npdb::PdbAstBuilder::ParseBlockChildren(), PDBASTParser::ParseDeclsForDeclContext(), and lldb_private::npdb::PdbAstBuilder::ParseNamespace().

◆ 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 131 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 117 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

◆ 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 136 of file TypeSystem.cpp.

◆ GetUserExpression()

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

Reimplemented in lldb_private::ScratchTypeSystemClang.

Definition at line 471 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 183 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 211 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 151 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 121 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 195 of file TypeSystem.cpp.

◆ SetSymbolFile()

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

Definition at line 93 of file TypeSystem.h.

References m_sym_file.

◆ ShouldPrintAsOneLiner()

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

Definition at line 147 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 466 of file TypeSystem.h.

References IsPointerOrReferenceType().

◆ SupportsLanguage()

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

◆ 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 519 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 517 of file TypeSystem.h.

Referenced by GetSymbolFile(), and SetSymbolFile().


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