summaryrefslogtreecommitdiff
path: root/include/lldb/API/SBTypeCategory.h
blob: 1d202fb44626b43e2500169977ae60c2e588088b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//===-- SBTypeCategory.h --------------------------------------------*- C++
//-*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_SBTypeCategory_h_
#define LLDB_SBTypeCategory_h_

#include "lldb/API/SBDefines.h"

namespace lldb {

class LLDB_API SBTypeCategory {
public:
  SBTypeCategory();

  SBTypeCategory(const lldb::SBTypeCategory &rhs);

  ~SBTypeCategory();

  bool IsValid() const;

  bool GetEnabled();

  void SetEnabled(bool);

  const char *GetName();

  lldb::LanguageType GetLanguageAtIndex(uint32_t idx);

  uint32_t GetNumLanguages();

  void AddLanguage(lldb::LanguageType language);

  bool GetDescription(lldb::SBStream &description,
                      lldb::DescriptionLevel description_level);

  uint32_t GetNumFormats();

  uint32_t GetNumSummaries();

  uint32_t GetNumFilters();

#ifndef LLDB_DISABLE_PYTHON
  uint32_t GetNumSynthetics();
#endif

  SBTypeNameSpecifier GetTypeNameSpecifierForFilterAtIndex(uint32_t);

  SBTypeNameSpecifier GetTypeNameSpecifierForFormatAtIndex(uint32_t);

  SBTypeNameSpecifier GetTypeNameSpecifierForSummaryAtIndex(uint32_t);

#ifndef LLDB_DISABLE_PYTHON
  SBTypeNameSpecifier GetTypeNameSpecifierForSyntheticAtIndex(uint32_t);
#endif

  SBTypeFilter GetFilterForType(SBTypeNameSpecifier);

  SBTypeFormat GetFormatForType(SBTypeNameSpecifier);

#ifndef LLDB_DISABLE_PYTHON
  SBTypeSummary GetSummaryForType(SBTypeNameSpecifier);
#endif

#ifndef LLDB_DISABLE_PYTHON
  SBTypeSynthetic GetSyntheticForType(SBTypeNameSpecifier);
#endif

#ifndef LLDB_DISABLE_PYTHON
  SBTypeFilter GetFilterAtIndex(uint32_t);
#endif

  SBTypeFormat GetFormatAtIndex(uint32_t);

#ifndef LLDB_DISABLE_PYTHON
  SBTypeSummary GetSummaryAtIndex(uint32_t);
#endif

#ifndef LLDB_DISABLE_PYTHON
  SBTypeSynthetic GetSyntheticAtIndex(uint32_t);
#endif

  bool AddTypeFormat(SBTypeNameSpecifier, SBTypeFormat);

  bool DeleteTypeFormat(SBTypeNameSpecifier);

#ifndef LLDB_DISABLE_PYTHON
  bool AddTypeSummary(SBTypeNameSpecifier, SBTypeSummary);
#endif

  bool DeleteTypeSummary(SBTypeNameSpecifier);

  bool AddTypeFilter(SBTypeNameSpecifier, SBTypeFilter);

  bool DeleteTypeFilter(SBTypeNameSpecifier);

#ifndef LLDB_DISABLE_PYTHON
  bool AddTypeSynthetic(SBTypeNameSpecifier, SBTypeSynthetic);

  bool DeleteTypeSynthetic(SBTypeNameSpecifier);
#endif

  lldb::SBTypeCategory &operator=(const lldb::SBTypeCategory &rhs);

  bool operator==(lldb::SBTypeCategory &rhs);

  bool operator!=(lldb::SBTypeCategory &rhs);

protected:
  friend class SBDebugger;

  lldb::TypeCategoryImplSP GetSP();

  void SetSP(const lldb::TypeCategoryImplSP &typecategory_impl_sp);

  TypeCategoryImplSP m_opaque_sp;

  SBTypeCategory(const lldb::TypeCategoryImplSP &);

  SBTypeCategory(const char *);

  bool IsDefaultCategory();
};

} // namespace lldb

#endif // LLDB_SBTypeCategory_h_