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]
Collaboration diagram for lldb_private::TypeSystem:
Collaboration graph
[legend]

Public Member Functions

 ~TypeSystem () override
 
virtual bool isA (const void *ClassID) const =0
 
virtual void Finalize ()
 Free up any resources associated with this TypeSystem. More...
 
virtual 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 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, lldb::LanguageType *language_ptr, bool *is_instance_method_ptr, ConstString *language_object_name_ptr)=0
 
virtual bool DeclContextIsContainedInLookup (void *opaque_decl_ctx, void *other_opaque_decl_ctx)=0
 
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. More...
 
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 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 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, const char *name, bool omit_empty_base_classes)=0
 
virtual size_t GetIndexOfChildMemberWithName (lldb::opaque_compiler_type_t type, const char *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. More...
 
virtual void DumpValue (lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, 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, bool show_types, bool show_summary, bool verbose, uint32_t depth)=0
 
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. More...
 
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. More...
 
virtual void Dump (llvm::raw_ostream &output)=0
 Dump a textual representation of the internal TypeSystem state to the given stream. More...
 
virtual bool IsRuntimeGeneratedType (lldb::opaque_compiler_type_t type)=0
 
virtual void DumpSummary (lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, Stream *s, const DataExtractor &data, lldb::offset_t data_offset, size_t data_byte_size)=0
 
virtual bool IsPointerOrReferenceType (lldb::opaque_compiler_type_t type, CompilerType *pointee_type)=0
 
virtual unsigned GetTypeQualifiers (lldb::opaque_compiler_type_t type)=0
 
virtual bool IsCStringType (lldb::opaque_compiler_type_t type, uint32_t &length)=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 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. More...
 

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

Constructor & Destructor Documentation

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

◆ AddRestrictModifier()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 101 of file TypeSystem.cpp.

◆ AddVolatileModifier()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 96 of file TypeSystem.cpp.

◆ CanPassInRegisters()

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

◆ 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 59 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 105 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 180 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 174 of file TypeSystem.cpp.

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

◆ 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,
lldb::LanguageType language_ptr,
bool *  is_instance_method_ptr,
ConstString language_object_name_ptr 
)
pure virtual

◆ DeclContextIsContainedInLookup()

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

◆ DeclGetDeclContext()

CompilerDeclContext TypeSystem::DeclGetDeclContext ( void *  opaque_decl)
virtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 158 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 168 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 166 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 162 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 154 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::ScratchTypeSystemClang, and lldb_private::TypeSystemClang.

◆ DumpSummary()

virtual void lldb_private::TypeSystem::DumpSummary ( lldb::opaque_compiler_type_t  type,
ExecutionContext exe_ctx,
Stream s,
const DataExtractor data,
lldb::offset_t  data_offset,
size_t  data_byte_size 
)
pure virtual

◆ 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

◆ DumpValue()

virtual void lldb_private::TypeSystem::DumpValue ( lldb::opaque_compiler_type_t  type,
ExecutionContext exe_ctx,
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,
bool  show_types,
bool  show_summary,
bool  verbose,
uint32_t  depth 
)
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 93 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 307 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 72 of file TypeSystem.cpp.

◆ GetAtomicType()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 87 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 112 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

◆ 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 DWARFASTParser* lldb_private::TypeSystem::GetDWARFParser ( )
inlinevirtual

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 95 of file TypeSystem.h.

Referenced by SymbolFileDWARF::ParseDeclsForContext().

◆ 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 488 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 522 of file TypeSystem.h.

References m_has_forcefully_completed_types.

◆ GetIndexOfChildMemberWithName()

virtual size_t lldb_private::TypeSystem::GetIndexOfChildMemberWithName ( lldb::opaque_compiler_type_t  type,
const char *  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,
const char *  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 141 of file TypeSystem.cpp.

◆ GetLValueReferenceType()

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

Reimplemented in lldb_private::TypeSystemClang.

Definition at line 78 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 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 124 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 96 of file TypeSystem.h.

◆ GetPersistentExpressionState()

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

Reimplemented in lldb_private::ScratchTypeSystemClang.

Definition at line 498 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 83 of file TypeSystem.cpp.

◆ GetSymbolFile()

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

Definition at line 99 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 130 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 116 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 135 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 480 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 68 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

◆ IsCStringType()

virtual bool lldb_private::TypeSystem::IsCStringType ( lldb::opaque_compiler_type_t  type,
uint32_t length 
)
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 178 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 206 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 150 of file TypeSystem.cpp.

◆ 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

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

◆ SetSymbolFile()

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

Definition at line 101 of file TypeSystem.h.

References m_sym_file.

◆ ShouldPrintAsOneLiner()

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

Definition at line 146 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 475 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 65 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 528 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 526 of file TypeSystem.h.

Referenced by GetSymbolFile(), and SetSymbolFile().


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