]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/ValueObjectConstResultChild.h
Merge ^/head r319548 through r319778.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Core / ValueObjectConstResultChild.h
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 #include "lldb/Core/ValueObjectChild.h"
14 #include "lldb/Core/ValueObjectConstResultImpl.h"
15 #include "lldb/Symbol/CompilerType.h" // for CompilerType
16 #include "lldb/Utility/ConstString.h" // for ConstString
17 #include "lldb/lldb-defines.h"        // for DISALLOW_COPY_AND_...
18 #include "lldb/lldb-forward.h"        // for ValueObjectSP
19 #include "lldb/lldb-types.h"          // for addr_t
20
21 #include <stddef.h> // for size_t
22 #include <stdint.h> // for uint32_t, int32_t
23 namespace lldb_private {
24 class DataExtractor;
25 }
26 namespace lldb_private {
27 class Status;
28 }
29 namespace lldb_private {
30 class ValueObject;
31 }
32
33 namespace lldb_private {
34
35 //----------------------------------------------------------------------
36 // A child of a ValueObjectConstResult.
37 //----------------------------------------------------------------------
38 class ValueObjectConstResultChild : public ValueObjectChild {
39 public:
40   ValueObjectConstResultChild(ValueObject &parent,
41                               const CompilerType &compiler_type,
42                               const ConstString &name, uint32_t byte_size,
43                               int32_t byte_offset, uint32_t bitfield_bit_size,
44                               uint32_t bitfield_bit_offset, bool is_base_class,
45                               bool is_deref_of_parent,
46                               lldb::addr_t live_address,
47                               uint64_t language_flags);
48
49   ~ValueObjectConstResultChild() override;
50
51   lldb::ValueObjectSP Dereference(Status &error) override;
52
53   ValueObject *CreateChildAtIndex(size_t idx, bool synthetic_array_member,
54                                   int32_t synthetic_index) override;
55
56   virtual CompilerType GetCompilerType() {
57     return ValueObjectChild::GetCompilerType();
58   }
59
60   lldb::ValueObjectSP GetSyntheticChildAtOffset(
61       uint32_t offset, const CompilerType &type, bool can_create,
62       ConstString name_const_str = ConstString()) override;
63
64   lldb::ValueObjectSP AddressOf(Status &error) override;
65
66   size_t GetPointeeData(DataExtractor &data, uint32_t item_idx = 0,
67                         uint32_t item_count = 1) override;
68
69   lldb::ValueObjectSP Cast(const CompilerType &compiler_type) override;
70
71 protected:
72   ValueObjectConstResultImpl m_impl;
73
74 private:
75   friend class ValueObject;
76   friend class ValueObjectConstResult;
77   friend class ValueObjectConstResultImpl;
78
79   DISALLOW_COPY_AND_ASSIGN(ValueObjectConstResultChild);
80 };
81
82 } // namespace lldb_private
83
84 #endif // liblldb_ValueObjectConstResultChild_h_