1 //===-- SBTypeCategory.cpp ------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #include "lldb/API/SBTypeCategory.h"
10 #include "SBReproducerPrivate.h"
12 #include "lldb/API/SBStream.h"
13 #include "lldb/API/SBTypeFilter.h"
14 #include "lldb/API/SBTypeFormat.h"
15 #include "lldb/API/SBTypeNameSpecifier.h"
16 #include "lldb/API/SBTypeSummary.h"
17 #include "lldb/API/SBTypeSynthetic.h"
19 #include "lldb/Core/Debugger.h"
20 #include "lldb/DataFormatters/DataVisualization.h"
21 #include "lldb/Interpreter/CommandInterpreter.h"
22 #include "lldb/Interpreter/ScriptInterpreter.h"
25 using namespace lldb_private;
27 typedef std::pair<lldb::TypeCategoryImplSP, user_id_t> ImplType;
29 SBTypeCategory::SBTypeCategory() : m_opaque_sp() {
30 LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBTypeCategory);
33 SBTypeCategory::SBTypeCategory(const char *name) : m_opaque_sp() {
34 DataVisualization::Categories::GetCategory(ConstString(name), m_opaque_sp);
37 SBTypeCategory::SBTypeCategory(const lldb::SBTypeCategory &rhs)
38 : m_opaque_sp(rhs.m_opaque_sp) {
39 LLDB_RECORD_CONSTRUCTOR(SBTypeCategory, (const lldb::SBTypeCategory &), rhs);
42 SBTypeCategory::~SBTypeCategory() = default;
44 bool SBTypeCategory::IsValid() const {
45 LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBTypeCategory, IsValid);
46 return this->operator bool();
48 SBTypeCategory::operator bool() const {
49 LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBTypeCategory, operator bool);
51 return (m_opaque_sp.get() != nullptr);
54 bool SBTypeCategory::GetEnabled() {
55 LLDB_RECORD_METHOD_NO_ARGS(bool, SBTypeCategory, GetEnabled);
59 return m_opaque_sp->IsEnabled();
62 void SBTypeCategory::SetEnabled(bool enabled) {
63 LLDB_RECORD_METHOD(void, SBTypeCategory, SetEnabled, (bool), enabled);
68 DataVisualization::Categories::Enable(m_opaque_sp);
70 DataVisualization::Categories::Disable(m_opaque_sp);
73 const char *SBTypeCategory::GetName() {
74 LLDB_RECORD_METHOD_NO_ARGS(const char *, SBTypeCategory, GetName);
78 return m_opaque_sp->GetName();
81 lldb::LanguageType SBTypeCategory::GetLanguageAtIndex(uint32_t idx) {
82 LLDB_RECORD_METHOD(lldb::LanguageType, SBTypeCategory, GetLanguageAtIndex,
86 return m_opaque_sp->GetLanguageAtIndex(idx);
87 return lldb::eLanguageTypeUnknown;
90 uint32_t SBTypeCategory::GetNumLanguages() {
91 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBTypeCategory, GetNumLanguages);
94 return m_opaque_sp->GetNumLanguages();
98 void SBTypeCategory::AddLanguage(lldb::LanguageType language) {
99 LLDB_RECORD_METHOD(void, SBTypeCategory, AddLanguage, (lldb::LanguageType),
103 m_opaque_sp->AddLanguage(language);
106 uint32_t SBTypeCategory::GetNumFormats() {
107 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBTypeCategory, GetNumFormats);
112 return m_opaque_sp->GetTypeFormatsContainer()->GetCount() +
113 m_opaque_sp->GetRegexTypeFormatsContainer()->GetCount();
116 uint32_t SBTypeCategory::GetNumSummaries() {
117 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBTypeCategory, GetNumSummaries);
121 return m_opaque_sp->GetTypeSummariesContainer()->GetCount() +
122 m_opaque_sp->GetRegexTypeSummariesContainer()->GetCount();
125 uint32_t SBTypeCategory::GetNumFilters() {
126 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBTypeCategory, GetNumFilters);
130 return m_opaque_sp->GetTypeFiltersContainer()->GetCount() +
131 m_opaque_sp->GetRegexTypeFiltersContainer()->GetCount();
134 uint32_t SBTypeCategory::GetNumSynthetics() {
135 LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBTypeCategory, GetNumSynthetics);
139 return m_opaque_sp->GetTypeSyntheticsContainer()->GetCount() +
140 m_opaque_sp->GetRegexTypeSyntheticsContainer()->GetCount();
143 lldb::SBTypeNameSpecifier
144 SBTypeCategory::GetTypeNameSpecifierForFilterAtIndex(uint32_t index) {
145 LLDB_RECORD_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
146 GetTypeNameSpecifierForFilterAtIndex, (uint32_t), index);
149 return LLDB_RECORD_RESULT(SBTypeNameSpecifier());
150 return LLDB_RECORD_RESULT(SBTypeNameSpecifier(
151 m_opaque_sp->GetTypeNameSpecifierForFilterAtIndex(index)));
154 lldb::SBTypeNameSpecifier
155 SBTypeCategory::GetTypeNameSpecifierForFormatAtIndex(uint32_t index) {
156 LLDB_RECORD_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
157 GetTypeNameSpecifierForFormatAtIndex, (uint32_t), index);
160 return LLDB_RECORD_RESULT(SBTypeNameSpecifier());
161 return LLDB_RECORD_RESULT(SBTypeNameSpecifier(
162 m_opaque_sp->GetTypeNameSpecifierForFormatAtIndex(index)));
165 lldb::SBTypeNameSpecifier
166 SBTypeCategory::GetTypeNameSpecifierForSummaryAtIndex(uint32_t index) {
167 LLDB_RECORD_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
168 GetTypeNameSpecifierForSummaryAtIndex, (uint32_t), index);
171 return LLDB_RECORD_RESULT(SBTypeNameSpecifier());
172 return LLDB_RECORD_RESULT(SBTypeNameSpecifier(
173 m_opaque_sp->GetTypeNameSpecifierForSummaryAtIndex(index)));
176 lldb::SBTypeNameSpecifier
177 SBTypeCategory::GetTypeNameSpecifierForSyntheticAtIndex(uint32_t index) {
178 LLDB_RECORD_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
179 GetTypeNameSpecifierForSyntheticAtIndex, (uint32_t),
183 return LLDB_RECORD_RESULT(SBTypeNameSpecifier());
184 return LLDB_RECORD_RESULT(SBTypeNameSpecifier(
185 m_opaque_sp->GetTypeNameSpecifierForSyntheticAtIndex(index)));
188 SBTypeFilter SBTypeCategory::GetFilterForType(SBTypeNameSpecifier spec) {
189 LLDB_RECORD_METHOD(lldb::SBTypeFilter, SBTypeCategory, GetFilterForType,
190 (lldb::SBTypeNameSpecifier), spec);
193 return LLDB_RECORD_RESULT(SBTypeFilter());
196 return LLDB_RECORD_RESULT(SBTypeFilter());
198 lldb::TypeFilterImplSP children_sp;
201 m_opaque_sp->GetRegexTypeFiltersContainer()->GetExact(
202 ConstString(spec.GetName()), children_sp);
204 m_opaque_sp->GetTypeFiltersContainer()->GetExact(
205 ConstString(spec.GetName()), children_sp);
208 return LLDB_RECORD_RESULT(lldb::SBTypeFilter());
210 TypeFilterImplSP filter_sp =
211 std::static_pointer_cast<TypeFilterImpl>(children_sp);
213 return LLDB_RECORD_RESULT(lldb::SBTypeFilter(filter_sp));
215 SBTypeFormat SBTypeCategory::GetFormatForType(SBTypeNameSpecifier spec) {
216 LLDB_RECORD_METHOD(lldb::SBTypeFormat, SBTypeCategory, GetFormatForType,
217 (lldb::SBTypeNameSpecifier), spec);
220 return LLDB_RECORD_RESULT(SBTypeFormat());
223 return LLDB_RECORD_RESULT(SBTypeFormat());
225 lldb::TypeFormatImplSP format_sp;
228 m_opaque_sp->GetRegexTypeFormatsContainer()->GetExact(
229 ConstString(spec.GetName()), format_sp);
231 m_opaque_sp->GetTypeFormatsContainer()->GetExact(
232 ConstString(spec.GetName()), format_sp);
235 return LLDB_RECORD_RESULT(lldb::SBTypeFormat());
237 return LLDB_RECORD_RESULT(lldb::SBTypeFormat(format_sp));
240 SBTypeSummary SBTypeCategory::GetSummaryForType(SBTypeNameSpecifier spec) {
241 LLDB_RECORD_METHOD(lldb::SBTypeSummary, SBTypeCategory, GetSummaryForType,
242 (lldb::SBTypeNameSpecifier), spec);
245 return LLDB_RECORD_RESULT(SBTypeSummary());
248 return LLDB_RECORD_RESULT(SBTypeSummary());
250 lldb::TypeSummaryImplSP summary_sp;
253 m_opaque_sp->GetRegexTypeSummariesContainer()->GetExact(
254 ConstString(spec.GetName()), summary_sp);
256 m_opaque_sp->GetTypeSummariesContainer()->GetExact(
257 ConstString(spec.GetName()), summary_sp);
260 return LLDB_RECORD_RESULT(lldb::SBTypeSummary());
262 return LLDB_RECORD_RESULT(lldb::SBTypeSummary(summary_sp));
265 SBTypeSynthetic SBTypeCategory::GetSyntheticForType(SBTypeNameSpecifier spec) {
266 LLDB_RECORD_METHOD(lldb::SBTypeSynthetic, SBTypeCategory, GetSyntheticForType,
267 (lldb::SBTypeNameSpecifier), spec);
270 return LLDB_RECORD_RESULT(SBTypeSynthetic());
273 return LLDB_RECORD_RESULT(SBTypeSynthetic());
275 lldb::SyntheticChildrenSP children_sp;
278 m_opaque_sp->GetRegexTypeSyntheticsContainer()->GetExact(
279 ConstString(spec.GetName()), children_sp);
281 m_opaque_sp->GetTypeSyntheticsContainer()->GetExact(
282 ConstString(spec.GetName()), children_sp);
285 return LLDB_RECORD_RESULT(lldb::SBTypeSynthetic());
287 ScriptedSyntheticChildrenSP synth_sp =
288 std::static_pointer_cast<ScriptedSyntheticChildren>(children_sp);
290 return LLDB_RECORD_RESULT(lldb::SBTypeSynthetic(synth_sp));
293 SBTypeFilter SBTypeCategory::GetFilterAtIndex(uint32_t index) {
294 LLDB_RECORD_METHOD(lldb::SBTypeFilter, SBTypeCategory, GetFilterAtIndex,
298 return LLDB_RECORD_RESULT(SBTypeFilter());
299 lldb::SyntheticChildrenSP children_sp =
300 m_opaque_sp->GetSyntheticAtIndex((index));
302 if (!children_sp.get())
303 return LLDB_RECORD_RESULT(lldb::SBTypeFilter());
305 TypeFilterImplSP filter_sp =
306 std::static_pointer_cast<TypeFilterImpl>(children_sp);
308 return LLDB_RECORD_RESULT(lldb::SBTypeFilter(filter_sp));
311 SBTypeFormat SBTypeCategory::GetFormatAtIndex(uint32_t index) {
312 LLDB_RECORD_METHOD(lldb::SBTypeFormat, SBTypeCategory, GetFormatAtIndex,
316 return LLDB_RECORD_RESULT(SBTypeFormat());
317 return LLDB_RECORD_RESULT(
318 SBTypeFormat(m_opaque_sp->GetFormatAtIndex((index))));
321 SBTypeSummary SBTypeCategory::GetSummaryAtIndex(uint32_t index) {
322 LLDB_RECORD_METHOD(lldb::SBTypeSummary, SBTypeCategory, GetSummaryAtIndex,
326 return LLDB_RECORD_RESULT(SBTypeSummary());
327 return LLDB_RECORD_RESULT(
328 SBTypeSummary(m_opaque_sp->GetSummaryAtIndex((index))));
331 SBTypeSynthetic SBTypeCategory::GetSyntheticAtIndex(uint32_t index) {
332 LLDB_RECORD_METHOD(lldb::SBTypeSynthetic, SBTypeCategory, GetSyntheticAtIndex,
336 return LLDB_RECORD_RESULT(SBTypeSynthetic());
337 lldb::SyntheticChildrenSP children_sp =
338 m_opaque_sp->GetSyntheticAtIndex((index));
340 if (!children_sp.get())
341 return LLDB_RECORD_RESULT(lldb::SBTypeSynthetic());
343 ScriptedSyntheticChildrenSP synth_sp =
344 std::static_pointer_cast<ScriptedSyntheticChildren>(children_sp);
346 return LLDB_RECORD_RESULT(lldb::SBTypeSynthetic(synth_sp));
349 bool SBTypeCategory::AddTypeFormat(SBTypeNameSpecifier type_name,
350 SBTypeFormat format) {
351 LLDB_RECORD_METHOD(bool, SBTypeCategory, AddTypeFormat,
352 (lldb::SBTypeNameSpecifier, lldb::SBTypeFormat), type_name,
358 if (!type_name.IsValid())
361 if (!format.IsValid())
364 if (type_name.IsRegex())
365 m_opaque_sp->GetRegexTypeFormatsContainer()->Add(
367 llvm::StringRef::withNullAsEmpty(type_name.GetName())),
370 m_opaque_sp->GetTypeFormatsContainer()->Add(
371 ConstString(type_name.GetName()), format.GetSP());
376 bool SBTypeCategory::DeleteTypeFormat(SBTypeNameSpecifier type_name) {
377 LLDB_RECORD_METHOD(bool, SBTypeCategory, DeleteTypeFormat,
378 (lldb::SBTypeNameSpecifier), type_name);
383 if (!type_name.IsValid())
386 if (type_name.IsRegex())
387 return m_opaque_sp->GetRegexTypeFormatsContainer()->Delete(
388 ConstString(type_name.GetName()));
390 return m_opaque_sp->GetTypeFormatsContainer()->Delete(
391 ConstString(type_name.GetName()));
394 bool SBTypeCategory::AddTypeSummary(SBTypeNameSpecifier type_name,
395 SBTypeSummary summary) {
396 LLDB_RECORD_METHOD(bool, SBTypeCategory, AddTypeSummary,
397 (lldb::SBTypeNameSpecifier, lldb::SBTypeSummary),
403 if (!type_name.IsValid())
406 if (!summary.IsValid())
409 // FIXME: we need to iterate over all the Debugger objects and have each of
410 // them contain a copy of the function
411 // since we currently have formatters live in a global space, while Python
412 // code lives in a specific Debugger-related environment this should
413 // eventually be fixed by deciding a final location in the LLDB object space
415 if (summary.IsFunctionCode()) {
416 const void *name_token =
417 (const void *)ConstString(type_name.GetName()).GetCString();
418 const char *script = summary.GetData();
420 input.SplitIntoLines(script, strlen(script));
421 uint32_t num_debuggers = lldb_private::Debugger::GetNumDebuggers();
422 bool need_set = true;
423 for (uint32_t j = 0; j < num_debuggers; j++) {
424 DebuggerSP debugger_sp = lldb_private::Debugger::GetDebuggerAtIndex(j);
426 ScriptInterpreter *interpreter_ptr =
427 debugger_sp->GetScriptInterpreter();
428 if (interpreter_ptr) {
430 if (interpreter_ptr->GenerateTypeScriptFunction(input, output,
435 summary.SetFunctionName(output.c_str());
443 if (type_name.IsRegex())
444 m_opaque_sp->GetRegexTypeSummariesContainer()->Add(
446 llvm::StringRef::withNullAsEmpty(type_name.GetName())),
449 m_opaque_sp->GetTypeSummariesContainer()->Add(
450 ConstString(type_name.GetName()), summary.GetSP());
455 bool SBTypeCategory::DeleteTypeSummary(SBTypeNameSpecifier type_name) {
456 LLDB_RECORD_METHOD(bool, SBTypeCategory, DeleteTypeSummary,
457 (lldb::SBTypeNameSpecifier), type_name);
462 if (!type_name.IsValid())
465 if (type_name.IsRegex())
466 return m_opaque_sp->GetRegexTypeSummariesContainer()->Delete(
467 ConstString(type_name.GetName()));
469 return m_opaque_sp->GetTypeSummariesContainer()->Delete(
470 ConstString(type_name.GetName()));
473 bool SBTypeCategory::AddTypeFilter(SBTypeNameSpecifier type_name,
474 SBTypeFilter filter) {
475 LLDB_RECORD_METHOD(bool, SBTypeCategory, AddTypeFilter,
476 (lldb::SBTypeNameSpecifier, lldb::SBTypeFilter), type_name,
482 if (!type_name.IsValid())
485 if (!filter.IsValid())
488 if (type_name.IsRegex())
489 m_opaque_sp->GetRegexTypeFiltersContainer()->Add(
491 llvm::StringRef::withNullAsEmpty(type_name.GetName())),
494 m_opaque_sp->GetTypeFiltersContainer()->Add(
495 ConstString(type_name.GetName()), filter.GetSP());
500 bool SBTypeCategory::DeleteTypeFilter(SBTypeNameSpecifier type_name) {
501 LLDB_RECORD_METHOD(bool, SBTypeCategory, DeleteTypeFilter,
502 (lldb::SBTypeNameSpecifier), type_name);
507 if (!type_name.IsValid())
510 if (type_name.IsRegex())
511 return m_opaque_sp->GetRegexTypeFiltersContainer()->Delete(
512 ConstString(type_name.GetName()));
514 return m_opaque_sp->GetTypeFiltersContainer()->Delete(
515 ConstString(type_name.GetName()));
518 bool SBTypeCategory::AddTypeSynthetic(SBTypeNameSpecifier type_name,
519 SBTypeSynthetic synth) {
520 LLDB_RECORD_METHOD(bool, SBTypeCategory, AddTypeSynthetic,
521 (lldb::SBTypeNameSpecifier, lldb::SBTypeSynthetic),
527 if (!type_name.IsValid())
530 if (!synth.IsValid())
533 // FIXME: we need to iterate over all the Debugger objects and have each of
534 // them contain a copy of the function
535 // since we currently have formatters live in a global space, while Python
536 // code lives in a specific Debugger-related environment this should
537 // eventually be fixed by deciding a final location in the LLDB object space
539 if (synth.IsClassCode()) {
540 const void *name_token =
541 (const void *)ConstString(type_name.GetName()).GetCString();
542 const char *script = synth.GetData();
544 input.SplitIntoLines(script, strlen(script));
545 uint32_t num_debuggers = lldb_private::Debugger::GetNumDebuggers();
546 bool need_set = true;
547 for (uint32_t j = 0; j < num_debuggers; j++) {
548 DebuggerSP debugger_sp = lldb_private::Debugger::GetDebuggerAtIndex(j);
550 ScriptInterpreter *interpreter_ptr =
551 debugger_sp->GetScriptInterpreter();
552 if (interpreter_ptr) {
554 if (interpreter_ptr->GenerateTypeSynthClass(input, output,
559 synth.SetClassName(output.c_str());
567 if (type_name.IsRegex())
568 m_opaque_sp->GetRegexTypeSyntheticsContainer()->Add(
570 llvm::StringRef::withNullAsEmpty(type_name.GetName())),
573 m_opaque_sp->GetTypeSyntheticsContainer()->Add(
574 ConstString(type_name.GetName()), synth.GetSP());
579 bool SBTypeCategory::DeleteTypeSynthetic(SBTypeNameSpecifier type_name) {
580 LLDB_RECORD_METHOD(bool, SBTypeCategory, DeleteTypeSynthetic,
581 (lldb::SBTypeNameSpecifier), type_name);
586 if (!type_name.IsValid())
589 if (type_name.IsRegex())
590 return m_opaque_sp->GetRegexTypeSyntheticsContainer()->Delete(
591 ConstString(type_name.GetName()));
593 return m_opaque_sp->GetTypeSyntheticsContainer()->Delete(
594 ConstString(type_name.GetName()));
597 bool SBTypeCategory::GetDescription(lldb::SBStream &description,
598 lldb::DescriptionLevel description_level) {
599 LLDB_RECORD_METHOD(bool, SBTypeCategory, GetDescription,
600 (lldb::SBStream &, lldb::DescriptionLevel), description,
605 description.Printf("Category name: %s\n", GetName());
609 lldb::SBTypeCategory &SBTypeCategory::
610 operator=(const lldb::SBTypeCategory &rhs) {
611 LLDB_RECORD_METHOD(lldb::SBTypeCategory &,
612 SBTypeCategory, operator=,(const lldb::SBTypeCategory &),
616 m_opaque_sp = rhs.m_opaque_sp;
618 return LLDB_RECORD_RESULT(*this);
621 bool SBTypeCategory::operator==(lldb::SBTypeCategory &rhs) {
622 LLDB_RECORD_METHOD(bool, SBTypeCategory, operator==,(lldb::SBTypeCategory &),
626 return !rhs.IsValid();
628 return m_opaque_sp.get() == rhs.m_opaque_sp.get();
631 bool SBTypeCategory::operator!=(lldb::SBTypeCategory &rhs) {
632 LLDB_RECORD_METHOD(bool, SBTypeCategory, operator!=,(lldb::SBTypeCategory &),
636 return rhs.IsValid();
638 return m_opaque_sp.get() != rhs.m_opaque_sp.get();
641 lldb::TypeCategoryImplSP SBTypeCategory::GetSP() {
643 return lldb::TypeCategoryImplSP();
647 void SBTypeCategory::SetSP(
648 const lldb::TypeCategoryImplSP &typecategory_impl_sp) {
649 m_opaque_sp = typecategory_impl_sp;
652 SBTypeCategory::SBTypeCategory(
653 const lldb::TypeCategoryImplSP &typecategory_impl_sp)
654 : m_opaque_sp(typecategory_impl_sp) {}
656 bool SBTypeCategory::IsDefaultCategory() {
660 return (strcmp(m_opaque_sp->GetName(), "default") == 0);
663 namespace lldb_private {
667 void RegisterMethods<SBTypeCategory>(Registry &R) {
668 LLDB_REGISTER_CONSTRUCTOR(SBTypeCategory, ());
669 LLDB_REGISTER_CONSTRUCTOR(SBTypeCategory, (const lldb::SBTypeCategory &));
670 LLDB_REGISTER_METHOD_CONST(bool, SBTypeCategory, IsValid, ());
671 LLDB_REGISTER_METHOD_CONST(bool, SBTypeCategory, operator bool, ());
672 LLDB_REGISTER_METHOD(bool, SBTypeCategory, GetEnabled, ());
673 LLDB_REGISTER_METHOD(void, SBTypeCategory, SetEnabled, (bool));
674 LLDB_REGISTER_METHOD(const char *, SBTypeCategory, GetName, ());
675 LLDB_REGISTER_METHOD(lldb::LanguageType, SBTypeCategory, GetLanguageAtIndex,
677 LLDB_REGISTER_METHOD(uint32_t, SBTypeCategory, GetNumLanguages, ());
678 LLDB_REGISTER_METHOD(void, SBTypeCategory, AddLanguage,
679 (lldb::LanguageType));
680 LLDB_REGISTER_METHOD(uint32_t, SBTypeCategory, GetNumFormats, ());
681 LLDB_REGISTER_METHOD(uint32_t, SBTypeCategory, GetNumSummaries, ());
682 LLDB_REGISTER_METHOD(uint32_t, SBTypeCategory, GetNumFilters, ());
683 LLDB_REGISTER_METHOD(uint32_t, SBTypeCategory, GetNumSynthetics, ());
684 LLDB_REGISTER_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
685 GetTypeNameSpecifierForSyntheticAtIndex, (uint32_t));
686 LLDB_REGISTER_METHOD(lldb::SBTypeSummary, SBTypeCategory, GetSummaryForType,
687 (lldb::SBTypeNameSpecifier));
688 LLDB_REGISTER_METHOD(lldb::SBTypeSynthetic, SBTypeCategory,
689 GetSyntheticForType, (lldb::SBTypeNameSpecifier));
690 LLDB_REGISTER_METHOD(lldb::SBTypeFilter, SBTypeCategory, GetFilterAtIndex,
692 LLDB_REGISTER_METHOD(lldb::SBTypeSummary, SBTypeCategory, GetSummaryAtIndex,
694 LLDB_REGISTER_METHOD(lldb::SBTypeSynthetic, SBTypeCategory,
695 GetSyntheticAtIndex, (uint32_t));
696 LLDB_REGISTER_METHOD(bool, SBTypeCategory, AddTypeSummary,
697 (lldb::SBTypeNameSpecifier, lldb::SBTypeSummary));
698 LLDB_REGISTER_METHOD(bool, SBTypeCategory, AddTypeSynthetic,
699 (lldb::SBTypeNameSpecifier, lldb::SBTypeSynthetic));
700 LLDB_REGISTER_METHOD(bool, SBTypeCategory, DeleteTypeSynthetic,
701 (lldb::SBTypeNameSpecifier));
702 LLDB_REGISTER_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
703 GetTypeNameSpecifierForFilterAtIndex, (uint32_t));
704 LLDB_REGISTER_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
705 GetTypeNameSpecifierForFormatAtIndex, (uint32_t));
706 LLDB_REGISTER_METHOD(lldb::SBTypeNameSpecifier, SBTypeCategory,
707 GetTypeNameSpecifierForSummaryAtIndex, (uint32_t));
708 LLDB_REGISTER_METHOD(lldb::SBTypeFilter, SBTypeCategory, GetFilterForType,
709 (lldb::SBTypeNameSpecifier));
710 LLDB_REGISTER_METHOD(lldb::SBTypeFormat, SBTypeCategory, GetFormatForType,
711 (lldb::SBTypeNameSpecifier));
712 LLDB_REGISTER_METHOD(lldb::SBTypeFormat, SBTypeCategory, GetFormatAtIndex,
714 LLDB_REGISTER_METHOD(bool, SBTypeCategory, AddTypeFormat,
715 (lldb::SBTypeNameSpecifier, lldb::SBTypeFormat));
716 LLDB_REGISTER_METHOD(bool, SBTypeCategory, DeleteTypeFormat,
717 (lldb::SBTypeNameSpecifier));
718 LLDB_REGISTER_METHOD(bool, SBTypeCategory, DeleteTypeSummary,
719 (lldb::SBTypeNameSpecifier));
720 LLDB_REGISTER_METHOD(bool, SBTypeCategory, AddTypeFilter,
721 (lldb::SBTypeNameSpecifier, lldb::SBTypeFilter));
722 LLDB_REGISTER_METHOD(bool, SBTypeCategory, DeleteTypeFilter,
723 (lldb::SBTypeNameSpecifier));
724 LLDB_REGISTER_METHOD(bool, SBTypeCategory, GetDescription,
725 (lldb::SBStream &, lldb::DescriptionLevel));
726 LLDB_REGISTER_METHOD(
727 lldb::SBTypeCategory &,
728 SBTypeCategory, operator=,(const lldb::SBTypeCategory &));
729 LLDB_REGISTER_METHOD(bool,
730 SBTypeCategory, operator==,(lldb::SBTypeCategory &));
731 LLDB_REGISTER_METHOD(bool,
732 SBTypeCategory, operator!=,(lldb::SBTypeCategory &));