ValueObjectRegister.h [plain text]
#ifndef liblldb_ValueObjectRegister_h_
#define liblldb_ValueObjectRegister_h_
#include "lldb/lldb-private.h"
#include "lldb/Core/RegisterValue.h"
#include "lldb/Core/ValueObject.h"
namespace lldb_private {
class ValueObjectRegisterContext : public ValueObject
{
public:
virtual
~ValueObjectRegisterContext();
virtual size_t
GetByteSize();
virtual clang::ASTContext *
GetClangAST ();
virtual lldb::clang_type_t
GetClangType ();
virtual lldb::ValueType
GetValueType () const
{
return lldb::eValueTypeRegisterSet;
}
virtual ConstString
GetTypeName();
virtual uint32_t
CalculateNumChildren();
virtual ValueObject *
CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
protected:
virtual bool
UpdateValue ();
lldb::RegisterContextSP m_reg_ctx_sp;
private:
ValueObjectRegisterContext (ValueObject &parent, lldb::RegisterContextSP ®_ctx_sp);
DISALLOW_COPY_AND_ASSIGN (ValueObjectRegisterContext);
};
class ValueObjectRegisterSet : public ValueObject
{
public:
static lldb::ValueObjectSP
Create (ExecutionContextScope *exe_scope, lldb::RegisterContextSP ®_ctx_sp, uint32_t set_idx);
virtual
~ValueObjectRegisterSet();
virtual size_t
GetByteSize();
virtual clang::ASTContext *
GetClangAST ();
virtual lldb::clang_type_t
GetClangType ();
virtual lldb::ValueType
GetValueType () const
{
return lldb::eValueTypeRegisterSet;
}
virtual ConstString
GetTypeName();
virtual uint32_t
CalculateNumChildren();
virtual ValueObject *
CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
virtual lldb::ValueObjectSP
GetChildMemberWithName (const ConstString &name, bool can_create);
virtual uint32_t
GetIndexOfChildWithName (const ConstString &name);
protected:
virtual bool
UpdateValue ();
lldb::RegisterContextSP m_reg_ctx_sp;
const RegisterSet *m_reg_set;
uint32_t m_reg_set_idx;
private:
friend class ValueObjectRegisterContext;
ValueObjectRegisterSet (ExecutionContextScope *exe_scope, lldb::RegisterContextSP ®_ctx_sp, uint32_t set_idx);
DISALLOW_COPY_AND_ASSIGN (ValueObjectRegisterSet);
};
class ValueObjectRegister : public ValueObject
{
public:
static lldb::ValueObjectSP
Create (ExecutionContextScope *exe_scope, lldb::RegisterContextSP ®_ctx_sp, uint32_t reg_num);
virtual
~ValueObjectRegister();
virtual size_t
GetByteSize();
virtual clang::ASTContext *
GetClangAST ();
virtual lldb::clang_type_t
GetClangType ();
virtual lldb::ValueType
GetValueType () const
{
return lldb::eValueTypeRegister;
}
virtual ConstString
GetTypeName();
virtual uint32_t
CalculateNumChildren();
virtual bool
SetValueFromCString (const char *value_str);
virtual bool
ResolveValue (Scalar &scalar);
protected:
virtual bool
UpdateValue ();
lldb::RegisterContextSP m_reg_ctx_sp;
RegisterInfo m_reg_info;
RegisterValue m_reg_value;
ConstString m_type_name;
void *m_clang_type;
private:
void
ConstructObject (uint32_t reg_num);
friend class ValueObjectRegisterSet;
ValueObjectRegister (ValueObject &parent, lldb::RegisterContextSP ®_ctx_sp, uint32_t reg_num);
ValueObjectRegister (ExecutionContextScope *exe_scope, lldb::RegisterContextSP ®_ctx_sp, uint32_t reg_num);
DISALLOW_COPY_AND_ASSIGN (ValueObjectRegister);
};
}
#endif // liblldb_ValueObjectRegister_h_