]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/ValueObjectChild.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / Core / ValueObjectChild.h
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
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
80 protected:
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
103 protected:
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_