LLDB mainline
Public Member Functions | Private Attributes | List of all members
EntityValueObject Class Reference

Represents an Entity constructed from a VariableSP. More...

Inheritance diagram for EntityValueObject:
Inheritance graph
[legend]

Public Member Functions

 EntityValueObject (ConstString name, ValueObjectProviderTy provider)
 
ConstString GetName () const override
 
lldb::ValueObjectSP SetupValueObject (ExecutionContextScope *scope) override
 Creates and returns ValueObject tied to this variable and prepares Entity for materialization.
 
std::optional< uint64_t > GetByteSize (ExecutionContextScope *scope) const override
 Returns size in bytes of the type associated with this variable.
 
bool LocationExpressionIsValid () const override
 Returns 'true' if the location expression associated with this variable is valid.
 
std::optional< size_t > GetTypeBitAlign (ExecutionContextScope *scope) const override
 Returns alignment of the type associated with this variable in bits.
 
- Public Member Functions inherited from EntityVariableBase
virtual ~EntityVariableBase ()=default
 
 EntityVariableBase ()
 
void Materialize (lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb::addr_t process_address, Status &err) override
 
void Dematerialize (lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb::addr_t process_address, lldb::addr_t frame_top, lldb::addr_t frame_bottom, Status &err) override
 
void DumpToLog (IRMemoryMap &map, lldb::addr_t process_address, Log *log) override
 
void Wipe (IRMemoryMap &map, lldb::addr_t process_address) override
 
- Public Member Functions inherited from lldb_private::Materializer::Entity
 Entity ()=default
 
virtual ~Entity ()=default
 
virtual void Materialize (lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb::addr_t process_address, Status &err)=0
 
virtual void Dematerialize (lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb::addr_t process_address, lldb::addr_t frame_top, lldb::addr_t frame_bottom, Status &err)=0
 
virtual void DumpToLog (IRMemoryMap &map, lldb::addr_t process_address, Log *log)=0
 
virtual void Wipe (IRMemoryMap &map, lldb::addr_t process_address)=0
 
uint32_t GetAlignment ()
 
uint32_t GetSize ()
 
uint32_t GetOffset ()
 
void SetOffset (uint32_t offset)
 

Private Attributes

ConstString m_name
 
lldb::ValueObjectSP m_valobj_sp
 
ValueObjectProviderTy m_valobj_provider
 

Additional Inherited Members

- Protected Attributes inherited from EntityVariableBase
bool m_is_reference = false
 
lldb::addr_t m_temporary_allocation = LLDB_INVALID_ADDRESS
 
size_t m_temporary_allocation_size = 0
 
lldb::DataBufferSP m_original_data
 
- Protected Attributes inherited from lldb_private::Materializer::Entity
uint32_t m_alignment = 1
 
uint32_t m_size = 0
 
uint32_t m_offset = 0
 

Detailed Description

Represents an Entity constructed from a VariableSP.

This class is used for materialization of variables for which the user does not have a VariableSP available (e.g., when materializing ivars).

Definition at line 843 of file Materializer.cpp.

Constructor & Destructor Documentation

◆ EntityValueObject()

EntityValueObject::EntityValueObject ( ConstString  name,
ValueObjectProviderTy  provider 
)
inline

Definition at line 845 of file Materializer.cpp.

Member Function Documentation

◆ GetByteSize()

std::optional< uint64_t > EntityValueObject::GetByteSize ( ExecutionContextScope scope) const
inlineoverridevirtual

Returns size in bytes of the type associated with this variable.

Returns
On success, returns byte size of the type associated with this variable. Returns std::nullopt otherwise.

Implements EntityVariableBase.

Definition at line 863 of file Materializer.cpp.

◆ GetName()

ConstString EntityValueObject::GetName ( ) const
inlineoverridevirtual

Implements EntityVariableBase.

Definition at line 850 of file Materializer.cpp.

◆ GetTypeBitAlign()

std::optional< size_t > EntityValueObject::GetTypeBitAlign ( ExecutionContextScope scope) const
inlineoverridevirtual

Returns alignment of the type associated with this variable in bits.

Returns
On success, returns alignment in bits for the type associated with this variable. Returns std::nullopt otherwise.

Implements EntityVariableBase.

Definition at line 878 of file Materializer.cpp.

◆ LocationExpressionIsValid()

bool EntityValueObject::LocationExpressionIsValid ( ) const
inlineoverridevirtual

Returns 'true' if the location expression associated with this variable is valid.

Implements EntityVariableBase.

Definition at line 870 of file Materializer.cpp.

◆ SetupValueObject()

lldb::ValueObjectSP EntityValueObject::SetupValueObject ( ExecutionContextScope scope)
inlineoverridevirtual

Creates and returns ValueObject tied to this variable and prepares Entity for materialization.

Called each time the Materializer (de)materializes a variable. We re-create the ValueObject based on the current ExecutionContextScope since clients such as conditional breakpoints may materialize the same EntityVariable multiple times with different frames.

Each subsequent use of the EntityVariableBase interface will query the newly created ValueObject until this function is called again.

Implements EntityVariableBase.

Definition at line 852 of file Materializer.cpp.

References lldb_private::ExecutionContextScope::CalculateStackFrame(), and GetName().

Member Data Documentation

◆ m_name

ConstString EntityValueObject::m_name
private

Definition at line 886 of file Materializer.cpp.

◆ m_valobj_provider

ValueObjectProviderTy EntityValueObject::m_valobj_provider
private

Definition at line 888 of file Materializer.cpp.

◆ m_valobj_sp

lldb::ValueObjectSP EntityValueObject::m_valobj_sp
private

Definition at line 887 of file Materializer.cpp.


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