|
| 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::DWARFASTParser * | GetDWARFParser () |
|
virtual PDBASTParser * | GetPDBParser () |
|
virtual npdb::PdbAstBuilder * | GetNativePDBParser () |
|
virtual SymbolFile * | GetSymbolFile () 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::CompilerContext > | DeclGetCompilerContext (void *opaque_decl) |
|
virtual Scalar | DeclGetConstantValue (void *opaque_decl) |
|
virtual CompilerType | GetTypeForDecl (void *opaque_decl)=0 |
|
virtual std::vector< CompilerDecl > | DeclContextFindDeclByName (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::CompilerContext > | DeclContextGetCompilerContext (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)=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 CompilerDecl | GetStaticFieldWithName (lldb::opaque_compiler_type_t type, llvm::StringRef name) |
|
virtual llvm::Expected< 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 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::IntegralTemplateArgument > | GetIntegralTemplateArgument (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 UserExpression * | GetUserExpression (llvm::StringRef expr, llvm::StringRef prefix, SourceLanguage language, Expression::ResultType desired_type, const EvaluateExpressionOptions &options, ValueObject *ctx_obj) |
|
virtual FunctionCaller * | GetFunctionCaller (const CompilerType &return_type, const Address &function_address, const ValueList &arg_value_list, const char *name) |
|
virtual std::unique_ptr< UtilityFunction > | CreateUtilityFunction (std::string text, std::string name) |
|
virtual PersistentExpressionState * | GetPersistentExpressionState () |
|
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 |
|
| PluginInterface ()=default |
|
virtual | ~PluginInterface ()=default |
|
virtual llvm::StringRef | GetPluginName ()=0 |
|
| PluginInterface (const PluginInterface &)=delete |
|
PluginInterface & | operator= (const PluginInterface &)=delete |
|
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.