]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/ValueObjectVariable.h
Merge ^/head r305892 through r306302.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Core / ValueObjectVariable.h
1 //===-- ValueObjectVariable.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_ValueObjectVariable_h_
11 #define liblldb_ValueObjectVariable_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 ValueObject that contains a root variable that may or may not
23 // have children.
24 //----------------------------------------------------------------------
25 class ValueObjectVariable : public ValueObject
26 {
27 public:
28     ~ValueObjectVariable() override;
29
30     static lldb::ValueObjectSP
31     Create (ExecutionContextScope *exe_scope, const lldb::VariableSP &var_sp);
32
33     uint64_t
34     GetByteSize() override;
35
36     ConstString
37     GetTypeName() override;
38
39     ConstString
40     GetQualifiedTypeName() override;
41     
42     ConstString
43     GetDisplayTypeName() override;
44
45     size_t
46     CalculateNumChildren(uint32_t max) override;
47
48     lldb::ValueType
49     GetValueType() const override;
50
51     bool
52     IsInScope() override;
53
54     lldb::ModuleSP
55     GetModule() override;
56     
57     SymbolContextScope *
58     GetSymbolContextScope() override;
59
60     bool
61     GetDeclaration(Declaration &decl) override;
62     
63     const char *
64     GetLocationAsCString() override;
65     
66     bool
67     SetValueFromCString(const char *value_str, Error& error) override;
68
69     bool
70     SetData(DataExtractor &data, Error &error) override;
71     
72     virtual lldb::VariableSP
73     GetVariable () override
74     {
75         return m_variable_sp;
76     }
77     
78 protected:
79     bool
80     UpdateValue() override;
81     
82     CompilerType
83     GetCompilerTypeImpl() override;
84
85     lldb::VariableSP  m_variable_sp;  ///< The variable that this value object is based upon
86     Value m_resolved_value;           ///< The value that DWARFExpression resolves this variable to before we patch it up
87     
88 private:
89     ValueObjectVariable (ExecutionContextScope *exe_scope, const lldb::VariableSP &var_sp);
90     //------------------------------------------------------------------
91     // For ValueObject only
92     //------------------------------------------------------------------
93     DISALLOW_COPY_AND_ASSIGN (ValueObjectVariable);
94 };
95
96 } // namespace lldb_private
97
98 #endif // liblldb_ValueObjectVariable_h_