LLDB mainline
lldb_private::ObjCLanguageRuntime::ClassDescriptor Class Referenceabstract

#include <ObjCLanguageRuntime.h>

Inheritance diagram for lldb_private::ObjCLanguageRuntime::ClassDescriptor:
[legend]

Classes

struct  iVarDescriptor

Public Member Functions

 ClassDescriptor ()
virtual ~ClassDescriptor ()=default
virtual ConstString GetClassName ()=0
virtual ClassDescriptorSP GetSuperclass ()=0
virtual ClassDescriptorSP GetMetaclass () const =0
virtual bool IsKVO ()
virtual bool IsCFType ()
virtual lldb::LanguageType GetImplementationLanguage () const
 Determine whether this class is implemented in Swift.
virtual bool IsValid ()=0
virtual uint64_t GetInstanceSize ()=0
virtual bool CheckPointer (lldb::addr_t value, uint32_t ptr_size) const
virtual ObjCISA GetISA ()=0
virtual bool Describe (std::function< void(ObjCISA)> const &superclass_func, std::function< bool(const char *, const char *)> const &instance_method_func, std::function< bool(const char *, const char *)> const &class_method_func, std::function< bool(const char *, const char *, lldb::addr_t, uint64_t)> const &ivar_func) const
lldb::TypeSP GetType ()
void SetType (const lldb::TypeSP &type_sp)
virtual size_t GetNumIVars ()
virtual iVarDescriptor GetIVarAtIndex (size_t idx)
virtual bool GetTaggedPointerInfo (uint64_t *info_bits=nullptr, uint64_t *value_bits=nullptr, uint64_t *payload=nullptr)=0
 There are two routines in the ObjC runtime that tagged pointer clients can call to get the value from their tagged pointer, one that retrieves it as an unsigned value and one a signed value.
virtual bool GetTaggedPointerInfoSigned (uint64_t *info_bits=nullptr, int64_t *value_bits=nullptr, uint64_t *payload=nullptr)=0

Protected Member Functions

bool IsPointerValid (lldb::addr_t value, uint32_t ptr_size, bool allow_NULLs=false, bool allow_tagged=false, bool check_version_specific=false) const

Private Attributes

LazyBool m_is_kvo = eLazyBoolCalculate
LazyBool m_is_cf = eLazyBoolCalculate
lldb::TypeWP m_type_wp

Detailed Description

Definition at line 54 of file ObjCLanguageRuntime.h.

Constructor & Destructor Documentation

◆ ClassDescriptor()

lldb_private::ObjCLanguageRuntime::ClassDescriptor::ClassDescriptor ( )
inline

Definition at line 56 of file ObjCLanguageRuntime.h.

References m_type_wp.

◆ ~ClassDescriptor()

virtual lldb_private::ObjCLanguageRuntime::ClassDescriptor::~ClassDescriptor ( )
virtualdefault

Member Function Documentation

◆ CheckPointer()

virtual bool lldb_private::ObjCLanguageRuntime::ClassDescriptor::CheckPointer ( lldb::addr_t value,
uint32_t ptr_size ) const
inlinevirtual

Definition at line 114 of file ObjCLanguageRuntime.h.

Referenced by IsPointerValid().

◆ Describe()

virtual bool lldb_private::ObjCLanguageRuntime::ClassDescriptor::Describe ( std::function< void(ObjCISA)> const & superclass_func,
std::function< bool(const char *, const char *)> const & instance_method_func,
std::function< bool(const char *, const char *)> const & class_method_func,
std::function< bool(const char *, const char *, lldb::addr_t, uint64_t)> const & ivar_func ) const
inlinevirtual

Definition at line 122 of file ObjCLanguageRuntime.h.

◆ GetClassName()

virtual ConstString lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetClassName ( )
pure virtual

◆ GetImplementationLanguage()

virtual lldb::LanguageType lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetImplementationLanguage ( ) const
inlinevirtual

Determine whether this class is implemented in Swift.

Reimplemented in lldb_private::ClassDescriptorV2.

Definition at line 91 of file ObjCLanguageRuntime.h.

References lldb::eLanguageTypeObjC.

◆ GetInstanceSize()

virtual uint64_t lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetInstanceSize ( )
pure virtual

◆ GetISA()

virtual ObjCISA lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetISA ( )
pure virtual

◆ GetIVarAtIndex()

virtual iVarDescriptor lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetIVarAtIndex ( size_t idx)
inlinevirtual

Reimplemented in lldb_private::ClassDescriptorV2.

Definition at line 145 of file ObjCLanguageRuntime.h.

◆ GetMetaclass()

virtual ClassDescriptorSP lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetMetaclass ( ) const
pure virtual

◆ GetNumIVars()

virtual size_t lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetNumIVars ( )
inlinevirtual

Reimplemented in lldb_private::ClassDescriptorV2.

Definition at line 143 of file ObjCLanguageRuntime.h.

◆ GetSuperclass()

virtual ClassDescriptorSP lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetSuperclass ( )
pure virtual

◆ GetTaggedPointerInfo()

virtual bool lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetTaggedPointerInfo ( uint64_t * info_bits = nullptr,
uint64_t * value_bits = nullptr,
uint64_t * payload = nullptr )
pure virtual

There are two routines in the ObjC runtime that tagged pointer clients can call to get the value from their tagged pointer, one that retrieves it as an unsigned value and one a signed value.

These two GetTaggedPointerInfo methods mirror those two ObjC runtime calls.

Implemented in lldb_private::AppleObjCRuntimeV1::ClassDescriptorV1, lldb_private::ClassDescriptorV2, and lldb_private::ClassDescriptorV2Tagged.

◆ GetTaggedPointerInfoSigned()

virtual bool lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetTaggedPointerInfoSigned ( uint64_t * info_bits = nullptr,
int64_t * value_bits = nullptr,
uint64_t * payload = nullptr )
pure virtual

◆ GetType()

lldb::TypeSP lldb_private::ObjCLanguageRuntime::ClassDescriptor::GetType ( )
inline

Definition at line 132 of file ObjCLanguageRuntime.h.

References m_type_wp.

◆ IsCFType()

virtual bool lldb_private::ObjCLanguageRuntime::ClassDescriptor::IsCFType ( )
inlinevirtual

◆ IsKVO()

virtual bool lldb_private::ObjCLanguageRuntime::ClassDescriptor::IsKVO ( )
inlinevirtual

◆ IsPointerValid()

bool ObjCLanguageRuntime::ClassDescriptor::IsPointerValid ( lldb::addr_t value,
uint32_t ptr_size,
bool allow_NULLs = false,
bool allow_tagged = false,
bool check_version_specific = false ) const
protected

◆ IsValid()

virtual bool lldb_private::ObjCLanguageRuntime::ClassDescriptor::IsValid ( )
pure virtual

◆ SetType()

void lldb_private::ObjCLanguageRuntime::ClassDescriptor::SetType ( const lldb::TypeSP & type_sp)
inline

Definition at line 134 of file ObjCLanguageRuntime.h.

References m_type_wp.

Member Data Documentation

◆ m_is_cf

LazyBool lldb_private::ObjCLanguageRuntime::ClassDescriptor::m_is_cf = eLazyBoolCalculate
private

Definition at line 156 of file ObjCLanguageRuntime.h.

Referenced by IsCFType().

◆ m_is_kvo

LazyBool lldb_private::ObjCLanguageRuntime::ClassDescriptor::m_is_kvo = eLazyBoolCalculate
private

Definition at line 155 of file ObjCLanguageRuntime.h.

Referenced by IsKVO().

◆ m_type_wp

lldb::TypeWP lldb_private::ObjCLanguageRuntime::ClassDescriptor::m_type_wp
private

Definition at line 157 of file ObjCLanguageRuntime.h.

Referenced by ClassDescriptor(), GetType(), and SetType().


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