ValueObjectMemory.h revision 47da810225d8674eb9158bcf5f1f5b847cbaeedf
1//===-- ValueObjectMemory.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_ValueObjectMemory_h_
11#define liblldb_ValueObjectMemory_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Core/ValueObject.h"
18
19namespace lldb_private {
20
21//----------------------------------------------------------------------
22// A ValueObject that represents memory at a given address, viewed as some
23// set lldb type.
24//----------------------------------------------------------------------
25class ValueObjectMemory : public ValueObject
26{
27public:
28    static lldb::ValueObjectSP
29    Create (ExecutionContextScope *exe_scope,
30            const char *name,
31            const Address &address,
32            lldb::TypeSP &type_sp);
33
34    virtual
35    ~ValueObjectMemory();
36
37    virtual size_t
38    GetByteSize();
39
40    virtual clang::ASTContext *
41    GetClangAST ();
42
43    virtual lldb::clang_type_t
44    GetClangType ();
45
46    virtual ConstString
47    GetTypeName();
48
49    virtual uint32_t
50    CalculateNumChildren();
51
52    virtual lldb::ValueType
53    GetValueType() const;
54
55    virtual bool
56    IsInScope ();
57
58protected:
59    virtual bool
60    UpdateValue ();
61
62    Address  m_address;  ///< The variable that this value object is based upon
63    lldb::TypeSP m_type_sp;
64
65private:
66    ValueObjectMemory (ExecutionContextScope *exe_scope,
67                       const char *name,
68                       const Address &address,
69                       lldb::TypeSP &type_sp);
70
71    //------------------------------------------------------------------
72    // For ValueObject only
73    //------------------------------------------------------------------
74    DISALLOW_COPY_AND_ASSIGN (ValueObjectMemory);
75};
76
77} // namespace lldb_private
78
79#endif  // liblldb_ValueObjectMemory_h_
80