1//===-- ValueObjectChild.h --------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef liblldb_ValueObjectChild_h_ 11#define liblldb_ValueObjectChild_h_ 12 13// C Includes 14// C++ Includes 15// Other libraries and framework includes 16// Project includes 17#include "lldb/Core/ValueObject.h" 18 19namespace lldb_private { 20 21//---------------------------------------------------------------------- 22// A child of another ValueObject. 23//---------------------------------------------------------------------- 24class ValueObjectChild : public ValueObject 25{ 26public: 27 virtual ~ValueObjectChild(); 28 29 virtual uint64_t 30 GetByteSize() 31 { 32 return m_byte_size; 33 } 34 35 virtual off_t 36 GetByteOffset() 37 { 38 return m_byte_offset; 39 } 40 41 virtual uint32_t 42 GetBitfieldBitSize() 43 { 44 return m_bitfield_bit_size; 45 } 46 47 virtual uint32_t 48 GetBitfieldBitOffset() 49 { 50 return m_bitfield_bit_offset; 51 } 52 53 virtual lldb::ValueType 54 GetValueType() const; 55 56 virtual size_t 57 CalculateNumChildren(); 58 59 virtual ConstString 60 GetTypeName(); 61 62 virtual ConstString 63 GetQualifiedTypeName(); 64 65 virtual bool 66 IsInScope (); 67 68 virtual bool 69 IsBaseClass () 70 { 71 return m_is_base_class; 72 } 73 74 virtual bool 75 IsDereferenceOfParent () 76 { 77 return m_is_deref_of_parent; 78 } 79 80protected: 81 virtual bool 82 UpdateValue (); 83 84 virtual ClangASTType 85 GetClangTypeImpl () 86 { 87 return m_clang_type; 88 } 89 90 ClangASTType m_clang_type; 91 ConstString m_type_name; 92 uint64_t m_byte_size; 93 int32_t m_byte_offset; 94 uint8_t m_bitfield_bit_size; 95 uint8_t m_bitfield_bit_offset; 96 bool m_is_base_class; 97 bool m_is_deref_of_parent; 98 99// 100// void 101// ReadValueFromMemory (ValueObject* parent, lldb::addr_t address); 102 103protected: 104 friend class ValueObject; 105 friend class ValueObjectConstResult; 106 ValueObjectChild (ValueObject &parent, 107 const ClangASTType &clang_type, 108 const ConstString &name, 109 uint64_t byte_size, 110 int32_t byte_offset, 111 uint32_t bitfield_bit_size, 112 uint32_t bitfield_bit_offset, 113 bool is_base_class, 114 bool is_deref_of_parent, 115 AddressType child_ptr_or_ref_addr_type); 116 117 DISALLOW_COPY_AND_ASSIGN (ValueObjectChild); 118}; 119 120} // namespace lldb_private 121 122#endif // liblldb_ValueObjectChild_h_ 123