SBTypeCategory.h revision c48ca82920bd333c7ccb6ec0e579207add130296
1//===-- SBTypeCategory.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 LLDB_SBTypeCategory_h_
11#define LLDB_SBTypeCategory_h_
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17    class SBTypeCategory
18    {
19    public:
20
21        SBTypeCategory();
22
23        SBTypeCategory (const lldb::SBTypeCategory &rhs);
24
25        ~SBTypeCategory ();
26
27        bool
28        IsValid() const;
29
30        bool
31        GetEnabled ();
32
33        void
34        SetEnabled (bool);
35
36        const char*
37        GetName();
38
39        bool
40        GetDescription (lldb::SBStream &description,
41                        lldb::DescriptionLevel description_level);
42
43        uint32_t
44        GetNumFormats ();
45
46        uint32_t
47        GetNumSummaries ();
48
49        uint32_t
50        GetNumFilters ();
51
52#ifndef LLDB_DISABLE_PYTHON
53        uint32_t
54        GetNumSynthetics ();
55#endif
56
57        SBTypeNameSpecifier
58        GetTypeNameSpecifierForFilterAtIndex (uint32_t);
59
60        SBTypeNameSpecifier
61        GetTypeNameSpecifierForFormatAtIndex (uint32_t);
62
63        SBTypeNameSpecifier
64        GetTypeNameSpecifierForSummaryAtIndex (uint32_t);
65
66#ifndef LLDB_DISABLE_PYTHON
67        SBTypeNameSpecifier
68        GetTypeNameSpecifierForSyntheticAtIndex (uint32_t);
69#endif
70
71        SBTypeFilter
72        GetFilterForType (SBTypeNameSpecifier);
73
74        SBTypeFormat
75        GetFormatForType (SBTypeNameSpecifier);
76
77#ifndef LLDB_DISABLE_PYTHON
78        SBTypeSummary
79        GetSummaryForType (SBTypeNameSpecifier);
80#endif
81
82#ifndef LLDB_DISABLE_PYTHON
83        SBTypeSynthetic
84        GetSyntheticForType (SBTypeNameSpecifier);
85#endif
86
87#ifndef LLDB_DISABLE_PYTHON
88        SBTypeFilter
89        GetFilterAtIndex (uint32_t);
90#endif
91
92        SBTypeFormat
93        GetFormatAtIndex (uint32_t);
94
95#ifndef LLDB_DISABLE_PYTHON
96        SBTypeSummary
97        GetSummaryAtIndex (uint32_t);
98#endif
99
100#ifndef LLDB_DISABLE_PYTHON
101        SBTypeSynthetic
102        GetSyntheticAtIndex (uint32_t);
103#endif
104
105        bool
106        AddTypeFormat (SBTypeNameSpecifier,
107                       SBTypeFormat);
108
109        bool
110        DeleteTypeFormat (SBTypeNameSpecifier);
111
112#ifndef LLDB_DISABLE_PYTHON
113        bool
114        AddTypeSummary (SBTypeNameSpecifier,
115                        SBTypeSummary);
116#endif
117
118        bool
119        DeleteTypeSummary (SBTypeNameSpecifier);
120
121        bool
122        AddTypeFilter (SBTypeNameSpecifier,
123                       SBTypeFilter);
124
125        bool
126        DeleteTypeFilter (SBTypeNameSpecifier);
127
128#ifndef LLDB_DISABLE_PYTHON
129        bool
130        AddTypeSynthetic (SBTypeNameSpecifier,
131                          SBTypeSynthetic);
132
133        bool
134        DeleteTypeSynthetic (SBTypeNameSpecifier);
135#endif
136
137        lldb::SBTypeCategory &
138        operator = (const lldb::SBTypeCategory &rhs);
139
140        bool
141        operator == (lldb::SBTypeCategory &rhs);
142
143        bool
144        operator != (lldb::SBTypeCategory &rhs);
145
146    protected:
147        friend class SBDebugger;
148
149        lldb::TypeCategoryImplSP
150        GetSP ();
151
152        void
153        SetSP (const lldb::TypeCategoryImplSP &typecategory_impl_sp);
154
155        TypeCategoryImplSP m_opaque_sp;
156
157        SBTypeCategory (const lldb::TypeCategoryImplSP &);
158
159        SBTypeCategory (const char*);
160
161        bool
162        IsDefaultCategory();
163
164    };
165
166} // namespace lldb
167
168#endif // LLDB_SBTypeCategory_h_
169