LLDB  mainline
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Friends | List of all members
lldb_private::ValueObject Class Referenceabstract

ValueObject: More...

#include <ValueObject.h>

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

Classes

struct  Bitflags
 
class  ChildrenManager
 
class  EvaluationPoint
 
struct  GetValueForExpressionPathOptions
 

Public Types

enum  GetExpressionPathFormat { eGetExpressionPathFormatDereferencePointers = 1, eGetExpressionPathFormatHonorPointers }
 
enum  ValueObjectRepresentationStyle {
  eValueObjectRepresentationStyleValue = 1, eValueObjectRepresentationStyleSummary, eValueObjectRepresentationStyleLanguageSpecific, eValueObjectRepresentationStyleLocation,
  eValueObjectRepresentationStyleChildrenCount, eValueObjectRepresentationStyleType, eValueObjectRepresentationStyleName, eValueObjectRepresentationStyleExpressionPath
}
 
enum  ExpressionPathScanEndReason {
  eExpressionPathScanEndReasonEndOfString = 1, eExpressionPathScanEndReasonNoSuchChild, eExpressionPathScanEndReasonNoSuchSyntheticChild, eExpressionPathScanEndReasonEmptyRangeNotAllowed,
  eExpressionPathScanEndReasonDotInsteadOfArrow, eExpressionPathScanEndReasonArrowInsteadOfDot, eExpressionPathScanEndReasonFragileIVarNotAllowed, eExpressionPathScanEndReasonRangeOperatorNotAllowed,
  eExpressionPathScanEndReasonRangeOperatorInvalid, eExpressionPathScanEndReasonArrayRangeOperatorMet, eExpressionPathScanEndReasonBitfieldRangeOperatorMet, eExpressionPathScanEndReasonUnexpectedSymbol,
  eExpressionPathScanEndReasonTakingAddressFailed, eExpressionPathScanEndReasonDereferencingFailed, eExpressionPathScanEndReasonRangeOperatorExpanded, eExpressionPathScanEndReasonSyntheticValueMissing,
  eExpressionPathScanEndReasonUnknown = 0xFFFF
}
 
enum  ExpressionPathEndResultType {
  eExpressionPathEndResultTypePlain = 1, eExpressionPathEndResultTypeBitfield, eExpressionPathEndResultTypeBoundedRange, eExpressionPathEndResultTypeUnboundedRange,
  eExpressionPathEndResultTypeValueObjectList, eExpressionPathEndResultTypeInvalid = 0xFFFF
}
 
enum  ExpressionPathAftermath { eExpressionPathAftermathNothing = 1, eExpressionPathAftermathDereference, eExpressionPathAftermathTakeAddress }
 
enum  ClearUserVisibleDataItems {
  eClearUserVisibleDataItemsNothing = 1u << 0, eClearUserVisibleDataItemsValue = 1u << 1, eClearUserVisibleDataItemsSummary = 1u << 2, eClearUserVisibleDataItemsLocation = 1u << 3,
  eClearUserVisibleDataItemsDescription = 1u << 4, eClearUserVisibleDataItemsSyntheticChildren = 1u << 5, eClearUserVisibleDataItemsAllStrings, eClearUserVisibleDataItemsAll = 0xFFFF
}
 
enum  PrintableRepresentationSpecialCases : bool { PrintableRepresentationSpecialCases::eDisable = false, PrintableRepresentationSpecialCases::eAllow = true }
 

Public Member Functions

virtual ~ValueObject ()
 
const EvaluationPointGetUpdatePoint () const
 
EvaluationPointGetUpdatePoint ()
 
const ExecutionContextRefGetExecutionContextRef () const
 
lldb::TargetSP GetTargetSP () const
 
lldb::ProcessSP GetProcessSP () const
 
lldb::ThreadSP GetThreadSP () const
 
lldb::StackFrameSP GetFrameSP () const
 
void SetNeedsUpdate ()
 
CompilerType GetCompilerType ()
 
virtual TypeImpl GetTypeImpl ()
 
virtual bool CanProvideValue ()
 
virtual llvm::Optional< uint64_t > GetByteSize ()=0
 
virtual lldb::ValueType GetValueType () const =0
 
virtual ConstString GetTypeName ()
 
virtual ConstString GetDisplayTypeName ()
 
virtual ConstString GetQualifiedTypeName ()
 
virtual lldb::LanguageType GetObjectRuntimeLanguage ()
 
virtual uint32_t GetTypeInfo (CompilerType *pointee_or_element_compiler_type=nullptr)
 
virtual bool IsPointerType ()
 
virtual bool IsArrayType ()
 
virtual bool IsScalarType ()
 
virtual bool IsPointerOrReferenceType ()
 
virtual bool IsPossibleDynamicType ()
 
bool IsNilReference ()
 
bool IsUninitializedReference ()
 
virtual bool IsBaseClass ()
 
bool IsBaseClass (uint32_t &depth)
 
virtual bool IsDereferenceOfParent ()
 
bool IsIntegerType (bool &is_signed)
 
virtual void GetExpressionPath (Stream &s, GetExpressionPathFormat=eGetExpressionPathFormatDereferencePointers)
 
lldb::ValueObjectSP GetValueForExpressionPath (llvm::StringRef expression, ExpressionPathScanEndReason *reason_to_stop=nullptr, ExpressionPathEndResultType *final_value_type=nullptr, const GetValueForExpressionPathOptions &options=GetValueForExpressionPathOptions::DefaultOptions(), ExpressionPathAftermath *final_task_on_target=nullptr)
 
virtual bool IsInScope ()
 
virtual lldb::offset_t GetByteOffset ()
 
virtual uint32_t GetBitfieldBitSize ()
 
virtual uint32_t GetBitfieldBitOffset ()
 
bool IsBitfield ()
 
virtual bool IsArrayItemForPointer ()
 
virtual const char * GetValueAsCString ()
 
virtual bool GetValueAsCString (const lldb_private::TypeFormatImpl &format, std::string &destination)
 
bool GetValueAsCString (lldb::Format format, std::string &destination)
 
virtual uint64_t GetValueAsUnsigned (uint64_t fail_value, bool *success=nullptr)
 
virtual int64_t GetValueAsSigned (int64_t fail_value, bool *success=nullptr)
 
virtual bool SetValueFromCString (const char *value_str, Status &error)
 
virtual lldb::ModuleSP GetModule ()
 Return the module associated with this value object in case the value is from an executable file and might have its data in sections of the file. More...
 
ValueObjectGetRoot ()
 
ValueObjectFollowParentChain (std::function< bool(ValueObject *)>)
 Given a ValueObject, loop over itself and its parent, and its parent's parent, . More...
 
virtual bool GetDeclaration (Declaration &decl)
 
const StatusGetError ()
 
ConstString GetName () const
 
lldb::user_id_t GetID () const
 Returns a unique id for this ValueObject. More...
 
virtual lldb::ValueObjectSP GetChildAtIndex (size_t idx, bool can_create)
 
lldb::ValueObjectSP GetChildAtIndexPath (llvm::ArrayRef< size_t > idxs, size_t *index_of_error=nullptr)
 
lldb::ValueObjectSP GetChildAtIndexPath (llvm::ArrayRef< std::pair< size_t, bool >> idxs, size_t *index_of_error=nullptr)
 
lldb::ValueObjectSP GetChildAtNamePath (llvm::ArrayRef< ConstString > names, ConstString *name_of_error=nullptr)
 
lldb::ValueObjectSP GetChildAtNamePath (llvm::ArrayRef< std::pair< ConstString, bool >> names, ConstString *name_of_error=nullptr)
 
virtual lldb::ValueObjectSP GetChildMemberWithName (ConstString name, bool can_create)
 
virtual size_t GetIndexOfChildWithName (ConstString name)
 
size_t GetNumChildren (uint32_t max=UINT32_MAX)
 
const ValueGetValue () const
 
ValueGetValue ()
 
virtual bool ResolveValue (Scalar &scalar)
 
virtual bool IsLogicalTrue (Status &error)
 
virtual const char * GetLocationAsCString ()
 
const char * GetSummaryAsCString (lldb::LanguageType lang=lldb::eLanguageTypeUnknown)
 
bool GetSummaryAsCString (TypeSummaryImpl *summary_ptr, std::string &destination, lldb::LanguageType lang=lldb::eLanguageTypeUnknown)
 
bool GetSummaryAsCString (std::string &destination, const TypeSummaryOptions &options)
 
bool GetSummaryAsCString (TypeSummaryImpl *summary_ptr, std::string &destination, const TypeSummaryOptions &options)
 
const char * GetObjectDescription ()
 
bool HasSpecialPrintableRepresentation (ValueObjectRepresentationStyle val_obj_display, lldb::Format custom_format)
 
bool DumpPrintableRepresentation (Stream &s, ValueObjectRepresentationStyle val_obj_display=eValueObjectRepresentationStyleSummary, lldb::Format custom_format=lldb::eFormatInvalid, PrintableRepresentationSpecialCases special=PrintableRepresentationSpecialCases::eAllow, bool do_dump_error=true)
 
bool GetValueIsValid () const
 
bool GetValueDidChange ()
 
bool UpdateValueIfNeeded (bool update_format=true)
 
bool UpdateFormatsIfNeeded ()
 
lldb::ValueObjectSP GetSP ()
 
void SetName (ConstString name)
 Change the name of the current ValueObject. More...
 
virtual lldb::addr_t GetAddressOf (bool scalar_is_load_address=true, AddressType *address_type=nullptr)
 
lldb::addr_t GetPointerValue (AddressType *address_type=nullptr)
 
lldb::ValueObjectSP GetSyntheticChild (ConstString key) const
 
lldb::ValueObjectSP GetSyntheticArrayMember (size_t index, bool can_create)
 
lldb::ValueObjectSP GetSyntheticBitFieldChild (uint32_t from, uint32_t to, bool can_create)
 
lldb::ValueObjectSP GetSyntheticExpressionPathChild (const char *expression, bool can_create)
 
virtual lldb::ValueObjectSP GetSyntheticChildAtOffset (uint32_t offset, const CompilerType &type, bool can_create, ConstString name_const_str=ConstString())
 
virtual lldb::ValueObjectSP GetSyntheticBase (uint32_t offset, const CompilerType &type, bool can_create, ConstString name_const_str=ConstString())
 
virtual lldb::ValueObjectSP GetDynamicValue (lldb::DynamicValueType valueType)
 
lldb::DynamicValueType GetDynamicValueType ()
 
virtual lldb::ValueObjectSP GetStaticValue ()
 
virtual lldb::ValueObjectSP GetNonSyntheticValue ()
 
lldb::ValueObjectSP GetSyntheticValue ()
 
virtual bool HasSyntheticValue ()
 
virtual bool IsSynthetic ()
 
lldb::ValueObjectSP GetQualifiedRepresentationIfAvailable (lldb::DynamicValueType dynValue, bool synthValue)
 
virtual lldb::ValueObjectSP CreateConstantValue (ConstString name)
 
virtual lldb::ValueObjectSP Dereference (Status &error)
 
virtual lldb::ValueObjectSP Clone (ConstString new_name)
 Creates a copy of the ValueObject with a new name and setting the current ValueObject as its parent. More...
 
virtual lldb::ValueObjectSP AddressOf (Status &error)
 
virtual lldb::addr_t GetLiveAddress ()
 
virtual void SetLiveAddress (lldb::addr_t addr=LLDB_INVALID_ADDRESS, AddressType address_type=eAddressTypeLoad)
 
virtual lldb::ValueObjectSP Cast (const CompilerType &compiler_type)
 
virtual lldb::ValueObjectSP CastPointerType (const char *name, CompilerType &ast_type)
 
virtual lldb::ValueObjectSP CastPointerType (const char *name, lldb::TypeSP &type_sp)
 
virtual void ValueUpdated ()
 
virtual bool IsDynamic ()
 
virtual bool DoesProvideSyntheticValue ()
 
virtual bool IsSyntheticChildrenGenerated ()
 
virtual void SetSyntheticChildrenGenerated (bool b)
 
virtual SymbolContextScopeGetSymbolContextScope ()
 
void Dump (Stream &s)
 
void Dump (Stream &s, const DumpValueObjectOptions &options)
 
lldb::ValueObjectSP Persist ()
 
bool IsCStringContainer (bool check_pointer=false)
 Returns true if this is a char* or a char[] if it is a char* and check_pointer is true, it also checks that the pointer is valid. More...
 
std::pair< size_t, bool > ReadPointedString (lldb::DataBufferSP &buffer_sp, Status &error, uint32_t max_length=0, bool honor_array=true, lldb::Format item_format=lldb::eFormatCharArray)
 
virtual size_t GetPointeeData (DataExtractor &data, uint32_t item_idx=0, uint32_t item_count=1)
 
virtual uint64_t GetData (DataExtractor &data, Status &error)
 
virtual bool SetData (DataExtractor &data, Status &error)
 
virtual bool GetIsConstant () const
 
bool NeedsUpdating ()
 
void SetIsConstant ()
 
lldb::Format GetFormat () const
 
virtual void SetFormat (lldb::Format format)
 
virtual lldb::LanguageType GetPreferredDisplayLanguage ()
 
void SetPreferredDisplayLanguage (lldb::LanguageType lt)
 
lldb::TypeSummaryImplSP GetSummaryFormat ()
 
void SetSummaryFormat (lldb::TypeSummaryImplSP format)
 
void SetValueFormat (lldb::TypeFormatImplSP format)
 
lldb::TypeFormatImplSP GetValueFormat ()
 
void SetSyntheticChildren (const lldb::SyntheticChildrenSP &synth_sp)
 
lldb::SyntheticChildrenSP GetSyntheticChildren ()
 
virtual ValueObjectGetParent ()
 
virtual const ValueObjectGetParent () const
 
ValueObjectGetNonBaseClassParent ()
 
void SetAddressTypeOfChildren (AddressType at)
 
AddressType GetAddressTypeOfChildren ()
 
void SetHasCompleteType ()
 
virtual bool MightHaveChildren ()
 Find out if a ValueObject might have children. More...
 
virtual lldb::VariableSP GetVariable ()
 
virtual bool IsRuntimeSupportValue ()
 
virtual uint64_t GetLanguageFlags ()
 
virtual void SetLanguageFlags (uint64_t flags)
 

Static Public Member Functions

static lldb::ValueObjectSP CreateValueObjectFromExpression (llvm::StringRef name, llvm::StringRef expression, const ExecutionContext &exe_ctx)
 
static lldb::ValueObjectSP CreateValueObjectFromExpression (llvm::StringRef name, llvm::StringRef expression, const ExecutionContext &exe_ctx, const EvaluateExpressionOptions &options)
 
static lldb::ValueObjectSP CreateValueObjectFromAddress (llvm::StringRef name, uint64_t address, const ExecutionContext &exe_ctx, CompilerType type)
 
static lldb::ValueObjectSP CreateValueObjectFromData (llvm::StringRef name, const DataExtractor &data, const ExecutionContext &exe_ctx, CompilerType type)
 

Protected Types

typedef ClusterManager< ValueObjectValueObjectManager
 

Protected Member Functions

 ValueObject (ExecutionContextScope *exe_scope, ValueObjectManager &manager, AddressType child_ptr_or_ref_addr_type=eAddressTypeLoad)
 Use this constructor to create a "root variable object". More...
 
 ValueObject (ValueObject &parent)
 Use this constructor to create a ValueObject owned by another ValueObject. More...
 
ValueObjectManagerGetManager ()
 
virtual bool UpdateValue ()=0
 
virtual LazyBool CanUpdateWithInvalidExecutionContext ()
 
virtual void CalculateDynamicValue (lldb::DynamicValueType use_dynamic)
 
virtual lldb::DynamicValueType GetDynamicValueTypeImpl ()
 
virtual bool HasDynamicValueTypeInfo ()
 
virtual void CalculateSyntheticValue ()
 
virtual ValueObjectCreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index)
 Should only be called by ValueObject::GetChildAtIndex(). More...
 
virtual size_t CalculateNumChildren (uint32_t max=UINT32_MAX)=0
 Should only be called by ValueObject::GetNumChildren(). More...
 
void SetNumChildren (size_t num_children)
 
void SetValueDidChange (bool value_changed)
 
void SetValueIsValid (bool valid)
 
void ClearUserVisibleData (uint32_t items=ValueObject::eClearUserVisibleDataItemsAllStrings)
 
void AddSyntheticChild (ConstString key, ValueObject *valobj)
 
DataExtractorGetDataExtractor ()
 
void ClearDynamicTypeInformation ()
 
virtual CompilerType GetCompilerTypeImpl ()=0
 
const char * GetLocationAsCStringImpl (const Value &value, const DataExtractor &data)
 
bool IsChecksumEmpty ()
 
void SetPreferredDisplayLanguageIfNeeded (lldb::LanguageType)
 
virtual void DoUpdateChildrenAddressType (ValueObject &valobj)
 

Protected Attributes

ValueObjectm_parent = nullptr
 The parent value object, or nullptr if this has no parent. More...
 
ValueObjectm_root = nullptr
 The root of the hierarchy for this ValueObject (or nullptr if never calculated). More...
 
EvaluationPoint m_update_point
 Stores both the stop id and the full context at which this value was last updated. More...
 
ConstString m_name
 The name of this object. More...
 
DataExtractor m_data
 A data extractor that can be used to extract the value. More...
 
Value m_value
 
Status m_error
 An error object that can describe any errors that occur when updating values. More...
 
std::string m_value_str
 Cached value string that will get cleared if/when the value is updated. More...
 
std::string m_old_value_str
 Cached old value string from the last time the value was gotten. More...
 
std::string m_location_str
 Cached location string that will get cleared if/when the value is updated. More...
 
std::string m_summary_str
 Cached summary string that will get cleared if/when the value is updated. More...
 
std::string m_object_desc_str
 Cached result of the "object printer". More...
 
CompilerType m_override_type
 If the type of the value object should be overridden, the type to impose. More...
 
ValueObjectManagerm_manager = nullptr
 This object is managed by the root object (any ValueObject that gets created without a parent.) The manager gets passed through all the generations of dependent objects, and will keep the whole cluster of objects alive as long as a shared pointer to any of them has been handed out. More...
 
ChildrenManager m_children
 
std::map< ConstString, ValueObject * > m_synthetic_children
 
ValueObjectm_dynamic_value = nullptr
 
ValueObjectm_synthetic_value = nullptr
 
ValueObjectm_deref_valobj = nullptr
 
lldb::ValueObjectSP m_addr_of_valobj_sp
 We have to hold onto a shared pointer to this one because it is created as an independent ValueObjectConstResult, which isn't managed by us. More...
 
lldb::Format m_format = lldb::eFormatDefault
 
lldb::Format m_last_format = lldb::eFormatDefault
 
uint32_t m_last_format_mgr_revision = 0
 
lldb::TypeSummaryImplSP m_type_summary_sp
 
lldb::TypeFormatImplSP m_type_format_sp
 
lldb::SyntheticChildrenSP m_synthetic_children_sp
 
ProcessModID m_user_id_of_forced_summary
 
AddressType m_address_type_of_ptr_or_ref_children = eAddressTypeInvalid
 
llvm::SmallVector< uint8_t, 16 > m_value_checksum
 
lldb::LanguageType m_preferred_display_language = lldb::eLanguageTypeUnknown
 
uint64_t m_language_flags = 0
 
UserID m_id
 Unique identifier for every value object. More...
 
struct lldb_private::ValueObject::Bitflags m_flags
 

Private Member Functions

virtual CompilerType MaybeCalculateCompleteType ()
 
void UpdateChildrenAddressType ()
 
lldb::ValueObjectSP GetValueForExpressionPath_Impl (llvm::StringRef expression_cstr, ExpressionPathScanEndReason *reason_to_stop, ExpressionPathEndResultType *final_value_type, const GetValueForExpressionPathOptions &options, ExpressionPathAftermath *final_task_on_target)
 
 ValueObject (const ValueObject &)=delete
 
const ValueObjectoperator= (const ValueObject &)=delete
 

Friends

class ValueObjectChild
 
class ExpressionVariable
 
class Target
 
class ValueObjectConstResultImpl
 
class ValueObjectSynthetic
 

Detailed Description

ValueObject:

This abstract class provides an interface to a particular value, be it a register, a local or global variable, that is evaluated in some particular scope. The ValueObject also has the capability of being the "child" of some other variable object, and in turn of having children. If a ValueObject is a root variable object - having no parent - then it must be constructed with respect to some particular ExecutionContextScope. If it is a child, it inherits the ExecutionContextScope from its parent. The ValueObject will update itself if necessary before fetching its value, summary, object description, etc. But it will always update itself in the ExecutionContextScope with which it was originally created. A brief note on life cycle management for ValueObjects. This is a little tricky because a ValueObject can contain various other ValueObjects - the Dynamic Value, its children, the dereference value, etc. Any one of these can be handed out as a shared pointer, but for that contained value object to be valid, the root object and potentially other of the value objects need to stay around. We solve this problem by handing out shared pointers to the Value Object and any of its dependents using a shared ClusterManager. This treats each shared pointer handed out for the entire cluster as a reference to the whole cluster. The whole cluster will stay around until the last reference is released.

The ValueObject mostly handle this automatically, if a value object is made with a Parent ValueObject, then it adds itself to the ClusterManager of the parent. It does mean that external to the ValueObjects we should only ever make available ValueObjectSP's, never ValueObjects or pointers to them. So all the "Root level" ValueObject derived constructors should be private, and should implement a Create function that new's up object and returns a Shared Pointer that it gets from the GetSP() method.

However, if you are making an derived ValueObject that will be contained in a parent value object, you should just hold onto a pointer to it internally, and by virtue of passing the parent ValueObject into its constructor, it will be added to the ClusterManager for the parent. Then if you ever hand out a Shared Pointer to the contained ValueObject, just do so by calling GetSP() on the contained object.

Definition at line 105 of file ValueObject.h.

Member Typedef Documentation

◆ ValueObjectManager

Definition at line 794 of file ValueObject.h.

Member Enumeration Documentation

◆ ClearUserVisibleDataItems

Enumerator
eClearUserVisibleDataItemsNothing 
eClearUserVisibleDataItemsValue 
eClearUserVisibleDataItemsSummary 
eClearUserVisibleDataItemsLocation 
eClearUserVisibleDataItemsDescription 
eClearUserVisibleDataItemsSyntheticChildren 
eClearUserVisibleDataItemsAllStrings 
eClearUserVisibleDataItemsAll 

Definition at line 182 of file ValueObject.h.

◆ ExpressionPathAftermath

Enumerator
eExpressionPathAftermathNothing 

Just return it.

eExpressionPathAftermathDereference 

Dereference the target.

eExpressionPathAftermathTakeAddress 

Take target's address.

Definition at line 173 of file ValueObject.h.

◆ ExpressionPathEndResultType

Enumerator
eExpressionPathEndResultTypePlain 

Anything but...

eExpressionPathEndResultTypeBitfield 

A bitfield.

eExpressionPathEndResultTypeBoundedRange 

A range [low-high].

eExpressionPathEndResultTypeUnboundedRange 

A range [].

eExpressionPathEndResultTypeValueObjectList 

Several items in a VOList.

eExpressionPathEndResultTypeInvalid 

Definition at line 159 of file ValueObject.h.

◆ ExpressionPathScanEndReason

Enumerator
eExpressionPathScanEndReasonEndOfString 

Out of data to parse.

eExpressionPathScanEndReasonNoSuchChild 

Child element not found.

eExpressionPathScanEndReasonNoSuchSyntheticChild 

(Synthetic) child element not found.

eExpressionPathScanEndReasonEmptyRangeNotAllowed 

[] only allowed for arrays.

eExpressionPathScanEndReasonDotInsteadOfArrow 

. used when -> should be used.

eExpressionPathScanEndReasonArrowInsteadOfDot 

-> used when . should be used.

eExpressionPathScanEndReasonFragileIVarNotAllowed 

ObjC ivar expansion not allowed.

eExpressionPathScanEndReasonRangeOperatorNotAllowed 

[] not allowed by options.

eExpressionPathScanEndReasonRangeOperatorInvalid 

[] not valid on objects other than scalars, pointers or arrays.

eExpressionPathScanEndReasonArrayRangeOperatorMet 

[] is good for arrays, but I cannot parse it.

eExpressionPathScanEndReasonBitfieldRangeOperatorMet 

[] is good for bitfields, but I cannot parse after it.

eExpressionPathScanEndReasonUnexpectedSymbol 

Something is malformed in he expression.

eExpressionPathScanEndReasonTakingAddressFailed 

Impossible to apply & operator.

eExpressionPathScanEndReasonDereferencingFailed 

Impossible to apply * operator.

eExpressionPathScanEndReasonRangeOperatorExpanded 

[] was expanded into a VOList.

eExpressionPathScanEndReasonSyntheticValueMissing 

getting the synthetic children failed.

eExpressionPathScanEndReasonUnknown 

Definition at line 123 of file ValueObject.h.

◆ GetExpressionPathFormat

Enumerator
eGetExpressionPathFormatDereferencePointers 
eGetExpressionPathFormatHonorPointers 

Definition at line 107 of file ValueObject.h.

◆ PrintableRepresentationSpecialCases

Enumerator
eDisable 
eAllow 

Definition at line 532 of file ValueObject.h.

◆ ValueObjectRepresentationStyle

Enumerator
eValueObjectRepresentationStyleValue 
eValueObjectRepresentationStyleSummary 
eValueObjectRepresentationStyleLanguageSpecific 
eValueObjectRepresentationStyleLocation 
eValueObjectRepresentationStyleChildrenCount 
eValueObjectRepresentationStyleType 
eValueObjectRepresentationStyleName 
eValueObjectRepresentationStyleExpressionPath 

Definition at line 112 of file ValueObject.h.

Constructor & Destructor Documentation

◆ ~ValueObject()

ValueObject::~ValueObject ( )
virtualdefault

◆ ValueObject() [1/3]

ValueObject::ValueObject ( ExecutionContextScope exe_scope,
ValueObjectManager manager,
AddressType  child_ptr_or_ref_addr_type = eAddressTypeLoad 
)
protected

◆ ValueObject() [2/3]

ValueObject::ValueObject ( ValueObject parent)
protected

◆ ValueObject() [3/3]

lldb_private::ValueObject::ValueObject ( const ValueObject )
privatedelete

Member Function Documentation

◆ AddressOf()

ValueObjectSP ValueObject::AddressOf ( Status error)
virtual

◆ AddSyntheticChild()

void ValueObject::AddSyntheticChild ( ConstString  key,
ValueObject valobj 
)
protected

◆ CalculateDynamicValue()

void ValueObject::CalculateDynamicValue ( lldb::DynamicValueType  use_dynamic)
protectedvirtual

◆ CalculateNumChildren()

virtual size_t lldb_private::ValueObject::CalculateNumChildren ( uint32_t  max = UINT32_MAX)
protectedpure virtual

◆ CalculateSyntheticValue()

void ValueObject::CalculateSyntheticValue ( )
protectedvirtual

◆ CanProvideValue()

bool ValueObject::CanProvideValue ( )
virtual

◆ CanUpdateWithInvalidExecutionContext()

virtual LazyBool lldb_private::ValueObject::CanUpdateWithInvalidExecutionContext ( )
inlineprotectedvirtual

◆ Cast()

ValueObjectSP ValueObject::Cast ( const CompilerType compiler_type)
virtual

◆ CastPointerType() [1/2]

ValueObjectSP ValueObject::CastPointerType ( const char *  name,
CompilerType ast_type 
)
virtual

◆ CastPointerType() [2/2]

virtual lldb::ValueObjectSP lldb_private::ValueObject::CastPointerType ( const char *  name,
lldb::TypeSP &  type_sp 
)
virtual

◆ ClearDynamicTypeInformation()

void ValueObject::ClearDynamicTypeInformation ( )
protected

◆ ClearUserVisibleData()

void ValueObject::ClearUserVisibleData ( uint32_t  items = ValueObject::eClearUserVisibleDataItemsAllStrings)
protected

◆ Clone()

lldb::ValueObjectSP ValueObject::Clone ( ConstString  new_name)
virtual

Creates a copy of the ValueObject with a new name and setting the current ValueObject as its parent.

It should be used when we want to change the name of a ValueObject without modifying the actual ValueObject itself (e.g. sythetic child provider).

Definition at line 2769 of file ValueObject.cpp.

References lldb_private::ValueObjectCast::Create(), and GetCompilerType().

◆ CreateChildAtIndex()

ValueObject * ValueObject::CreateChildAtIndex ( size_t  idx,
bool  synthetic_array_member,
int32_t  synthetic_index 
)
protectedvirtual

◆ CreateConstantValue()

ValueObjectSP ValueObject::CreateConstantValue ( ConstString  name)
virtual

◆ CreateValueObjectFromAddress()

lldb::ValueObjectSP ValueObject::CreateValueObjectFromAddress ( llvm::StringRef  name,
uint64_t  address,
const ExecutionContext exe_ctx,
CompilerType  type 
)
static

◆ CreateValueObjectFromData()

lldb::ValueObjectSP ValueObject::CreateValueObjectFromData ( llvm::StringRef  name,
const DataExtractor data,
const ExecutionContext exe_ctx,
CompilerType  type 
)
static

◆ CreateValueObjectFromExpression() [1/2]

lldb::ValueObjectSP ValueObject::CreateValueObjectFromExpression ( llvm::StringRef  name,
llvm::StringRef  expression,
const ExecutionContext exe_ctx 
)
static

Definition at line 2962 of file ValueObject.cpp.

◆ CreateValueObjectFromExpression() [2/2]

lldb::ValueObjectSP ValueObject::CreateValueObjectFromExpression ( llvm::StringRef  name,
llvm::StringRef  expression,
const ExecutionContext exe_ctx,
const EvaluateExpressionOptions options 
)
static

◆ Dereference()

ValueObjectSP ValueObject::Dereference ( Status error)
virtual

◆ DoesProvideSyntheticValue()

virtual bool lldb_private::ValueObject::DoesProvideSyntheticValue ( )
inlinevirtual

Reimplemented in lldb_private::ValueObjectSynthetic.

Definition at line 639 of file ValueObject.h.

◆ DoUpdateChildrenAddressType()

virtual void lldb_private::ValueObject::DoUpdateChildrenAddressType ( ValueObject valobj)
inlineprotectedvirtual

Reimplemented in lldb_private::ValueObjectVariable.

Definition at line 1003 of file ValueObject.h.

Referenced by UpdateChildrenAddressType().

◆ Dump() [1/2]

void ValueObject::Dump ( Stream s)

Definition at line 2562 of file ValueObject.cpp.

◆ Dump() [2/2]

void ValueObject::Dump ( Stream s,
const DumpValueObjectOptions options 
)

◆ DumpPrintableRepresentation()

bool ValueObject::DumpPrintableRepresentation ( Stream s,
ValueObjectRepresentationStyle  val_obj_display = eValueObjectRepresentationStyleSummary,
lldb::Format  custom_format = lldb::eFormatInvalid,
PrintableRepresentationSpecialCases  special = PrintableRepresentationSpecialCases::eAllow,
bool  do_dump_error = true 
)

Definition at line 1163 of file ValueObject.cpp.

References lldb_private::Flags::AnySet(), lldb_private::formatters::StringPrinter::ASCII, lldb_private::Status::AsCString(), CanProvideValue(), eAllow, lldb::eByteOrderInvalid, lldb::eFormatBinary, lldb::eFormatBoolean, lldb::eFormatBytes, lldb::eFormatBytesWithASCII, lldb::eFormatChar, lldb::eFormatCharArray, lldb::eFormatCharPrintable, lldb::eFormatComplex, lldb::eFormatComplexFloat, lldb::eFormatComplexInteger, lldb::eFormatCString, lldb::eFormatDecimal, lldb::eFormatDefault, lldb::eFormatEnum, lldb::eFormatFloat, lldb::eFormatHex, lldb::eFormatHexUppercase, lldb::eFormatInvalid, lldb::eFormatOctal, lldb::eFormatOSType, lldb::eFormatPointer, lldb::eFormatUnicode16, lldb::eFormatUnicode32, lldb::eFormatUnsigned, lldb::eFormatVectorOfChar, lldb::eFormatVectorOfFloat32, lldb::eFormatVectorOfFloat64, lldb::eFormatVectorOfSInt16, lldb::eFormatVectorOfSInt32, lldb::eFormatVectorOfSInt64, lldb::eFormatVectorOfSInt8, lldb::eFormatVectorOfUInt128, lldb::eFormatVectorOfUInt16, lldb::eFormatVectorOfUInt32, lldb::eFormatVectorOfUInt64, lldb::eFormatVectorOfUInt8, error(), eValueObjectRepresentationStyleChildrenCount, eValueObjectRepresentationStyleExpressionPath, eValueObjectRepresentationStyleLanguageSpecific, eValueObjectRepresentationStyleLocation, eValueObjectRepresentationStyleName, eValueObjectRepresentationStyleSummary, eValueObjectRepresentationStyleType, eValueObjectRepresentationStyleValue, lldb_private::Status::Fail(), GetChildAtIndex(), GetExpressionPath(), GetLocationAsCString(), GetName(), GetNumChildren(), GetObjectDescription(), lldb_private::FormatManager::GetSingleItemFormat(), lldb_private::StreamString::GetString(), lldb_private::ConstString::GetStringRef(), GetSummaryAsCString(), GetTypeInfo(), GetTypeName(), GetValueAsCString(), IsCStringContainer(), m_error, lldb_private::Stream::Printf(), lldb_private::Stream::PutCString(), lldb_private::formatters::StringPrinter::ReadBufferAndDumpToStream(), ReadPointedString(), lldb_private::formatters::StringPrinter::DumpToStreamOptions::SetBinaryZeroIsTerminator(), lldb_private::formatters::StringPrinter::ReadBufferAndDumpToStreamOptions::SetData(), SetFormat(), lldb_private::formatters::StringPrinter::ReadBufferAndDumpToStreamOptions::SetIsTruncated(), lldb_private::formatters::StringPrinter::DumpToStreamOptions::SetPrefixToken(), lldb_private::formatters::StringPrinter::DumpToStreamOptions::SetQuote(), lldb_private::formatters::StringPrinter::DumpToStreamOptions::SetSourceSize(), lldb_private::formatters::StringPrinter::DumpToStreamOptions::SetStream(), and lldb_private::Flags::Test().

Referenced by DumpValue().

◆ FollowParentChain()

ValueObject * ValueObject::FollowParentChain ( std::function< bool(ValueObject *)>  f)

Given a ValueObject, loop over itself and its parent, and its parent's parent, .

. until either the given callback returns false, or you end up at a null pointer

Definition at line 3040 of file ValueObject.cpp.

References m_parent.

Referenced by lldb_private::ValueObjectChild::CanUpdateWithInvalidExecutionContext(), and GetRoot().

◆ GetAddressOf()

addr_t ValueObject::GetAddressOf ( bool  scalar_is_load_address = true,
AddressType address_type = nullptr 
)
virtual

◆ GetAddressTypeOfChildren()

AddressType ValueObject::GetAddressTypeOfChildren ( )

◆ GetBitfieldBitOffset()

virtual uint32_t lldb_private::ValueObject::GetBitfieldBitOffset ( )
inlinevirtual

◆ GetBitfieldBitSize()

virtual uint32_t lldb_private::ValueObject::GetBitfieldBitSize ( )
inlinevirtual

◆ GetByteOffset()

virtual lldb::offset_t lldb_private::ValueObject::GetByteOffset ( )
inlinevirtual

Reimplemented in lldb_private::ValueObjectChild.

Definition at line 422 of file ValueObject.h.

◆ GetByteSize()

virtual llvm::Optional<uint64_t> lldb_private::ValueObject::GetByteSize ( )
pure virtual

◆ GetChildAtIndex()

ValueObjectSP ValueObject::GetChildAtIndex ( size_t  idx,
bool  can_create 
)
virtual

◆ GetChildAtIndexPath() [1/2]

lldb::ValueObjectSP ValueObject::GetChildAtIndexPath ( llvm::ArrayRef< size_t >  idxs,
size_t *  index_of_error = nullptr 
)

Definition at line 396 of file ValueObject.cpp.

References GetSP().

Referenced by ExtractLibcxxStringInfo().

◆ GetChildAtIndexPath() [2/2]

lldb::ValueObjectSP ValueObject::GetChildAtIndexPath ( llvm::ArrayRef< std::pair< size_t, bool >>  idxs,
size_t *  index_of_error = nullptr 
)

Definition at line 412 of file ValueObject.cpp.

References GetSP().

◆ GetChildAtNamePath() [1/2]

lldb::ValueObjectSP ValueObject::GetChildAtNamePath ( llvm::ArrayRef< ConstString names,
ConstString name_of_error = nullptr 
)

Definition at line 429 of file ValueObject.cpp.

References GetSP().

◆ GetChildAtNamePath() [2/2]

lldb::ValueObjectSP ValueObject::GetChildAtNamePath ( llvm::ArrayRef< std::pair< ConstString, bool >>  names,
ConstString name_of_error = nullptr 
)

Definition at line 445 of file ValueObject.cpp.

References GetSP().

◆ GetChildMemberWithName()

ValueObjectSP ValueObject::GetChildMemberWithName ( ConstString  name,
bool  can_create 
)
virtual

◆ GetCompilerType()

CompilerType lldb_private::ValueObject::GetCompilerType ( )
inline

Definition at line 352 of file ValueObject.h.

References MaybeCalculateCompleteType().

Referenced by lldb_private::ValueObjectConstResultImpl::AddressOf(), AddressOf(), lldb_private::ValueObjectCast::CalculateNumChildren(), lldb_private::ValueObjectChild::CalculateNumChildren(), lldb_private::ValueObjectDynamicValue::CalculateNumChildren(), lldb_private::ValueObjectVariable::CalculateNumChildren(), lldb_private::ValueObjectConstResult::CalculateNumChildren(), lldb_private::ValueObjectRegister::CalculateNumChildren(), CanProvideValue(), Clone(), lldb_private::formatters::CMTimeSummaryProvider(), lldb_private::AppleObjCRuntime::CouldHaveDynamicValue(), lldb_private::ValueObjectConstResultImpl::CreateChildAtIndex(), CreateChildAtIndex(), CreateConstantValue(), lldb_private::ValueObjectSynthetic::CreateSynthFilter(), Dereference(), DerefToNSErrorPointer(), lldb_private::ValueObjectVariable::DoUpdateChildrenAddressType(), DumpValue(), ExtractFields(), lldb_private::ItaniumABILanguageRuntime::FixUpDynamicType(), lldb_private::AppleObjCRuntime::FixUpDynamicType(), lldb_private::ValueObjectVariable::GetByteSize(), lldb_private::ValueObjectConstResult::GetByteSize(), GetChildMemberWithName(), lldb_private::AppleObjCRuntimeV2::GetClassDescriptor(), lldb_private::ObjCLanguageRuntime::GetClassDescriptor(), lldb_private::ValueObjectConstResultCast::GetCompilerType(), lldb_private::ValueObjectConstResultChild::GetCompilerType(), lldb_private::ValueObjectDynamicValue::GetCompilerTypeImpl(), lldb_private::ValueObjectSynthetic::GetCompilerTypeImpl(), lldb_private::ValueObjectRecognizerSynthesizedValue::GetCompilerTypeImpl(), lldb_private::ValueObjectDynamicValue::GetDisplayTypeName(), lldb_private::ValueObjectChild::GetDisplayTypeName(), lldb_private::ValueObjectConstResult::GetDisplayTypeName(), lldb_private::ItaniumABILanguageRuntime::GetDynamicTypeAndAddress(), GetExpressionPath(), GetIndexOfChildWithName(), lldb_private::ValueObjectPrinter::GetMostSpecializedValue(), lldb_private::AppleObjCRuntime::GetObjectDescription(), GetObjectRuntimeLanguage(), GetPointeeData(), lldb_private::ObjCLanguage::GetPossibleFormattersMatches(), lldb_private::FormatManager::GetPossibleMatches(), lldb_private::ValueObjectChild::GetQualifiedTypeName(), GetQualifiedTypeName(), GetSyntheticBitFieldChild(), GetTypeImpl(), GetTypeInfo(), lldb_private::ValueObjectChild::GetTypeName(), lldb_private::ValueObjectConstResult::GetTypeName(), lldb_private::ValueObjectRegister::GetTypeName(), GetTypeName(), GetVTableAddress(), IsArrayType(), IsIntegerType(), lldb_private::ObjCLanguage::IsNilReference(), IsPointerOrReferenceType(), IsPointerType(), IsPossibleDynamicType(), IsScalarType(), lldb_private::formatters::LibStdcppWStringSummaryProvider(), lldb_private::ClangExpressionDeclMap::LookUpLldbClass(), lldb_private::ClangExpressionDeclMap::LookUpLldbObjCClass(), lldb_private::formatters::NSAttributedStringSummaryProvider(), lldb_private::formatters::NSBundleSummaryProvider(), lldb_private::formatters::NSNotificationSummaryProvider(), lldb_private::formatters::NSTimeZoneSummaryProvider(), lldb_private::formatters::NSURLSummaryProvider(), lldb_private::formatters::ObjCBOOLSummaryProvider(), lldb_private::formatters::ObjCSELSummaryProvider(), ReadPointedString(), SetData(), SetValueFromCString(), lldb_private::FormatManager::ShouldPrintAsOneLiner(), lldb_private::ValueObjectCast::UpdateValue(), lldb_private::ValueObjectChild::UpdateValue(), lldb_private::ValueObjectVariable::UpdateValue(), lldb_private::ValueObjectDynamicValue::UpdateValue(), lldb_private::ValueObjectSynthetic::UpdateValue(), lldb_private::ValueObjectSynthetic::ValueObjectSynthetic(), lldb_private::formatters::WCharStringSummaryProvider(), and lldb_private::formatters::WCharSummaryProvider().

◆ GetCompilerTypeImpl()

virtual CompilerType lldb_private::ValueObject::GetCompilerTypeImpl ( )
protectedpure virtual

◆ GetData()

uint64_t ValueObject::GetData ( DataExtractor data,
Status error 
)
virtual

◆ GetDataExtractor()

DataExtractor & ValueObject::GetDataExtractor ( )
protected

Definition at line 278 of file ValueObject.cpp.

References m_data, and UpdateValueIfNeeded().

Referenced by GetSyntheticBitFieldChild(), ReadPointedString(), and ValueObject().

◆ GetDeclaration()

bool ValueObject::GetDeclaration ( Declaration decl)
virtual

◆ GetDisplayTypeName()

virtual ConstString lldb_private::ValueObject::GetDisplayTypeName ( )
inlinevirtual

◆ GetDynamicValue()

ValueObjectSP ValueObject::GetDynamicValue ( lldb::DynamicValueType  valueType)
virtual

◆ GetDynamicValueType()

lldb::DynamicValueType ValueObject::GetDynamicValueType ( )

◆ GetDynamicValueTypeImpl()

virtual lldb::DynamicValueType lldb_private::ValueObject::GetDynamicValueTypeImpl ( )
inlineprotectedvirtual

Reimplemented in lldb_private::ValueObjectDynamicValue.

Definition at line 956 of file ValueObject.h.

References lldb::eNoDynamicValues.

Referenced by GetDynamicValueType().

◆ GetError()

const Status & ValueObject::GetError ( )

◆ GetExecutionContextRef()

const ExecutionContextRef& lldb_private::ValueObject::GetExecutionContextRef ( ) const
inline

Definition at line 330 of file ValueObject.h.

References lldb_private::ValueObject::EvaluationPoint::GetExecutionContextRef(), and m_update_point.

Referenced by lldb_private::ValueObjectConstResultImpl::AddressOf(), AddressOf(), CalculateDynamicValue(), lldb_private::ValueObjectCast::CalculateNumChildren(), lldb_private::ValueObjectChild::CalculateNumChildren(), lldb_private::ValueObjectDynamicValue::CalculateNumChildren(), lldb_private::ValueObjectVariable::CalculateNumChildren(), lldb_private::ValueObjectMemory::CalculateNumChildren(), lldb_private::ValueObjectConstResult::CalculateNumChildren(), lldb_private::ValueObjectRegister::CalculateNumChildren(), CastPointerType(), lldb_private::ValueObjectSynthetic::CopyValueData(), lldb_private::ValueObjectConstResultImpl::CreateChildAtIndex(), CreateChildAtIndex(), CreateConstantValue(), lldb_private::formatters::CXXFunctionPointerSummaryProvider(), Dereference(), lldb_private::ValueObjectVariable::DoUpdateChildrenAddressType(), ExtractFields(), lldb_private::TypeFormatImpl_Format::FormatObject(), lldb_private::TypeFormatImpl_EnumType::FormatObject(), lldb_private::StringSummaryFormat::FormatObject(), lldb_private::ValueObjectCast::GetByteSize(), lldb_private::ValueObjectDynamicValue::GetByteSize(), lldb_private::ValueObjectVariable::GetByteSize(), lldb_private::ValueObjectMemory::GetByteSize(), lldb_private::ValueObjectConstResult::GetByteSize(), lldb_private::AppleObjCRuntimeV2::GetClassDescriptor(), lldb_private::ObjCLanguageRuntime::GetClassDescriptor(), lldb_private::ValueObjectRegister::GetCompilerTypeImpl(), GetData(), lldb_private::ItaniumABILanguageRuntime::GetDynamicTypeAndAddress(), lldb_private::ValueObjectConstResult::GetDynamicValue(), lldb_private::AppleObjCRuntime::GetObjectDescription(), GetObjectDescription(), GetPointeeData(), lldb_private::FormatManager::GetPossibleMatches(), GetSyntheticBase(), GetSyntheticChildAtOffset(), GetVBaseBitOffset(), lldb_private::ValueObjectVariable::IsInScope(), IsPossibleDynamicType(), MaybeCalculateCompleteType(), lldb_private::formatters::NSError_SummaryProvider(), lldb_private::formatters::ObjCSELSummaryProvider(), ReadPointedString(), ResolveValue(), lldb_private::ValueObjectVariable::SetData(), SetData(), lldb_private::ValueObjectVariable::SetValueFromCString(), SetValueFromCString(), lldb_private::ValueObjectCast::UpdateValue(), lldb_private::ValueObjectMemory::UpdateValue(), lldb_private::ValueObjectChild::UpdateValue(), lldb_private::ValueObjectRegisterSet::UpdateValue(), lldb_private::ValueObjectVariable::UpdateValue(), lldb_private::ValueObjectDynamicValue::UpdateValue(), and lldb_private::ValueObjectRegister::UpdateValue().

◆ GetExpressionPath()

void ValueObject::GetExpressionPath ( Stream s,
GetExpressionPathFormat  epformat = eGetExpressionPathFormatDereferencePointers 
)
virtual

◆ GetFormat()

lldb::Format ValueObject::GetFormat ( ) const

Definition at line 3069 of file ValueObject.cpp.

References lldb::eFormatDefault, m_format, and m_parent.

Referenced by GetValueAsCString().

◆ GetFrameSP()

lldb::StackFrameSP lldb_private::ValueObject::GetFrameSP ( ) const
inline

◆ GetID()

lldb::user_id_t lldb_private::ValueObject::GetID ( ) const
inline

◆ GetIndexOfChildWithName()

size_t ValueObject::GetIndexOfChildWithName ( ConstString  name)
virtual

◆ GetIsConstant()

virtual bool lldb_private::ValueObject::GetIsConstant ( ) const
inlinevirtual

◆ GetLanguageFlags()

virtual uint64_t lldb_private::ValueObject::GetLanguageFlags ( )
inlinevirtual

◆ GetLiveAddress()

virtual lldb::addr_t lldb_private::ValueObject::GetLiveAddress ( )
inlinevirtual

Reimplemented in lldb_private::ValueObjectConstResult.

Definition at line 616 of file ValueObject.h.

References LLDB_INVALID_ADDRESS.

◆ GetLocationAsCString()

virtual const char* lldb_private::ValueObject::GetLocationAsCString ( )
inlinevirtual

◆ GetLocationAsCStringImpl()

const char * ValueObject::GetLocationAsCStringImpl ( const Value value,
const DataExtractor data 
)
protected

◆ GetManager()

ValueObjectManager* lldb_private::ValueObject::GetManager ( )
inlineprotected

Definition at line 946 of file ValueObject.h.

References m_manager.

◆ GetModule()

ModuleSP ValueObject::GetModule ( )
virtual

Return the module associated with this value object in case the value is from an executable file and might have its data in sections of the file.

This can be used for variables.

Reimplemented in lldb_private::ValueObjectMemory, and lldb_private::ValueObjectVariable.

Definition at line 3024 of file ValueObject.cpp.

References GetModule(), and GetRoot().

Referenced by lldb_private::ValueObjectSynthetic::CopyValueData(), CreateConstantValue(), lldb_private::formatters::GetArrayAddressOrPointerValue(), GetData(), GetModule(), GetPointeeData(), lldb_private::ValueObjectCast::UpdateValue(), lldb_private::ValueObjectChild::UpdateValue(), and lldb_private::ValueObjectDynamicValue::UpdateValue().

◆ GetName()

ConstString lldb_private::ValueObject::GetName ( ) const
inline

◆ GetNonBaseClassParent()

ValueObject * ValueObject::GetNonBaseClassParent ( )

Definition at line 1868 of file ValueObject.cpp.

References GetNonBaseClassParent(), GetParent(), and IsBaseClass().

Referenced by GetExpressionPath(), and GetNonBaseClassParent().

◆ GetNonSyntheticValue()

virtual lldb::ValueObjectSP lldb_private::ValueObject::GetNonSyntheticValue ( )
inlinevirtual

◆ GetNumChildren()

size_t ValueObject::GetNumChildren ( uint32_t  max = UINT32_MAX)

◆ GetObjectDescription()

const char * ValueObject::GetObjectDescription ( )

◆ GetObjectRuntimeLanguage()

virtual lldb::LanguageType lldb_private::ValueObject::GetObjectRuntimeLanguage ( )
inlinevirtual

◆ GetParent() [1/2]

virtual ValueObject* lldb_private::ValueObject::GetParent ( )
inlinevirtual

◆ GetParent() [2/2]

virtual const ValueObject* lldb_private::ValueObject::GetParent ( ) const
inlinevirtual

◆ GetPointeeData()

size_t ValueObject::GetPointeeData ( DataExtractor data,
uint32_t  item_idx = 0,
uint32_t  item_count = 1 
)
virtual

◆ GetPointerValue()

addr_t ValueObject::GetPointerValue ( AddressType address_type = nullptr)

◆ GetPreferredDisplayLanguage()

lldb::LanguageType ValueObject::GetPreferredDisplayLanguage ( )
virtual

◆ GetProcessSP()

lldb::ProcessSP lldb_private::ValueObject::GetProcessSP ( ) const
inline

Definition at line 338 of file ValueObject.h.

References lldb_private::ValueObject::EvaluationPoint::GetExecutionContextRef(), lldb_private::ExecutionContextRef::GetProcessSP(), and m_update_point.

Referenced by lldb_private::formatters::CFBagSummaryProvider(), lldb_private::formatters::CFBinaryHeapSummaryProvider(), lldb_private::formatters::CFBitVectorSummaryProvider(), lldb_private::AppleObjCRuntimeV1::ClassDescriptorV1::ClassDescriptorV1(), DerefToNSErrorPointer(), ExtractFields(), lldb_private::TypeFormatImpl_EnumType::FormatObject(), lldb_private::AppleObjCRuntimeV2::GetDynamicTypeAndAddress(), lldb_private::AppleObjCRuntime::GetObjectDescription(), lldb_private::ObjCLanguage::GetPossibleFormattersMatches(), IsRuntimeSupportValue(), lldb_private::formatters::LibStdcppStringSummaryProvider(), lldb_private::formatters::LibStdcppWStringSummaryProvider(), MaybeCalculateCompleteType(), lldb_private::formatters::NSArraySummaryProvider(), lldb_private::formatters::NSBundleSummaryProvider(), lldb_private::formatters::NSDataSummaryProvider(), lldb_private::formatters::NSDateSummaryProvider(), lldb_private::formatters::NSDecimalNumberSummaryProvider(), lldb_private::formatters::NSDictionarySummaryProvider(), lldb_private::formatters::NSError_SummaryProvider(), lldb_private::formatters::NSIndexSetSummaryProvider(), lldb_private::formatters::NSMachPortSummaryProvider(), lldb_private::formatters::NSNotificationSummaryProvider(), lldb_private::formatters::NSNumberSummaryProvider(), lldb_private::formatters::NSSetSummaryProvider(), lldb_private::formatters::NSStringSummaryProvider(), lldb_private::formatters::NSTimeZoneSummaryProvider(), lldb_private::formatters::NSURLSummaryProvider(), lldb_private::formatters::ObjCBooleanSummaryProvider(), lldb_private::formatters::ObjCClassSummaryProvider(), and lldb_private::ValueObjectChild::UpdateValue().

◆ GetQualifiedRepresentationIfAvailable()

ValueObjectSP ValueObject::GetQualifiedRepresentationIfAvailable ( lldb::DynamicValueType  dynValue,
bool  synthValue 
)

◆ GetQualifiedTypeName()

virtual ConstString lldb_private::ValueObject::GetQualifiedTypeName ( )
inlinevirtual

◆ GetRoot()

ValueObject * ValueObject::GetRoot ( )

◆ GetSP()

lldb::ValueObjectSP lldb_private::ValueObject::GetSP ( )
inline

Definition at line 555 of file ValueObject.h.

References lldb_private::ClusterManager< T >::GetSharedPointer(), and m_manager.

Referenced by lldb_private::formatters::BlockPointerSummaryProvider(), lldb_private::ValueObjectConstResultImpl::Cast(), lldb_private::ValueObjectCast::Create(), lldb::SBTypeSummary::CreateWithCallback(), Dereference(), lldb_private::ScriptSummaryFormat::FormatObject(), lldb_private::ScriptedSyntheticChildren::FrontEnd::FrontEnd(), lldb_private::ValueObjectSynthetic::GetChildAtIndex(), GetChildAtIndex(), GetChildAtIndexPath(), GetChildAtNamePath(), lldb_private::ValueObjectRegisterSet::GetChildMemberWithName(), GetChildMemberWithName(), lldb_private::ValueObjectSynthetic::GetDynamicValue(), lldb_private::ValueObjectConstResult::GetDynamicValue(), GetDynamicValue(), lldb_private::CXXSyntheticChildren::GetFrontEnd(), lldb_private::ValueObjectSynthetic::GetNonSyntheticValue(), GetNonSyntheticValue(), GetQualifiedRepresentationIfAvailable(), lldb_private::ValueObjectDynamicValue::GetStaticValue(), lldb_private::ValueObjectSynthetic::GetStaticValue(), GetStaticValue(), GetSyntheticArrayMember(), GetSyntheticBase(), GetSyntheticBitFieldChild(), GetSyntheticChildAtOffset(), GetSyntheticValue(), GetValueForExpressionPath_Impl(), lldb_private::formatters::LibStdcppUniquePointerSummaryProvider(), lldb_private::formatters::ObjCBOOLSummaryProvider(), lldb_private::formatters::VectorIteratorSyntheticFrontEnd::Update(), and lldb_private::formatters::VectorTypeSummaryProvider().

◆ GetStaticValue()

virtual lldb::ValueObjectSP lldb_private::ValueObject::GetStaticValue ( )
inlinevirtual

◆ GetSummaryAsCString() [1/4]

const char * ValueObject::GetSummaryAsCString ( lldb::LanguageType  lang = lldb::eLanguageTypeUnknown)

◆ GetSummaryAsCString() [2/4]

bool ValueObject::GetSummaryAsCString ( std::string destination,
const TypeSummaryOptions options 
)

Definition at line 641 of file ValueObject.cpp.

References GetSummaryAsCString(), and GetSummaryFormat().

◆ GetSummaryAsCString() [3/4]

bool ValueObject::GetSummaryAsCString ( TypeSummaryImpl summary_ptr,
std::string destination,
const TypeSummaryOptions options 
)

◆ GetSummaryAsCString() [4/4]

bool ValueObject::GetSummaryAsCString ( TypeSummaryImpl summary_ptr,
std::string destination,
lldb::LanguageType  lang = lldb::eLanguageTypeUnknown 
)

Definition at line 585 of file ValueObject.cpp.

References GetSummaryAsCString().

◆ GetSummaryFormat()

lldb::TypeSummaryImplSP lldb_private::ValueObject::GetSummaryFormat ( )
inline

◆ GetSymbolContextScope()

SymbolContextScope * ValueObject::GetSymbolContextScope ( )
virtual

◆ GetSyntheticArrayMember()

ValueObjectSP ValueObject::GetSyntheticArrayMember ( size_t  index,
bool  can_create 
)

◆ GetSyntheticBase()

ValueObjectSP ValueObject::GetSyntheticBase ( uint32_t  offset,
const CompilerType type,
bool  can_create,
ConstString  name_const_str = ConstString() 
)
virtual

◆ GetSyntheticBitFieldChild()

ValueObjectSP ValueObject::GetSyntheticBitFieldChild ( uint32_t  from,
uint32_t  to,
bool  can_create 
)

◆ GetSyntheticChild()

ValueObjectSP ValueObject::GetSyntheticChild ( ConstString  key) const

◆ GetSyntheticChildAtOffset()

ValueObjectSP ValueObject::GetSyntheticChildAtOffset ( uint32_t  offset,
const CompilerType type,
bool  can_create,
ConstString  name_const_str = ConstString() 
)
virtual

◆ GetSyntheticChildren()

lldb::SyntheticChildrenSP lldb_private::ValueObject::GetSyntheticChildren ( )
inline

Definition at line 744 of file ValueObject.h.

References m_synthetic_children_sp, and UpdateFormatsIfNeeded().

◆ GetSyntheticExpressionPathChild()

ValueObjectSP ValueObject::GetSyntheticExpressionPathChild ( const char *  expression,
bool  can_create 
)

◆ GetSyntheticValue()

ValueObjectSP ValueObject::GetSyntheticValue ( )

◆ GetTargetSP()

lldb::TargetSP lldb_private::ValueObject::GetTargetSP ( ) const
inline

◆ GetThreadSP()

lldb::ThreadSP lldb_private::ValueObject::GetThreadSP ( ) const
inline

◆ GetTypeImpl()

virtual TypeImpl lldb_private::ValueObject::GetTypeImpl ( )
inlinevirtual

◆ GetTypeInfo()

virtual uint32_t lldb_private::ValueObject::GetTypeInfo ( CompilerType pointee_or_element_compiler_type = nullptr)
inlinevirtual

◆ GetTypeName()

virtual ConstString lldb_private::ValueObject::GetTypeName ( )
inlinevirtual

◆ GetUpdatePoint() [1/2]

EvaluationPoint& lldb_private::ValueObject::GetUpdatePoint ( )
inline

Definition at line 328 of file ValueObject.h.

References m_update_point.

◆ GetUpdatePoint() [2/2]

const EvaluationPoint& lldb_private::ValueObject::GetUpdatePoint ( ) const
inline

Definition at line 326 of file ValueObject.h.

References m_update_point.

Referenced by MaybeCalculateCompleteType().

◆ GetValue() [1/2]

Value& lldb_private::ValueObject::GetValue ( )
inline

Definition at line 499 of file ValueObject.h.

References m_value.

◆ GetValue() [2/2]

const Value& lldb_private::ValueObject::GetValue ( ) const
inline

◆ GetValueAsCString() [1/3]

const char * ValueObject::GetValueAsCString ( )
virtual

◆ GetValueAsCString() [2/3]

bool ValueObject::GetValueAsCString ( const lldb_private::TypeFormatImpl format,
std::string destination 
)
virtual

◆ GetValueAsCString() [3/3]

bool ValueObject::GetValueAsCString ( lldb::Format  format,
std::string destination 
)

Definition at line 1044 of file ValueObject.cpp.

References GetValueAsCString().

◆ GetValueAsSigned()

int64_t ValueObject::GetValueAsSigned ( int64_t  fail_value,
bool *  success = nullptr 
)
virtual

◆ GetValueAsUnsigned()

uint64_t ValueObject::GetValueAsUnsigned ( uint64_t  fail_value,
bool *  success = nullptr 
)
virtual

Definition at line 1090 of file ValueObject.cpp.

References CanProvideValue(), lldb_private::Scalar::MakeUnsigned(), ResolveValue(), and lldb_private::Scalar::ULongLong().

Referenced by lldb_private::formatters::CFBagSummaryProvider(), lldb_private::formatters::CFBinaryHeapSummaryProvider(), lldb_private::formatters::CFBitVectorSummaryProvider(), lldb_private::AppleObjCRuntimeV1::ClassDescriptorV1::ClassDescriptorV1(), CreateConstantValue(), DerefToNSErrorPointer(), ExtractFields(), GetExpressionPath(), GetVTableAddress(), lldb_private::ObjCLanguage::IsNilReference(), lldb_private::formatters::LibcxxContainerSummaryProvider(), lldb_private::formatters::NSArraySummaryProvider(), lldb_private::formatters::NSAttributedStringSummaryProvider(), lldb_private::formatters::NSBundleSummaryProvider(), lldb_private::formatters::NSDataSummaryProvider(), lldb_private::formatters::NSDateSummaryProvider(), lldb_private::formatters::NSDecimalNumberSummaryProvider(), lldb_private::formatters::NSDictionarySummaryProvider(), lldb_private::formatters::NSIndexSetSummaryProvider(), lldb_private::formatters::NSMachPortSummaryProvider(), lldb_private::formatters::NSNotificationSummaryProvider(), lldb_private::formatters::NSNumberSummaryProvider(), lldb_private::formatters::NSSetSummaryProvider(), lldb_private::formatters::NSStringSummaryProvider(), lldb_private::formatters::NSTimeZoneSummaryProvider(), lldb_private::formatters::NSURLSummaryProvider(), lldb_private::formatters::ObjCBooleanSummaryProvider(), lldb_private::formatters::ObjCClassSummaryProvider(), lldb_private::formatters::ObjCSELSummaryProvider(), lldb_private::ValueObjectDynamicValue::SetData(), and lldb_private::ValueObjectDynamicValue::SetValueFromCString().

◆ GetValueDidChange()

bool lldb_private::ValueObject::GetValueDidChange ( )
inline

◆ GetValueForExpressionPath()

ValueObjectSP ValueObject::GetValueForExpressionPath ( llvm::StringRef  expression,
ExpressionPathScanEndReason reason_to_stop = nullptr,
ExpressionPathEndResultType final_value_type = nullptr,
const GetValueForExpressionPathOptions options = GetValueForExpressionPathOptions::DefaultOptions(),
ExpressionPathAftermath final_task_on_target = nullptr 
)

◆ GetValueForExpressionPath_Impl()

ValueObjectSP ValueObject::GetValueForExpressionPath_Impl ( llvm::StringRef  expression_cstr,
ExpressionPathScanEndReason reason_to_stop,
ExpressionPathEndResultType final_value_type,
const GetValueForExpressionPathOptions options,
ExpressionPathAftermath final_task_on_target 
)
private

Definition at line 2056 of file ValueObject.cpp.

References lldb_private::Flags::AllClear(), lldb_private::ValueObject::GetValueForExpressionPathOptions::Both, eExpressionPathAftermathDereference, eExpressionPathAftermathNothing, eExpressionPathEndResultTypeBitfield, eExpressionPathEndResultTypeBoundedRange, eExpressionPathEndResultTypeInvalid, eExpressionPathEndResultTypePlain, eExpressionPathEndResultTypeUnboundedRange, eExpressionPathScanEndReasonArrayRangeOperatorMet, eExpressionPathScanEndReasonArrowInsteadOfDot, eExpressionPathScanEndReasonBitfieldRangeOperatorMet, eExpressionPathScanEndReasonDereferencingFailed, eExpressionPathScanEndReasonDotInsteadOfArrow, eExpressionPathScanEndReasonEmptyRangeNotAllowed, eExpressionPathScanEndReasonEndOfString, eExpressionPathScanEndReasonFragileIVarNotAllowed, eExpressionPathScanEndReasonNoSuchChild, eExpressionPathScanEndReasonRangeOperatorInvalid, eExpressionPathScanEndReasonRangeOperatorNotAllowed, eExpressionPathScanEndReasonSyntheticValueMissing, eExpressionPathScanEndReasonUnexpectedSymbol, lldb::eLanguageTypeObjC, error(), lldb_private::ValueObject::GetValueForExpressionPathOptions::FromSynthetic, GetSP(), lldb_private::CompilerType::GetTypeInfo(), lldb_private::ValueObject::GetValueForExpressionPathOptions::m_allow_bitfields_syntax, lldb_private::ValueObject::GetValueForExpressionPathOptions::m_check_dot_vs_arrow_syntax, lldb_private::ValueObject::GetValueForExpressionPathOptions::m_no_fragile_ivar, lldb_private::ValueObject::GetValueForExpressionPathOptions::m_synthetic_children_traversal, lldb_private::ValueObject::GetValueForExpressionPathOptions::None, lldb_private::Flags::Reset(), lldb_private::ConstString::SetString(), lldb_private::swap(), lldb_private::Flags::Test(), and lldb_private::ValueObject::GetValueForExpressionPathOptions::ToSynthetic.

Referenced by GetValueForExpressionPath().

◆ GetValueFormat()

lldb::TypeFormatImplSP lldb_private::ValueObject::GetValueFormat ( )
inline

Definition at line 732 of file ValueObject.h.

References m_type_format_sp, and UpdateFormatsIfNeeded().

◆ GetValueIsValid()

bool lldb_private::ValueObject::GetValueIsValid ( ) const
inline

Definition at line 545 of file ValueObject.h.

References m_flags, and lldb_private::ValueObject::Bitflags::m_value_is_valid.

Referenced by UpdateValueIfNeeded().

◆ GetValueType()

virtual lldb::ValueType lldb_private::ValueObject::GetValueType ( ) const
pure virtual

◆ GetVariable()

virtual lldb::VariableSP lldb_private::ValueObject::GetVariable ( )
inlinevirtual

◆ HasDynamicValueTypeInfo()

virtual bool lldb_private::ValueObject::HasDynamicValueTypeInfo ( )
inlineprotectedvirtual

Reimplemented in lldb_private::ValueObjectDynamicValue.

Definition at line 960 of file ValueObject.h.

Referenced by GetDynamicValueType().

◆ HasSpecialPrintableRepresentation()

bool ValueObject::HasSpecialPrintableRepresentation ( ValueObjectRepresentationStyle  val_obj_display,
lldb::Format  custom_format 
)

◆ HasSyntheticValue()

bool ValueObject::HasSyntheticValue ( )
virtual

◆ IsArrayItemForPointer()

virtual bool lldb_private::ValueObject::IsArrayItemForPointer ( )
inlinevirtual

◆ IsArrayType()

virtual bool lldb_private::ValueObject::IsArrayType ( )
inlinevirtual

◆ IsBaseClass() [1/2]

virtual bool lldb_private::ValueObject::IsBaseClass ( )
inlinevirtual

◆ IsBaseClass() [2/2]

bool ValueObject::IsBaseClass ( uint32_t depth)

Definition at line 1878 of file ValueObject.cpp.

References GetParent(), and IsBaseClass().

◆ IsBitfield()

bool lldb_private::ValueObject::IsBitfield ( )
inline

Definition at line 428 of file ValueObject.h.

References GetBitfieldBitOffset(), and GetBitfieldBitSize().

Referenced by CreateConstantValue(), DumpValue(), and GetAddressOf().

◆ IsChecksumEmpty()

bool lldb_private::ValueObject::IsChecksumEmpty ( )
inlineprotected

Definition at line 998 of file ValueObject.h.

References m_value_checksum.

Referenced by UpdateValueIfNeeded().

◆ IsCStringContainer()

bool ValueObject::IsCStringContainer ( bool  check_pointer = false)

Returns true if this is a char* or a char[] if it is a char* and check_pointer is true, it also checks that the pointer is valid.

Definition at line 646 of file ValueObject.cpp.

References lldb_private::Flags::AnySet(), lldb_private::eAddressTypeInvalid, GetPointerValue(), GetTypeInfo(), lldb_private::CompilerType::IsCharType(), LLDB_INVALID_ADDRESS, and lldb_private::Flags::Test().

Referenced by DumpPrintableRepresentation(), and HasSpecialPrintableRepresentation().

◆ IsDereferenceOfParent()

virtual bool lldb_private::ValueObject::IsDereferenceOfParent ( )
inlinevirtual

Reimplemented in lldb_private::ValueObjectChild.

Definition at line 402 of file ValueObject.h.

Referenced by GetExpressionPath().

◆ IsDynamic()

virtual bool lldb_private::ValueObject::IsDynamic ( )
inlinevirtual

◆ IsInScope()

virtual bool lldb_private::ValueObject::IsInScope ( )
inlinevirtual

◆ IsIntegerType()

bool lldb_private::ValueObject::IsIntegerType ( bool &  is_signed)
inline

◆ IsLogicalTrue()

bool ValueObject::IsLogicalTrue ( Status error)
virtual

◆ IsNilReference()

bool ValueObject::IsNilReference ( )

◆ IsPointerOrReferenceType()

virtual bool lldb_private::ValueObject::IsPointerOrReferenceType ( )
inlinevirtual

◆ IsPointerType()

virtual bool lldb_private::ValueObject::IsPointerType ( )
inlinevirtual

◆ IsPossibleDynamicType()

bool ValueObject::IsPossibleDynamicType ( )
virtual

◆ IsRuntimeSupportValue()

bool ValueObject::IsRuntimeSupportValue ( )
virtual

◆ IsScalarType()

virtual bool lldb_private::ValueObject::IsScalarType ( )
inlinevirtual

◆ IsSynthetic()

virtual bool lldb_private::ValueObject::IsSynthetic ( )
inlinevirtual

◆ IsSyntheticChildrenGenerated()

virtual bool lldb_private::ValueObject::IsSyntheticChildrenGenerated ( )
inlinevirtual

◆ IsUninitializedReference()

bool ValueObject::IsUninitializedReference ( )

◆ MaybeCalculateCompleteType()

CompilerType ValueObject::MaybeCalculateCompleteType ( )
privatevirtual

◆ MightHaveChildren()

bool ValueObject::MightHaveChildren ( )
virtual

Find out if a ValueObject might have children.

This call is much more efficient than CalculateNumChildren() as it doesn't need to complete the underlying type. This is designed to be used in a UI environment in order to detect if the disclosure triangle should be displayed or not.

This function returns true for class, union, structure, pointers, references, arrays and more. Again, it does so without doing any expensive type completion.

Returns
Returns true if the ValueObject might have children, or false otherwise.

Reimplemented in lldb_private::ValueObjectSynthetic.

Definition at line 513 of file ValueObject.cpp.

References GetNumChildren(), and GetTypeInfo().

Referenced by lldb_private::ValueObjectPrinter::ShouldPrintEmptyBrackets().

◆ NeedsUpdating()

bool lldb_private::ValueObject::NeedsUpdating ( )
inline

◆ operator=()

const ValueObject& lldb_private::ValueObject::operator= ( const ValueObject )
privatedelete

◆ Persist()

ValueObjectSP ValueObject::Persist ( )

◆ ReadPointedString()

std::pair< size_t, bool > ValueObject::ReadPointedString ( lldb::DataBufferSP &  buffer_sp,
Status error,
uint32_t  max_length = 0,
bool  honor_array = true,
lldb::Format  item_format = lldb::eFormatCharArray 
)

◆ ResolveValue()

bool ValueObject::ResolveValue ( Scalar scalar)
virtual

◆ SetAddressTypeOfChildren()

void lldb_private::ValueObject::SetAddressTypeOfChildren ( AddressType  at)
inline

◆ SetData()

bool ValueObject::SetData ( DataExtractor data,
Status error 
)
virtual

◆ SetFormat()

virtual void lldb_private::ValueObject::SetFormat ( lldb::Format  format)
inlinevirtual

◆ SetHasCompleteType()

void lldb_private::ValueObject::SetHasCompleteType ( )
inline

◆ SetIsConstant()

void lldb_private::ValueObject::SetIsConstant ( )
inline

◆ SetLanguageFlags()

virtual void lldb_private::ValueObject::SetLanguageFlags ( uint64_t  flags)
inlinevirtual

◆ SetLiveAddress()

virtual void lldb_private::ValueObject::SetLiveAddress ( lldb::addr_t  addr = LLDB_INVALID_ADDRESS,
AddressType  address_type = eAddressTypeLoad 
)
inlinevirtual

Reimplemented in lldb_private::ValueObjectConstResult.

Definition at line 618 of file ValueObject.h.

◆ SetName()

void lldb_private::ValueObject::SetName ( ConstString  name)
inline

◆ SetNeedsUpdate()

void ValueObject::SetNeedsUpdate ( )

◆ SetNumChildren()

void ValueObject::SetNumChildren ( size_t  num_children)
protected

◆ SetPreferredDisplayLanguage()

void lldb_private::ValueObject::SetPreferredDisplayLanguage ( lldb::LanguageType  lt)
inline

◆ SetPreferredDisplayLanguageIfNeeded()

void ValueObject::SetPreferredDisplayLanguageIfNeeded ( lldb::LanguageType  lt)
protected

◆ SetSummaryFormat()

void lldb_private::ValueObject::SetSummaryFormat ( lldb::TypeSummaryImplSP  format)
inline

◆ SetSyntheticChildren()

void lldb_private::ValueObject::SetSyntheticChildren ( const lldb::SyntheticChildrenSP &  synth_sp)
inline

◆ SetSyntheticChildrenGenerated()

virtual void lldb_private::ValueObject::SetSyntheticChildrenGenerated ( bool  b)
inlinevirtual

◆ SetValueDidChange()

void lldb_private::ValueObject::SetValueDidChange ( bool  value_changed)
inlineprotected

◆ SetValueFormat()

void lldb_private::ValueObject::SetValueFormat ( lldb::TypeFormatImplSP  format)
inline

◆ SetValueFromCString()

bool ValueObject::SetValueFromCString ( const char *  value_str,
Status error 
)
virtual

◆ SetValueIsValid()

void lldb_private::ValueObject::SetValueIsValid ( bool  valid)
inlineprotected

◆ UpdateChildrenAddressType()

void lldb_private::ValueObject::UpdateChildrenAddressType ( )
inlineprivate

Definition at line 1007 of file ValueObject.h.

References DoUpdateChildrenAddressType(), and GetRoot().

Referenced by UpdateValueIfNeeded().

◆ UpdateFormatsIfNeeded()

bool ValueObject::UpdateFormatsIfNeeded ( )

◆ UpdateValue()

virtual bool lldb_private::ValueObject::UpdateValue ( )
protectedpure virtual

◆ UpdateValueIfNeeded()

bool ValueObject::UpdateValueIfNeeded ( bool  update_format = true)

Definition at line 111 of file ValueObject.cpp.

References CanProvideValue(), lldb_private::DataExtractor::Checksum(), lldb_private::Status::Clear(), ClearUserVisibleData(), eClearUserVisibleDataItemsDescription, eClearUserVisibleDataItemsSummary, eClearUserVisibleDataItemsValue, GetIsConstant(), GetValueIsValid(), IsChecksumEmpty(), IsInScope(), m_data, m_error, m_flags, m_old_value_str, lldb_private::ValueObject::Bitflags::m_old_value_valid, m_update_point, m_value_checksum, lldb_private::ValueObject::Bitflags::m_value_did_change, m_value_str, NeedsUpdating(), lldb_private::Status::SetErrorString(), lldb_private::ValueObject::EvaluationPoint::SetUpdated(), SetValueDidChange(), SetValueIsValid(), lldb_private::Status::Success(), UpdateChildrenAddressType(), UpdateFormatsIfNeeded(), and UpdateValue().

Referenced by lldb_private::ValueObjectDynamicValue::CalculateNumChildren(), lldb_private::ValueObjectSynthetic::CalculateNumChildren(), lldb_private::ValueObjectSynthetic::CanProvideValue(), lldb_private::ValueObjectSynthetic::CopyValueData(), lldb_private::ValueObjectConstResultImpl::CreateChildAtIndex(), CreateConstantValue(), lldb_private::ValueObjectSynthetic::DoesProvideSyntheticValue(), GetAddressOf(), lldb_private::ValueObjectDynamicValue::GetByteSize(), lldb_private::ValueObjectSynthetic::GetChildAtIndex(), GetChildAtIndex(), lldb_private::ValueObjectSynthetic::GetChildMemberWithName(), GetChildMemberWithName(), lldb_private::ValueObjectDynamicValue::GetCompilerTypeImpl(), GetData(), GetDataExtractor(), lldb_private::ValueObjectDynamicValue::GetDisplayTypeName(), GetError(), GetExpressionPath(), lldb_private::ValueObjectSynthetic::GetIndexOfChildWithName(), GetLocationAsCStringImpl(), GetNumChildren(), GetObjectDescription(), GetPointerValue(), lldb_private::ValueObjectDynamicValue::GetQualifiedTypeName(), GetSummaryAsCString(), lldb_private::ValueObjectDynamicValue::GetTypeImpl(), lldb_private::ValueObjectDynamicValue::GetTypeName(), GetValueAsCString(), Persist(), lldb_private::ValueObjectRegister::ResolveValue(), ResolveValue(), lldb_private::ValueObjectVariable::SetData(), lldb_private::ValueObjectDynamicValue::SetData(), SetData(), lldb_private::ValueObjectVariable::SetValueFromCString(), lldb_private::ValueObjectDynamicValue::SetValueFromCString(), SetValueFromCString(), lldb_private::ValueObjectCast::UpdateValue(), lldb_private::ValueObjectChild::UpdateValue(), lldb_private::ValueObjectDynamicValue::UpdateValue(), lldb_private::ValueObjectSynthetic::UpdateValue(), and lldb_private::ValueObjectRecognizerSynthesizedValue::UpdateValue().

◆ ValueUpdated()

virtual void lldb_private::ValueObject::ValueUpdated ( )
inlinevirtual

Friends And Related Function Documentation

◆ ExpressionVariable

friend class ExpressionVariable
friend

Definition at line 932 of file ValueObject.h.

◆ Target

friend class Target
friend

Definition at line 933 of file ValueObject.h.

◆ ValueObjectChild

friend class ValueObjectChild
friend

◆ ValueObjectConstResultImpl

friend class ValueObjectConstResultImpl
friend

Definition at line 934 of file ValueObject.h.

◆ ValueObjectSynthetic

friend class ValueObjectSynthetic
friend

Definition at line 935 of file ValueObject.h.

Referenced by CalculateSyntheticValue().

Member Data Documentation

◆ m_addr_of_valobj_sp

lldb::ValueObjectSP lldb_private::ValueObject::m_addr_of_valobj_sp
protected

We have to hold onto a shared pointer to this one because it is created as an independent ValueObjectConstResult, which isn't managed by us.

Definition at line 887 of file ValueObject.h.

Referenced by AddressOf().

◆ m_address_type_of_ptr_or_ref_children

AddressType lldb_private::ValueObject::m_address_type_of_ptr_or_ref_children = eAddressTypeInvalid
protected

Definition at line 896 of file ValueObject.h.

Referenced by GetAddressTypeOfChildren(), and SetAddressTypeOfChildren().

◆ m_children

ChildrenManager lldb_private::ValueObject::m_children
protected

◆ m_data

DataExtractor lldb_private::ValueObject::m_data
protected

◆ m_deref_valobj

ValueObject* lldb_private::ValueObject::m_deref_valobj = nullptr
protected

Definition at line 883 of file ValueObject.h.

Referenced by Dereference().

◆ m_dynamic_value

ValueObject* lldb_private::ValueObject::m_dynamic_value = nullptr
protected

◆ m_error

Status lldb_private::ValueObject::m_error
protected

◆ m_flags

struct lldb_private::ValueObject::Bitflags lldb_private::ValueObject::m_flags
protected

◆ m_format

lldb::Format lldb_private::ValueObject::m_format = lldb::eFormatDefault
protected

Definition at line 889 of file ValueObject.h.

Referenced by GetFormat(), and SetFormat().

◆ m_id

UserID lldb_private::ValueObject::m_id
protected

Unique identifier for every value object.

Definition at line 905 of file ValueObject.h.

Referenced by GetID().

◆ m_language_flags

uint64_t lldb_private::ValueObject::m_language_flags = 0
protected

Definition at line 902 of file ValueObject.h.

Referenced by GetLanguageFlags(), and SetLanguageFlags().

◆ m_last_format

lldb::Format lldb_private::ValueObject::m_last_format = lldb::eFormatDefault
protected

Definition at line 890 of file ValueObject.h.

Referenced by GetValueAsCString().

◆ m_last_format_mgr_revision

uint32_t lldb_private::ValueObject::m_last_format_mgr_revision = 0
protected

Definition at line 891 of file ValueObject.h.

Referenced by ClearDynamicTypeInformation(), and UpdateFormatsIfNeeded().

◆ m_location_str

std::string lldb_private::ValueObject::m_location_str
protected

Cached location string that will get cleared if/when the value is updated.

Definition at line 861 of file ValueObject.h.

Referenced by ClearUserVisibleData(), and GetLocationAsCStringImpl().

◆ m_manager

ValueObjectManager* lldb_private::ValueObject::m_manager = nullptr
protected

This object is managed by the root object (any ValueObject that gets created without a parent.) The manager gets passed through all the generations of dependent objects, and will keep the whole cluster of objects alive as long as a shared pointer to any of them has been handed out.

Shared pointers to value objects must always be made with the GetSP method.

Definition at line 876 of file ValueObject.h.

Referenced by GetManager(), GetSP(), and ValueObject().

◆ m_name

ConstString lldb_private::ValueObject::m_name
protected

◆ m_object_desc_str

std::string lldb_private::ValueObject::m_object_desc_str
protected

Cached result of the "object printer".

This differs from the summary in that the summary is consed up by us, the object_desc_string is builtin.

Definition at line 866 of file ValueObject.h.

Referenced by ClearUserVisibleData(), and GetObjectDescription().

◆ m_old_value_str

std::string lldb_private::ValueObject::m_old_value_str
protected

Cached old value string from the last time the value was gotten.

Definition at line 859 of file ValueObject.h.

Referenced by GetValueAsCString(), and UpdateValueIfNeeded().

◆ m_override_type

CompilerType lldb_private::ValueObject::m_override_type
protected

If the type of the value object should be overridden, the type to impose.

Definition at line 868 of file ValueObject.h.

Referenced by ClearDynamicTypeInformation(), and MaybeCalculateCompleteType().

◆ m_parent

ValueObject* lldb_private::ValueObject::m_parent = nullptr
protected

The parent value object, or nullptr if this has no parent.

Definition at line 840 of file ValueObject.h.

Referenced by lldb_private::ValueObjectDynamicValue::CalculateNumChildren(), lldb_private::ValueObjectRecognizerSynthesizedValue::CalculateNumChildren(), lldb_private::ValueObjectSynthetic::CanProvideValue(), lldb_private::ValueObjectChild::CanUpdateWithInvalidExecutionContext(), lldb_private::ValueObjectSynthetic::CreateSynthFilter(), FollowParentChain(), lldb_private::ValueObjectDynamicValue::GetByteSize(), lldb_private::ValueObjectSynthetic::GetByteSize(), lldb_private::ValueObjectRecognizerSynthesizedValue::GetByteSize(), lldb_private::ValueObjectDynamicValue::GetCompilerTypeImpl(), lldb_private::ValueObjectSynthetic::GetCompilerTypeImpl(), lldb_private::ValueObjectRecognizerSynthesizedValue::GetCompilerTypeImpl(), lldb_private::ValueObjectDynamicValue::GetDeclaration(), lldb_private::ValueObjectSynthetic::GetDeclaration(), lldb_private::ValueObjectDynamicValue::GetDisplayTypeName(), lldb_private::ValueObjectSynthetic::GetDisplayTypeName(), lldb_private::ValueObjectSynthetic::GetDynamicValue(), lldb_private::ValueObjectSynthetic::GetDynamicValueType(), GetDynamicValueType(), GetFormat(), lldb_private::ValueObjectDynamicValue::GetLanguageFlags(), lldb_private::ValueObjectSynthetic::GetLanguageFlags(), lldb_private::ValueObjectSynthetic::GetNonSyntheticValue(), lldb_private::ValueObjectCast::GetParent(), lldb_private::ValueObjectDynamicValue::GetParent(), lldb_private::ValueObjectSynthetic::GetParent(), GetParent(), lldb_private::ValueObjectDynamicValue::GetPreferredDisplayLanguage(), lldb_private::ValueObjectSynthetic::GetPreferredDisplayLanguage(), lldb_private::ValueObjectDynamicValue::GetQualifiedTypeName(), lldb_private::ValueObjectSynthetic::GetQualifiedTypeName(), GetRoot(), lldb_private::ValueObjectDynamicValue::GetStaticValue(), lldb_private::ValueObjectSynthetic::GetStaticValue(), GetSymbolContextScope(), lldb_private::ValueObjectDynamicValue::GetTypeImpl(), lldb_private::ValueObjectDynamicValue::GetTypeName(), lldb_private::ValueObjectSynthetic::GetTypeName(), lldb_private::ValueObjectCast::GetValueType(), lldb_private::ValueObjectChild::GetValueType(), lldb_private::ValueObjectDynamicValue::GetValueType(), lldb_private::ValueObjectSynthetic::GetValueType(), lldb_private::ValueObjectDynamicValue::GetVariable(), lldb_private::ValueObjectDynamicValue::IsBaseClass(), lldb_private::ValueObjectSynthetic::IsDynamic(), lldb_private::ValueObjectCast::IsInScope(), lldb_private::ValueObjectDynamicValue::IsInScope(), lldb_private::ValueObjectSynthetic::IsInScope(), lldb_private::ValueObjectDynamicValue::IsSyntheticChildrenGenerated(), lldb_private::ValueObjectSynthetic::IsSyntheticChildrenGenerated(), lldb_private::ValueObjectDynamicValue::SetData(), lldb_private::ValueObjectSynthetic::SetFormat(), lldb_private::ValueObjectDynamicValue::SetLanguageFlags(), lldb_private::ValueObjectSynthetic::SetLanguageFlags(), lldb_private::ValueObjectDynamicValue::SetPreferredDisplayLanguage(), lldb_private::ValueObjectSynthetic::SetPreferredDisplayLanguage(), lldb_private::ValueObjectDynamicValue::SetSyntheticChildrenGenerated(), lldb_private::ValueObjectSynthetic::SetSyntheticChildrenGenerated(), lldb_private::ValueObjectDynamicValue::SetValueFromCString(), lldb_private::ValueObjectSynthetic::SetValueFromCString(), lldb_private::ValueObjectCast::UpdateValue(), lldb_private::ValueObjectChild::UpdateValue(), lldb_private::ValueObjectDynamicValue::UpdateValue(), lldb_private::ValueObjectSynthetic::UpdateValue(), lldb_private::ValueObjectRecognizerSynthesizedValue::UpdateValue(), and lldb_private::ValueObjectSynthetic::ValueObjectSynthetic().

◆ m_preferred_display_language

lldb::LanguageType lldb_private::ValueObject::m_preferred_display_language = lldb::eLanguageTypeUnknown
protected

◆ m_root

ValueObject* lldb_private::ValueObject::m_root = nullptr
protected

The root of the hierarchy for this ValueObject (or nullptr if never calculated).

Definition at line 843 of file ValueObject.h.

Referenced by GetRoot().

◆ m_summary_str

std::string lldb_private::ValueObject::m_summary_str
protected

Cached summary string that will get cleared if/when the value is updated.

Definition at line 863 of file ValueObject.h.

Referenced by ClearUserVisibleData(), and GetSummaryAsCString().

◆ m_synthetic_children

std::map<ConstString, ValueObject *> lldb_private::ValueObject::m_synthetic_children
protected

Definition at line 879 of file ValueObject.h.

Referenced by AddSyntheticChild(), and GetSyntheticChild().

◆ m_synthetic_children_sp

lldb::SyntheticChildrenSP lldb_private::ValueObject::m_synthetic_children_sp
protected

◆ m_synthetic_value

ValueObject* lldb_private::ValueObject::m_synthetic_value = nullptr
protected

◆ m_type_format_sp

lldb::TypeFormatImplSP lldb_private::ValueObject::m_type_format_sp
protected

Definition at line 893 of file ValueObject.h.

Referenced by GetValueAsCString(), GetValueFormat(), and SetValueFormat().

◆ m_type_summary_sp

lldb::TypeSummaryImplSP lldb_private::ValueObject::m_type_summary_sp
protected

Definition at line 892 of file ValueObject.h.

Referenced by GetSummaryFormat(), and SetSummaryFormat().

◆ m_update_point

EvaluationPoint lldb_private::ValueObject::m_update_point
protected

Stores both the stop id and the full context at which this value was last updated.

When we are asked to update the value object, we check whether the context & stop id are the same before updating.

Definition at line 847 of file ValueObject.h.

Referenced by GetExecutionContextRef(), GetFrameSP(), GetIsConstant(), GetProcessSP(), GetTargetSP(), GetThreadSP(), GetUpdatePoint(), NeedsUpdating(), SetIsConstant(), SetNeedsUpdate(), lldb_private::ValueObjectCast::UpdateValue(), lldb_private::ValueObjectDynamicValue::UpdateValue(), and UpdateValueIfNeeded().

◆ m_user_id_of_forced_summary

ProcessModID lldb_private::ValueObject::m_user_id_of_forced_summary
protected

Definition at line 895 of file ValueObject.h.

◆ m_value

Value lldb_private::ValueObject::m_value
protected

◆ m_value_checksum

llvm::SmallVector<uint8_t, 16> lldb_private::ValueObject::m_value_checksum
protected

Definition at line 898 of file ValueObject.h.

Referenced by IsChecksumEmpty(), and UpdateValueIfNeeded().

◆ m_value_str

std::string lldb_private::ValueObject::m_value_str
protected

Cached value string that will get cleared if/when the value is updated.

Definition at line 857 of file ValueObject.h.

Referenced by ClearUserVisibleData(), GetValueAsCString(), and UpdateValueIfNeeded().


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