• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- ValueObjectDynamicValue.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_ValueObjectCast_h_
11 #define liblldb_ValueObjectCast_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 represents a given value represented as a different type.
23 //---------------------------------------------------------------------------------
24 class ValueObjectCast : public ValueObject
25 {
26 public:
27     static lldb::ValueObjectSP
28     Create (ValueObject &parent,
29             const ConstString &name,
30             const ClangASTType &cast_type);
31 
32     virtual
33     ~ValueObjectCast();
34 
35     virtual uint64_t
36     GetByteSize();
37 
38     virtual size_t
39     CalculateNumChildren();
40 
41     virtual lldb::ValueType
42     GetValueType() const;
43 
44     virtual bool
45     IsInScope ();
46 
47     virtual ValueObject *
GetParent()48     GetParent()
49     {
50         if (m_parent)
51             return m_parent->GetParent();
52         else
53             return NULL;
54     }
55 
56     virtual const ValueObject *
GetParent()57     GetParent() const
58     {
59         if (m_parent)
60             return m_parent->GetParent();
61         else
62             return NULL;
63     }
64 
65 protected:
66     virtual bool
67     UpdateValue ();
68 
69     virtual ClangASTType
70     GetClangTypeImpl ();
71 
72     ClangASTType m_cast_type;
73 
74 private:
75     ValueObjectCast (ValueObject &parent,
76                      const ConstString &name,
77                      const ClangASTType &cast_type);
78 
79     //------------------------------------------------------------------
80     // For ValueObject only
81     //------------------------------------------------------------------
82     DISALLOW_COPY_AND_ASSIGN (ValueObjectCast);
83 };
84 
85 } // namespace lldb_private
86 
87 #endif  // liblldb_ValueObjectCast_h_
88