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 19 namespace lldb_private { 20 21 //---------------------------------------------------------------------- 22 // A child of another ValueObject. 23 //---------------------------------------------------------------------- 24 class ValueObjectChild : public ValueObject 25 { 26 public: 27 virtual ~ValueObjectChild(); 28 29 virtual uint64_t GetByteSize()30 GetByteSize() 31 { 32 return m_byte_size; 33 } 34 35 virtual lldb::offset_t GetByteOffset()36 GetByteOffset() 37 { 38 return m_byte_offset; 39 } 40 41 virtual uint32_t GetBitfieldBitSize()42 GetBitfieldBitSize() 43 { 44 return m_bitfield_bit_size; 45 } 46 47 virtual uint32_t GetBitfieldBitOffset()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 ConstString 66 GetDisplayTypeName(); 67 68 virtual bool 69 IsInScope (); 70 71 virtual bool IsBaseClass()72 IsBaseClass () 73 { 74 return m_is_base_class; 75 } 76 77 virtual bool IsDereferenceOfParent()78 IsDereferenceOfParent () 79 { 80 return m_is_deref_of_parent; 81 } 82 83 protected: 84 virtual bool 85 UpdateValue (); 86 87 virtual bool 88 CanUpdateWithInvalidExecutionContext (); 89 90 virtual ClangASTType GetClangTypeImpl()91 GetClangTypeImpl () 92 { 93 return m_clang_type; 94 } 95 96 ClangASTType m_clang_type; 97 ConstString m_type_name; 98 uint64_t m_byte_size; 99 int32_t m_byte_offset; 100 uint8_t m_bitfield_bit_size; 101 uint8_t m_bitfield_bit_offset; 102 bool m_is_base_class; 103 bool m_is_deref_of_parent; 104 105 // 106 // void 107 // ReadValueFromMemory (ValueObject* parent, lldb::addr_t address); 108 109 protected: 110 friend class ValueObject; 111 friend class ValueObjectConstResult; 112 friend class ValueObjectConstResultImpl; 113 ValueObjectChild (ValueObject &parent, 114 const ClangASTType &clang_type, 115 const ConstString &name, 116 uint64_t byte_size, 117 int32_t byte_offset, 118 uint32_t bitfield_bit_size, 119 uint32_t bitfield_bit_offset, 120 bool is_base_class, 121 bool is_deref_of_parent, 122 AddressType child_ptr_or_ref_addr_type); 123 124 DISALLOW_COPY_AND_ASSIGN (ValueObjectChild); 125 }; 126 127 } // namespace lldb_private 128 129 #endif // liblldb_ValueObjectChild_h_ 130