• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     static lldb::ValueObjectSP
29     Create (ExecutionContextScope *exe_scope, const lldb::VariableSP &var_sp);
30 
31     virtual
32     ~ValueObjectVariable();
33 
34     virtual uint64_t
35     GetByteSize();
36 
37     virtual ConstString
38     GetTypeName();
39 
40     virtual ConstString
41     GetQualifiedTypeName();
42 
43     virtual size_t
44     CalculateNumChildren();
45 
46     virtual lldb::ValueType
47     GetValueType() const;
48 
49     virtual bool
50     IsInScope ();
51 
52     virtual lldb::ModuleSP
53     GetModule();
54 
55     virtual SymbolContextScope *
56     GetSymbolContextScope();
57 
58     virtual bool
59     GetDeclaration (Declaration &decl);
60 
61     virtual const char *
62     GetLocationAsCString ();
63 
64     virtual bool
65     SetValueFromCString (const char *value_str, Error& error);
66 
67     virtual bool
68     SetData (DataExtractor &data, Error &error);
69 
70 protected:
71     virtual bool
72     UpdateValue ();
73 
74     virtual ClangASTType
75     GetClangTypeImpl ();
76 
77     lldb::VariableSP  m_variable_sp;  ///< The variable that this value object is based upon
78     Value m_resolved_value;           ///< The value that DWARFExpression resolves this variable to before we patch it up
79 
80 private:
81     ValueObjectVariable (ExecutionContextScope *exe_scope, const lldb::VariableSP &var_sp);
82     //------------------------------------------------------------------
83     // For ValueObject only
84     //------------------------------------------------------------------
85     DISALLOW_COPY_AND_ASSIGN (ValueObjectVariable);
86 };
87 
88 } // namespace lldb_private
89 
90 #endif  // liblldb_ValueObjectVariable_h_
91