1//===-- ValueObjectConstResultChild.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_ValueObjectConstResultChild_h_
11#define liblldb_ValueObjectConstResultChild_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Core/ValueObjectChild.h"
18#include "lldb/Core/ValueObjectConstResultImpl.h"
19
20namespace lldb_private {
21
22//----------------------------------------------------------------------
23// A child of a ValueObjectConstResult.
24//----------------------------------------------------------------------
25class ValueObjectConstResultChild : public ValueObjectChild
26{
27public:
28
29    ValueObjectConstResultChild (ValueObject &parent,
30                                 const ClangASTType &clang_type,
31                                 const ConstString &name,
32                                 uint32_t byte_size,
33                                 int32_t byte_offset,
34                                 uint32_t bitfield_bit_size,
35                                 uint32_t bitfield_bit_offset,
36                                 bool is_base_class,
37                                 bool is_deref_of_parent);
38
39    virtual ~ValueObjectConstResultChild();
40
41    virtual lldb::ValueObjectSP
42    Dereference (Error &error);
43
44    virtual ValueObject *
45    CreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index);
46
47    virtual ClangASTType
48    GetClangType ()
49    {
50        return ValueObjectChild::GetClangType();
51    }
52
53    virtual lldb::ValueObjectSP
54    GetSyntheticChildAtOffset(uint32_t offset, const ClangASTType& type, bool can_create);
55
56    virtual lldb::ValueObjectSP
57    AddressOf (Error &error);
58
59    virtual size_t
60    GetPointeeData (DataExtractor& data,
61                    uint32_t item_idx = 0,
62					uint32_t item_count = 1);
63
64protected:
65    ValueObjectConstResultImpl m_impl;
66
67private:
68    friend class ValueObject;
69    friend class ValueObjectConstResult;
70    friend class ValueObjectConstResultImpl;
71
72    DISALLOW_COPY_AND_ASSIGN (ValueObjectConstResultChild);
73};
74
75} // namespace lldb_private
76
77#endif  // liblldb_ValueObjectConstResultChild_h_
78