]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/ValueObjectCast.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / Core / ValueObjectCast.h
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 *
48     GetParent()
49     {
50         if (m_parent)
51             return m_parent->GetParent();
52         else
53             return NULL;
54     }
55     
56     virtual const ValueObject *
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_