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