LLDB  mainline
Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
lldb_private::ClassDescriptorV2 Class Reference

#include <AppleObjCClassDescriptorV2.h>

Inheritance diagram for lldb_private::ClassDescriptorV2:
Inheritance graph
[legend]
Collaboration diagram for lldb_private::ClassDescriptorV2:
Collaboration graph
[legend]

Classes

struct  class_ro_t
 
struct  class_rw_t
 
struct  ivar_list_t
 
struct  ivar_t
 
class  iVarsStorage
 
struct  method_list_t
 
struct  method_t
 
struct  objc_class_t
 

Public Member Functions

 ~ClassDescriptorV2 () override=default
 
ConstString GetClassName () override
 
ObjCLanguageRuntime::ClassDescriptorSP GetSuperclass () override
 
ObjCLanguageRuntime::ClassDescriptorSP GetMetaclass () const override
 
bool IsValid () override
 
bool GetTaggedPointerInfo (uint64_t *info_bits=nullptr, uint64_t *value_bits=nullptr, uint64_t *payload=nullptr) override
 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. More...
 
bool GetTaggedPointerInfoSigned (uint64_t *info_bits=nullptr, int64_t *value_bits=nullptr, uint64_t *payload=nullptr) override
 
uint64_t GetInstanceSize () override
 
ObjCLanguageRuntime::ObjCISA GetISA () override
 
bool Describe (std::function< void(ObjCLanguageRuntime::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 override
 
size_t GetNumIVars () override
 
iVarDescriptor GetIVarAtIndex (size_t idx) override
 
- Public Member Functions inherited from lldb_private::ObjCLanguageRuntime::ClassDescriptor
 ClassDescriptor ()
 
virtual ~ClassDescriptor ()=default
 
virtual bool IsKVO ()
 
virtual bool IsCFType ()
 
virtual bool CheckPointer (lldb::addr_t value, uint32_t ptr_size) const
 
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)
 

Protected Member Functions

void GetIVarInformation ()
 
- Protected Member Functions inherited from lldb_private::ObjCLanguageRuntime::ClassDescriptor
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 Member Functions

 ClassDescriptorV2 (AppleObjCRuntimeV2 &runtime, ObjCLanguageRuntime::ObjCISA isa, const char *name)
 
bool Read_objc_class (Process *process, std::unique_ptr< objc_class_t > &objc_class) const
 
bool Read_class_row (Process *process, const objc_class_t &objc_class, std::unique_ptr< class_ro_t > &class_ro, std::unique_ptr< class_rw_t > &class_rw) const
 

Private Attributes

AppleObjCRuntimeV2m_runtime
 
lldb::addr_t m_objc_class_ptr
 
ConstString m_name
 
iVarsStorage m_ivars_storage
 

Static Private Attributes

static const uint32_t RW_REALIZED = (1 << 31)
 

Friends

class lldb_private::AppleObjCRuntimeV2
 

Detailed Description

Definition at line 21 of file AppleObjCClassDescriptorV2.h.

Constructor & Destructor Documentation

◆ ~ClassDescriptorV2()

lldb_private::ClassDescriptorV2::~ClassDescriptorV2 ( )
overridedefault

◆ ClassDescriptorV2()

lldb_private::ClassDescriptorV2::ClassDescriptorV2 ( AppleObjCRuntimeV2 runtime,
ObjCLanguageRuntime::ObjCISA  isa,
const char *  name 
)
inlineprivate

Definition at line 223 of file AppleObjCClassDescriptorV2.h.

Member Function Documentation

◆ Describe()

bool ClassDescriptorV2::Describe ( std::function< void(ObjCLanguageRuntime::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
override

◆ GetClassName()

ConstString ClassDescriptorV2::GetClassName ( )
overridevirtual

◆ GetInstanceSize()

uint64_t ClassDescriptorV2::GetInstanceSize ( )
overridevirtual

◆ GetISA()

ObjCLanguageRuntime::ObjCISA lldb_private::ClassDescriptorV2::GetISA ( )
inlineoverridevirtual

◆ GetIVarAtIndex()

iVarDescriptor lldb_private::ClassDescriptorV2::GetIVarAtIndex ( size_t  idx)
inlineoverridevirtual

◆ GetIVarInformation()

void ClassDescriptorV2::GetIVarInformation ( )
protected

◆ GetMetaclass()

ObjCLanguageRuntime::ClassDescriptorSP ClassDescriptorV2::GetMetaclass ( ) const
overridevirtual

◆ GetNumIVars()

size_t lldb_private::ClassDescriptorV2::GetNumIVars ( )
inlineoverridevirtual

◆ GetSuperclass()

ObjCLanguageRuntime::ClassDescriptorSP ClassDescriptorV2::GetSuperclass ( )
overridevirtual

◆ GetTaggedPointerInfo()

bool lldb_private::ClassDescriptorV2::GetTaggedPointerInfo ( uint64_t *  info_bits = nullptr,
uint64_t *  value_bits = nullptr,
uint64_t *  payload = nullptr 
)
inlineoverridevirtual

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.

Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.

Definition at line 38 of file AppleObjCClassDescriptorV2.h.

◆ GetTaggedPointerInfoSigned()

bool lldb_private::ClassDescriptorV2::GetTaggedPointerInfoSigned ( uint64_t *  info_bits = nullptr,
int64_t *  value_bits = nullptr,
uint64_t *  payload = nullptr 
)
inlineoverridevirtual

◆ IsValid()

bool lldb_private::ClassDescriptorV2::IsValid ( )
inlineoverridevirtual

◆ Read_class_row()

bool ClassDescriptorV2::Read_class_row ( Process process,
const objc_class_t objc_class,
std::unique_ptr< class_ro_t > &  class_ro,
std::unique_ptr< class_rw_t > &  class_rw 
) const
private

◆ Read_objc_class()

bool ClassDescriptorV2::Read_objc_class ( Process process,
std::unique_ptr< objc_class_t > &  objc_class 
) const
private

Definition at line 17 of file AppleObjCClassDescriptorV2.cpp.

Friends And Related Function Documentation

◆ lldb_private::AppleObjCRuntimeV2

friend class lldb_private::AppleObjCRuntimeV2
friend

Definition at line 23 of file AppleObjCClassDescriptorV2.h.

Member Data Documentation

◆ m_ivars_storage

iVarsStorage lldb_private::ClassDescriptorV2::m_ivars_storage
private

Definition at line 241 of file AppleObjCClassDescriptorV2.h.

Referenced by GetIVarAtIndex(), GetIVarInformation(), and GetNumIVars().

◆ m_name

ConstString lldb_private::ClassDescriptorV2::m_name
private

Definition at line 240 of file AppleObjCClassDescriptorV2.h.

◆ m_objc_class_ptr

lldb::addr_t lldb_private::ClassDescriptorV2::m_objc_class_ptr
private

Definition at line 237 of file AppleObjCClassDescriptorV2.h.

Referenced by GetISA().

◆ m_runtime

AppleObjCRuntimeV2& lldb_private::ClassDescriptorV2::m_runtime
private

Definition at line 236 of file AppleObjCClassDescriptorV2.h.

Referenced by GetIVarInformation().

◆ RW_REALIZED

const uint32_t lldb_private::ClassDescriptorV2::RW_REALIZED = (1 << 31)
staticprivate

Definition at line 77 of file AppleObjCClassDescriptorV2.h.


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