diff options
Diffstat (limited to 'include/lldb/Core/ValueObjectChild.h')
-rw-r--r-- | include/lldb/Core/ValueObjectChild.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/include/lldb/Core/ValueObjectChild.h b/include/lldb/Core/ValueObjectChild.h new file mode 100644 index 000000000000..780529a4af11 --- /dev/null +++ b/include/lldb/Core/ValueObjectChild.h @@ -0,0 +1,122 @@ +//===-- ValueObjectChild.h --------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_ValueObjectChild_h_ +#define liblldb_ValueObjectChild_h_ + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Core/ValueObject.h" + +namespace lldb_private { + +//---------------------------------------------------------------------- +// A child of another ValueObject. +//---------------------------------------------------------------------- +class ValueObjectChild : public ValueObject +{ +public: + virtual ~ValueObjectChild(); + + virtual uint64_t + GetByteSize() + { + return m_byte_size; + } + + virtual off_t + GetByteOffset() + { + return m_byte_offset; + } + + virtual uint32_t + GetBitfieldBitSize() + { + return m_bitfield_bit_size; + } + + virtual uint32_t + GetBitfieldBitOffset() + { + return m_bitfield_bit_offset; + } + + virtual lldb::ValueType + GetValueType() const; + + virtual size_t + CalculateNumChildren(); + + virtual ConstString + GetTypeName(); + + virtual ConstString + GetQualifiedTypeName(); + + virtual bool + IsInScope (); + + virtual bool + IsBaseClass () + { + return m_is_base_class; + } + + virtual bool + IsDereferenceOfParent () + { + return m_is_deref_of_parent; + } + +protected: + virtual bool + UpdateValue (); + + virtual ClangASTType + GetClangTypeImpl () + { + return m_clang_type; + } + + ClangASTType m_clang_type; + ConstString m_type_name; + uint64_t m_byte_size; + int32_t m_byte_offset; + uint8_t m_bitfield_bit_size; + uint8_t m_bitfield_bit_offset; + bool m_is_base_class; + bool m_is_deref_of_parent; + +// +// void +// ReadValueFromMemory (ValueObject* parent, lldb::addr_t address); + +protected: + friend class ValueObject; + friend class ValueObjectConstResult; + ValueObjectChild (ValueObject &parent, + const ClangASTType &clang_type, + const ConstString &name, + uint64_t byte_size, + int32_t byte_offset, + uint32_t bitfield_bit_size, + uint32_t bitfield_bit_offset, + bool is_base_class, + bool is_deref_of_parent, + AddressType child_ptr_or_ref_addr_type); + + DISALLOW_COPY_AND_ASSIGN (ValueObjectChild); +}; + +} // namespace lldb_private + +#endif // liblldb_ValueObjectChild_h_ |