1 //===-- SBTypeSynthetic.h -----------------------------------------*- C++
2 //-*-===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10 
11 #ifndef LLDB_SBTypeSynthetic_h_
12 #define LLDB_SBTypeSynthetic_h_
13 
14 #include "lldb/API/SBDefines.h"
15 
16 #ifndef LLDB_DISABLE_PYTHON
17 
18 namespace lldb {
19 
20 class LLDB_API SBTypeSynthetic {
21 public:
22   SBTypeSynthetic();
23 
24   static SBTypeSynthetic
25   CreateWithClassName(const char *data,
26                       uint32_t options = 0); // see lldb::eTypeOption values
27 
28   static SBTypeSynthetic
29   CreateWithScriptCode(const char *data,
30                        uint32_t options = 0); // see lldb::eTypeOption values
31 
32   SBTypeSynthetic(const lldb::SBTypeSynthetic &rhs);
33 
34   ~SBTypeSynthetic();
35 
36   bool IsValid() const;
37 
38   bool IsClassCode();
39 
40   bool IsClassName();
41 
42   const char *GetData();
43 
44   void SetClassName(const char *data);
45 
46   void SetClassCode(const char *data);
47 
48   uint32_t GetOptions();
49 
50   void SetOptions(uint32_t);
51 
52   bool GetDescription(lldb::SBStream &description,
53                       lldb::DescriptionLevel description_level);
54 
55   lldb::SBTypeSynthetic &operator=(const lldb::SBTypeSynthetic &rhs);
56 
57   bool IsEqualTo(lldb::SBTypeSynthetic &rhs);
58 
59   bool operator==(lldb::SBTypeSynthetic &rhs);
60 
61   bool operator!=(lldb::SBTypeSynthetic &rhs);
62 
63 protected:
64   friend class SBDebugger;
65   friend class SBTypeCategory;
66   friend class SBValue;
67 
68   lldb::ScriptedSyntheticChildrenSP GetSP();
69 
70   void SetSP(const lldb::ScriptedSyntheticChildrenSP &typefilter_impl_sp);
71 
72   lldb::ScriptedSyntheticChildrenSP m_opaque_sp;
73 
74   SBTypeSynthetic(const lldb::ScriptedSyntheticChildrenSP &);
75 
76   bool CopyOnWrite_Impl();
77 };
78 
79 } // namespace lldb
80 
81 #endif // LLDB_DISABLE_PYTHON
82 
83 #endif // LLDB_SBTypeSynthetic_h_
84