aboutsummaryrefslogtreecommitdiff
path: root/source/API/SBTypeCategory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/API/SBTypeCategory.cpp')
-rw-r--r--source/API/SBTypeCategory.cpp927
1 files changed, 444 insertions, 483 deletions
diff --git a/source/API/SBTypeCategory.cpp b/source/API/SBTypeCategory.cpp
index 33dada8da39d..38e7cca35dfd 100644
--- a/source/API/SBTypeCategory.cpp
+++ b/source/API/SBTypeCategory.cpp
@@ -1,4 +1,5 @@
-//===-- SBTypeCategory.cpp ----------------------------------------*- C++ -*-===//
+//===-- SBTypeCategory.cpp ----------------------------------------*- C++
+//-*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -9,12 +10,12 @@
#include "lldb/API/SBTypeCategory.h"
+#include "lldb/API/SBStream.h"
#include "lldb/API/SBTypeFilter.h"
#include "lldb/API/SBTypeFormat.h"
+#include "lldb/API/SBTypeNameSpecifier.h"
#include "lldb/API/SBTypeSummary.h"
#include "lldb/API/SBTypeSynthetic.h"
-#include "lldb/API/SBTypeNameSpecifier.h"
-#include "lldb/API/SBStream.h"
#include "lldb/Core/Debugger.h"
#include "lldb/DataFormatters/DataVisualization.h"
@@ -24,581 +25,541 @@
using namespace lldb;
using namespace lldb_private;
-typedef std::pair<lldb::TypeCategoryImplSP,user_id_t> ImplType;
+typedef std::pair<lldb::TypeCategoryImplSP, user_id_t> ImplType;
-SBTypeCategory::SBTypeCategory() :
-m_opaque_sp()
-{
-}
+SBTypeCategory::SBTypeCategory() : m_opaque_sp() {}
-SBTypeCategory::SBTypeCategory (const char* name) :
-m_opaque_sp()
-{
- DataVisualization::Categories::GetCategory(ConstString(name), m_opaque_sp);
+SBTypeCategory::SBTypeCategory(const char *name) : m_opaque_sp() {
+ DataVisualization::Categories::GetCategory(ConstString(name), m_opaque_sp);
}
-SBTypeCategory::SBTypeCategory (const lldb::SBTypeCategory &rhs) :
-m_opaque_sp(rhs.m_opaque_sp)
-{
-}
+SBTypeCategory::SBTypeCategory(const lldb::SBTypeCategory &rhs)
+ : m_opaque_sp(rhs.m_opaque_sp) {}
-SBTypeCategory::~SBTypeCategory ()
-{
-}
+SBTypeCategory::~SBTypeCategory() {}
-bool
-SBTypeCategory::IsValid() const
-{
- return (m_opaque_sp.get() != NULL);
-}
+bool SBTypeCategory::IsValid() const { return (m_opaque_sp.get() != NULL); }
-bool
-SBTypeCategory::GetEnabled ()
-{
- if (!IsValid())
- return false;
- return m_opaque_sp->IsEnabled();
+bool SBTypeCategory::GetEnabled() {
+ if (!IsValid())
+ return false;
+ return m_opaque_sp->IsEnabled();
}
-void
-SBTypeCategory::SetEnabled (bool enabled)
-{
- if (!IsValid())
- return;
- if (enabled)
- DataVisualization::Categories::Enable(m_opaque_sp);
- else
- DataVisualization::Categories::Disable(m_opaque_sp);
+void SBTypeCategory::SetEnabled(bool enabled) {
+ if (!IsValid())
+ return;
+ if (enabled)
+ DataVisualization::Categories::Enable(m_opaque_sp);
+ else
+ DataVisualization::Categories::Disable(m_opaque_sp);
}
-const char*
-SBTypeCategory::GetName()
-{
- if (!IsValid())
- return NULL;
- return m_opaque_sp->GetName();
+const char *SBTypeCategory::GetName() {
+ if (!IsValid())
+ return NULL;
+ return m_opaque_sp->GetName();
}
-lldb::LanguageType
-SBTypeCategory::GetLanguageAtIndex (uint32_t idx)
-{
- if (IsValid())
- return m_opaque_sp->GetLanguageAtIndex(idx);
- return lldb::eLanguageTypeUnknown;
+lldb::LanguageType SBTypeCategory::GetLanguageAtIndex(uint32_t idx) {
+ if (IsValid())
+ return m_opaque_sp->GetLanguageAtIndex(idx);
+ return lldb::eLanguageTypeUnknown;
}
-uint32_t
-SBTypeCategory::GetNumLanguages ()
-{
- if (IsValid())
- return m_opaque_sp->GetNumLanguages();
- return 0;
+uint32_t SBTypeCategory::GetNumLanguages() {
+ if (IsValid())
+ return m_opaque_sp->GetNumLanguages();
+ return 0;
}
-void
-SBTypeCategory::AddLanguage (lldb::LanguageType language)
-{
- if (IsValid())
- m_opaque_sp->AddLanguage(language);
+void SBTypeCategory::AddLanguage(lldb::LanguageType language) {
+ if (IsValid())
+ m_opaque_sp->AddLanguage(language);
}
-uint32_t
-SBTypeCategory::GetNumFormats ()
-{
- if (!IsValid())
- return 0;
-
- return m_opaque_sp->GetTypeFormatsContainer()->GetCount() + m_opaque_sp->GetRegexTypeFormatsContainer()->GetCount();
+uint32_t SBTypeCategory::GetNumFormats() {
+ if (!IsValid())
+ return 0;
+
+ return m_opaque_sp->GetTypeFormatsContainer()->GetCount() +
+ m_opaque_sp->GetRegexTypeFormatsContainer()->GetCount();
}
-uint32_t
-SBTypeCategory::GetNumSummaries ()
-{
- if (!IsValid())
- return 0;
- return m_opaque_sp->GetTypeSummariesContainer()->GetCount() + m_opaque_sp->GetRegexTypeSummariesContainer()->GetCount();
+uint32_t SBTypeCategory::GetNumSummaries() {
+ if (!IsValid())
+ return 0;
+ return m_opaque_sp->GetTypeSummariesContainer()->GetCount() +
+ m_opaque_sp->GetRegexTypeSummariesContainer()->GetCount();
}
-uint32_t
-SBTypeCategory::GetNumFilters ()
-{
- if (!IsValid())
- return 0;
- return m_opaque_sp->GetTypeFiltersContainer()->GetCount() + m_opaque_sp->GetRegexTypeFiltersContainer()->GetCount();
+uint32_t SBTypeCategory::GetNumFilters() {
+ if (!IsValid())
+ return 0;
+ return m_opaque_sp->GetTypeFiltersContainer()->GetCount() +
+ m_opaque_sp->GetRegexTypeFiltersContainer()->GetCount();
}
#ifndef LLDB_DISABLE_PYTHON
-uint32_t
-SBTypeCategory::GetNumSynthetics ()
-{
- if (!IsValid())
- return 0;
- return m_opaque_sp->GetTypeSyntheticsContainer()->GetCount() + m_opaque_sp->GetRegexTypeSyntheticsContainer()->GetCount();
+uint32_t SBTypeCategory::GetNumSynthetics() {
+ if (!IsValid())
+ return 0;
+ return m_opaque_sp->GetTypeSyntheticsContainer()->GetCount() +
+ m_opaque_sp->GetRegexTypeSyntheticsContainer()->GetCount();
}
#endif
lldb::SBTypeNameSpecifier
-SBTypeCategory::GetTypeNameSpecifierForFilterAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeNameSpecifier();
- return SBTypeNameSpecifier(m_opaque_sp->GetTypeNameSpecifierForFilterAtIndex(index));
+SBTypeCategory::GetTypeNameSpecifierForFilterAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeNameSpecifier();
+ return SBTypeNameSpecifier(
+ m_opaque_sp->GetTypeNameSpecifierForFilterAtIndex(index));
}
lldb::SBTypeNameSpecifier
-SBTypeCategory::GetTypeNameSpecifierForFormatAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeNameSpecifier();
- return SBTypeNameSpecifier(m_opaque_sp->GetTypeNameSpecifierForFormatAtIndex(index));
+SBTypeCategory::GetTypeNameSpecifierForFormatAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeNameSpecifier();
+ return SBTypeNameSpecifier(
+ m_opaque_sp->GetTypeNameSpecifierForFormatAtIndex(index));
}
lldb::SBTypeNameSpecifier
-SBTypeCategory::GetTypeNameSpecifierForSummaryAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeNameSpecifier();
- return SBTypeNameSpecifier(m_opaque_sp->GetTypeNameSpecifierForSummaryAtIndex(index));
+SBTypeCategory::GetTypeNameSpecifierForSummaryAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeNameSpecifier();
+ return SBTypeNameSpecifier(
+ m_opaque_sp->GetTypeNameSpecifierForSummaryAtIndex(index));
}
#ifndef LLDB_DISABLE_PYTHON
lldb::SBTypeNameSpecifier
-SBTypeCategory::GetTypeNameSpecifierForSyntheticAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeNameSpecifier();
- return SBTypeNameSpecifier(m_opaque_sp->GetTypeNameSpecifierForSyntheticAtIndex(index));
+SBTypeCategory::GetTypeNameSpecifierForSyntheticAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeNameSpecifier();
+ return SBTypeNameSpecifier(
+ m_opaque_sp->GetTypeNameSpecifierForSyntheticAtIndex(index));
}
#endif
-SBTypeFilter
-SBTypeCategory::GetFilterForType (SBTypeNameSpecifier spec)
-{
- if (!IsValid())
- return SBTypeFilter();
-
- if (!spec.IsValid())
- return SBTypeFilter();
-
- lldb::TypeFilterImplSP children_sp;
-
- if (spec.IsRegex())
- m_opaque_sp->GetRegexTypeFiltersContainer()->GetExact(ConstString(spec.GetName()), children_sp);
- else
- m_opaque_sp->GetTypeFiltersContainer()->GetExact(ConstString(spec.GetName()), children_sp);
-
- if (!children_sp)
- return lldb::SBTypeFilter();
-
- TypeFilterImplSP filter_sp = std::static_pointer_cast<TypeFilterImpl>(children_sp);
-
- return lldb::SBTypeFilter(filter_sp);
-
-}
-SBTypeFormat
-SBTypeCategory::GetFormatForType (SBTypeNameSpecifier spec)
-{
- if (!IsValid())
- return SBTypeFormat();
-
- if (!spec.IsValid())
- return SBTypeFormat();
-
- lldb::TypeFormatImplSP format_sp;
-
- if (spec.IsRegex())
- m_opaque_sp->GetRegexTypeFormatsContainer()->GetExact(ConstString(spec.GetName()), format_sp);
- else
- m_opaque_sp->GetTypeFormatsContainer()->GetExact(ConstString(spec.GetName()), format_sp);
-
- if (!format_sp)
- return lldb::SBTypeFormat();
-
- return lldb::SBTypeFormat(format_sp);
+SBTypeFilter SBTypeCategory::GetFilterForType(SBTypeNameSpecifier spec) {
+ if (!IsValid())
+ return SBTypeFilter();
+
+ if (!spec.IsValid())
+ return SBTypeFilter();
+
+ lldb::TypeFilterImplSP children_sp;
+
+ if (spec.IsRegex())
+ m_opaque_sp->GetRegexTypeFiltersContainer()->GetExact(
+ ConstString(spec.GetName()), children_sp);
+ else
+ m_opaque_sp->GetTypeFiltersContainer()->GetExact(
+ ConstString(spec.GetName()), children_sp);
+
+ if (!children_sp)
+ return lldb::SBTypeFilter();
+
+ TypeFilterImplSP filter_sp =
+ std::static_pointer_cast<TypeFilterImpl>(children_sp);
+
+ return lldb::SBTypeFilter(filter_sp);
+}
+SBTypeFormat SBTypeCategory::GetFormatForType(SBTypeNameSpecifier spec) {
+ if (!IsValid())
+ return SBTypeFormat();
+
+ if (!spec.IsValid())
+ return SBTypeFormat();
+
+ lldb::TypeFormatImplSP format_sp;
+
+ if (spec.IsRegex())
+ m_opaque_sp->GetRegexTypeFormatsContainer()->GetExact(
+ ConstString(spec.GetName()), format_sp);
+ else
+ m_opaque_sp->GetTypeFormatsContainer()->GetExact(
+ ConstString(spec.GetName()), format_sp);
+
+ if (!format_sp)
+ return lldb::SBTypeFormat();
+
+ return lldb::SBTypeFormat(format_sp);
}
#ifndef LLDB_DISABLE_PYTHON
-SBTypeSummary
-SBTypeCategory::GetSummaryForType (SBTypeNameSpecifier spec)
-{
- if (!IsValid())
- return SBTypeSummary();
-
- if (!spec.IsValid())
- return SBTypeSummary();
-
- lldb::TypeSummaryImplSP summary_sp;
-
- if (spec.IsRegex())
- m_opaque_sp->GetRegexTypeSummariesContainer()->GetExact(ConstString(spec.GetName()), summary_sp);
- else
- m_opaque_sp->GetTypeSummariesContainer()->GetExact(ConstString(spec.GetName()), summary_sp);
-
- if (!summary_sp)
- return lldb::SBTypeSummary();
-
- return lldb::SBTypeSummary(summary_sp);
+SBTypeSummary SBTypeCategory::GetSummaryForType(SBTypeNameSpecifier spec) {
+ if (!IsValid())
+ return SBTypeSummary();
+
+ if (!spec.IsValid())
+ return SBTypeSummary();
+
+ lldb::TypeSummaryImplSP summary_sp;
+
+ if (spec.IsRegex())
+ m_opaque_sp->GetRegexTypeSummariesContainer()->GetExact(
+ ConstString(spec.GetName()), summary_sp);
+ else
+ m_opaque_sp->GetTypeSummariesContainer()->GetExact(
+ ConstString(spec.GetName()), summary_sp);
+
+ if (!summary_sp)
+ return lldb::SBTypeSummary();
+
+ return lldb::SBTypeSummary(summary_sp);
}
#endif // LLDB_DISABLE_PYTHON
#ifndef LLDB_DISABLE_PYTHON
-SBTypeSynthetic
-SBTypeCategory::GetSyntheticForType (SBTypeNameSpecifier spec)
-{
- if (!IsValid())
- return SBTypeSynthetic();
-
- if (!spec.IsValid())
- return SBTypeSynthetic();
-
- lldb::SyntheticChildrenSP children_sp;
-
- if (spec.IsRegex())
- m_opaque_sp->GetRegexTypeSyntheticsContainer()->GetExact(ConstString(spec.GetName()), children_sp);
- else
- m_opaque_sp->GetTypeSyntheticsContainer()->GetExact(ConstString(spec.GetName()), children_sp);
-
- if (!children_sp)
- return lldb::SBTypeSynthetic();
-
- ScriptedSyntheticChildrenSP synth_sp = std::static_pointer_cast<ScriptedSyntheticChildren>(children_sp);
-
- return lldb::SBTypeSynthetic(synth_sp);
+SBTypeSynthetic SBTypeCategory::GetSyntheticForType(SBTypeNameSpecifier spec) {
+ if (!IsValid())
+ return SBTypeSynthetic();
+
+ if (!spec.IsValid())
+ return SBTypeSynthetic();
+
+ lldb::SyntheticChildrenSP children_sp;
+
+ if (spec.IsRegex())
+ m_opaque_sp->GetRegexTypeSyntheticsContainer()->GetExact(
+ ConstString(spec.GetName()), children_sp);
+ else
+ m_opaque_sp->GetTypeSyntheticsContainer()->GetExact(
+ ConstString(spec.GetName()), children_sp);
+
+ if (!children_sp)
+ return lldb::SBTypeSynthetic();
+
+ ScriptedSyntheticChildrenSP synth_sp =
+ std::static_pointer_cast<ScriptedSyntheticChildren>(children_sp);
+
+ return lldb::SBTypeSynthetic(synth_sp);
}
#endif
#ifndef LLDB_DISABLE_PYTHON
-SBTypeFilter
-SBTypeCategory::GetFilterAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeFilter();
- lldb::SyntheticChildrenSP children_sp = m_opaque_sp->GetSyntheticAtIndex((index));
-
- if (!children_sp.get())
- return lldb::SBTypeFilter();
-
- TypeFilterImplSP filter_sp = std::static_pointer_cast<TypeFilterImpl>(children_sp);
-
- return lldb::SBTypeFilter(filter_sp);
+SBTypeFilter SBTypeCategory::GetFilterAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeFilter();
+ lldb::SyntheticChildrenSP children_sp =
+ m_opaque_sp->GetSyntheticAtIndex((index));
+
+ if (!children_sp.get())
+ return lldb::SBTypeFilter();
+
+ TypeFilterImplSP filter_sp =
+ std::static_pointer_cast<TypeFilterImpl>(children_sp);
+
+ return lldb::SBTypeFilter(filter_sp);
}
#endif
-SBTypeFormat
-SBTypeCategory::GetFormatAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeFormat();
- return SBTypeFormat(m_opaque_sp->GetFormatAtIndex((index)));
+SBTypeFormat SBTypeCategory::GetFormatAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeFormat();
+ return SBTypeFormat(m_opaque_sp->GetFormatAtIndex((index)));
}
#ifndef LLDB_DISABLE_PYTHON
-SBTypeSummary
-SBTypeCategory::GetSummaryAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeSummary();
- return SBTypeSummary(m_opaque_sp->GetSummaryAtIndex((index)));
+SBTypeSummary SBTypeCategory::GetSummaryAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeSummary();
+ return SBTypeSummary(m_opaque_sp->GetSummaryAtIndex((index)));
}
#endif
#ifndef LLDB_DISABLE_PYTHON
-SBTypeSynthetic
-SBTypeCategory::GetSyntheticAtIndex (uint32_t index)
-{
- if (!IsValid())
- return SBTypeSynthetic();
- lldb::SyntheticChildrenSP children_sp = m_opaque_sp->GetSyntheticAtIndex((index));
-
- if (!children_sp.get())
- return lldb::SBTypeSynthetic();
-
- ScriptedSyntheticChildrenSP synth_sp = std::static_pointer_cast<ScriptedSyntheticChildren>(children_sp);
-
- return lldb::SBTypeSynthetic(synth_sp);
+SBTypeSynthetic SBTypeCategory::GetSyntheticAtIndex(uint32_t index) {
+ if (!IsValid())
+ return SBTypeSynthetic();
+ lldb::SyntheticChildrenSP children_sp =
+ m_opaque_sp->GetSyntheticAtIndex((index));
+
+ if (!children_sp.get())
+ return lldb::SBTypeSynthetic();
+
+ ScriptedSyntheticChildrenSP synth_sp =
+ std::static_pointer_cast<ScriptedSyntheticChildren>(children_sp);
+
+ return lldb::SBTypeSynthetic(synth_sp);
}
#endif
-bool
-SBTypeCategory::AddTypeFormat (SBTypeNameSpecifier type_name,
- SBTypeFormat format)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (!format.IsValid())
- return false;
-
- if (type_name.IsRegex())
- m_opaque_sp->GetRegexTypeFormatsContainer()->Add(lldb::RegularExpressionSP(new RegularExpression(type_name.GetName())), format.GetSP());
- else
- m_opaque_sp->GetTypeFormatsContainer()->Add(ConstString(type_name.GetName()), format.GetSP());
-
- return true;
-}
-
-bool
-SBTypeCategory::DeleteTypeFormat (SBTypeNameSpecifier type_name)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (type_name.IsRegex())
- return m_opaque_sp->GetRegexTypeFormatsContainer()->Delete(ConstString(type_name.GetName()));
- else
- return m_opaque_sp->GetTypeFormatsContainer()->Delete(ConstString(type_name.GetName()));
+bool SBTypeCategory::AddTypeFormat(SBTypeNameSpecifier type_name,
+ SBTypeFormat format) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (!format.IsValid())
+ return false;
+
+ if (type_name.IsRegex())
+ m_opaque_sp->GetRegexTypeFormatsContainer()->Add(
+ lldb::RegularExpressionSP(new RegularExpression(
+ llvm::StringRef::withNullAsEmpty(type_name.GetName()))),
+ format.GetSP());
+ else
+ m_opaque_sp->GetTypeFormatsContainer()->Add(
+ ConstString(type_name.GetName()), format.GetSP());
+
+ return true;
+}
+
+bool SBTypeCategory::DeleteTypeFormat(SBTypeNameSpecifier type_name) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (type_name.IsRegex())
+ return m_opaque_sp->GetRegexTypeFormatsContainer()->Delete(
+ ConstString(type_name.GetName()));
+ else
+ return m_opaque_sp->GetTypeFormatsContainer()->Delete(
+ ConstString(type_name.GetName()));
}
#ifndef LLDB_DISABLE_PYTHON
-bool
-SBTypeCategory::AddTypeSummary (SBTypeNameSpecifier type_name,
- SBTypeSummary summary)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (!summary.IsValid())
- return false;
-
- // FIXME: we need to iterate over all the Debugger objects and have each of them contain a copy of the function
- // since we currently have formatters live in a global space, while Python code lives in a specific Debugger-related environment
- // this should eventually be fixed by deciding a final location in the LLDB object space for formatters
- if (summary.IsFunctionCode())
- {
- const void *name_token = (const void*)ConstString(type_name.GetName()).GetCString();
- const char* script = summary.GetData();
- StringList input; input.SplitIntoLines(script, strlen(script));
- uint32_t num_debuggers = lldb_private::Debugger::GetNumDebuggers();
- bool need_set = true;
- for (uint32_t j = 0;
- j < num_debuggers;
- j++)
- {
- DebuggerSP debugger_sp = lldb_private::Debugger::GetDebuggerAtIndex(j);
- if (debugger_sp)
- {
- ScriptInterpreter* interpreter_ptr = debugger_sp->GetCommandInterpreter().GetScriptInterpreter();
- if (interpreter_ptr)
- {
- std::string output;
- if (interpreter_ptr->GenerateTypeScriptFunction(input, output, name_token) && !output.empty())
- {
- if (need_set)
- {
- need_set = false;
- summary.SetFunctionName(output.c_str());
- }
- }
- }
+bool SBTypeCategory::AddTypeSummary(SBTypeNameSpecifier type_name,
+ SBTypeSummary summary) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (!summary.IsValid())
+ return false;
+
+ // FIXME: we need to iterate over all the Debugger objects and have each of
+ // them contain a copy of the function
+ // since we currently have formatters live in a global space, while Python
+ // code lives in a specific Debugger-related environment
+ // this should eventually be fixed by deciding a final location in the LLDB
+ // object space for formatters
+ if (summary.IsFunctionCode()) {
+ const void *name_token =
+ (const void *)ConstString(type_name.GetName()).GetCString();
+ const char *script = summary.GetData();
+ StringList input;
+ input.SplitIntoLines(script, strlen(script));
+ uint32_t num_debuggers = lldb_private::Debugger::GetNumDebuggers();
+ bool need_set = true;
+ for (uint32_t j = 0; j < num_debuggers; j++) {
+ DebuggerSP debugger_sp = lldb_private::Debugger::GetDebuggerAtIndex(j);
+ if (debugger_sp) {
+ ScriptInterpreter *interpreter_ptr =
+ debugger_sp->GetCommandInterpreter().GetScriptInterpreter();
+ if (interpreter_ptr) {
+ std::string output;
+ if (interpreter_ptr->GenerateTypeScriptFunction(input, output,
+ name_token) &&
+ !output.empty()) {
+ if (need_set) {
+ need_set = false;
+ summary.SetFunctionName(output.c_str());
}
+ }
}
+ }
}
-
- if (type_name.IsRegex())
- m_opaque_sp->GetRegexTypeSummariesContainer()->Add(lldb::RegularExpressionSP(new RegularExpression(type_name.GetName())), summary.GetSP());
- else
- m_opaque_sp->GetTypeSummariesContainer()->Add(ConstString(type_name.GetName()), summary.GetSP());
-
- return true;
+ }
+
+ if (type_name.IsRegex())
+ m_opaque_sp->GetRegexTypeSummariesContainer()->Add(
+ lldb::RegularExpressionSP(new RegularExpression(
+ llvm::StringRef::withNullAsEmpty(type_name.GetName()))),
+ summary.GetSP());
+ else
+ m_opaque_sp->GetTypeSummariesContainer()->Add(
+ ConstString(type_name.GetName()), summary.GetSP());
+
+ return true;
}
#endif
-bool
-SBTypeCategory::DeleteTypeSummary (SBTypeNameSpecifier type_name)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (type_name.IsRegex())
- return m_opaque_sp->GetRegexTypeSummariesContainer()->Delete(ConstString(type_name.GetName()));
- else
- return m_opaque_sp->GetTypeSummariesContainer()->Delete(ConstString(type_name.GetName()));
-}
-
-bool
-SBTypeCategory::AddTypeFilter (SBTypeNameSpecifier type_name,
- SBTypeFilter filter)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (!filter.IsValid())
- return false;
-
- if (type_name.IsRegex())
- m_opaque_sp->GetRegexTypeFiltersContainer()->Add(lldb::RegularExpressionSP(new RegularExpression(type_name.GetName())), filter.GetSP());
- else
- m_opaque_sp->GetTypeFiltersContainer()->Add(ConstString(type_name.GetName()), filter.GetSP());
-
- return true;
-}
-
-bool
-SBTypeCategory::DeleteTypeFilter (SBTypeNameSpecifier type_name)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (type_name.IsRegex())
- return m_opaque_sp->GetRegexTypeFiltersContainer()->Delete(ConstString(type_name.GetName()));
- else
- return m_opaque_sp->GetTypeFiltersContainer()->Delete(ConstString(type_name.GetName()));
+bool SBTypeCategory::DeleteTypeSummary(SBTypeNameSpecifier type_name) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (type_name.IsRegex())
+ return m_opaque_sp->GetRegexTypeSummariesContainer()->Delete(
+ ConstString(type_name.GetName()));
+ else
+ return m_opaque_sp->GetTypeSummariesContainer()->Delete(
+ ConstString(type_name.GetName()));
+}
+
+bool SBTypeCategory::AddTypeFilter(SBTypeNameSpecifier type_name,
+ SBTypeFilter filter) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (!filter.IsValid())
+ return false;
+
+ if (type_name.IsRegex())
+ m_opaque_sp->GetRegexTypeFiltersContainer()->Add(
+ lldb::RegularExpressionSP(new RegularExpression(
+ llvm::StringRef::withNullAsEmpty(type_name.GetName()))),
+ filter.GetSP());
+ else
+ m_opaque_sp->GetTypeFiltersContainer()->Add(
+ ConstString(type_name.GetName()), filter.GetSP());
+
+ return true;
+}
+
+bool SBTypeCategory::DeleteTypeFilter(SBTypeNameSpecifier type_name) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (type_name.IsRegex())
+ return m_opaque_sp->GetRegexTypeFiltersContainer()->Delete(
+ ConstString(type_name.GetName()));
+ else
+ return m_opaque_sp->GetTypeFiltersContainer()->Delete(
+ ConstString(type_name.GetName()));
}
#ifndef LLDB_DISABLE_PYTHON
-bool
-SBTypeCategory::AddTypeSynthetic (SBTypeNameSpecifier type_name,
- SBTypeSynthetic synth)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (!synth.IsValid())
- return false;
-
- // FIXME: we need to iterate over all the Debugger objects and have each of them contain a copy of the function
- // since we currently have formatters live in a global space, while Python code lives in a specific Debugger-related environment
- // this should eventually be fixed by deciding a final location in the LLDB object space for formatters
- if (synth.IsClassCode())
- {
- const void *name_token = (const void*)ConstString(type_name.GetName()).GetCString();
- const char* script = synth.GetData();
- StringList input; input.SplitIntoLines(script, strlen(script));
- uint32_t num_debuggers = lldb_private::Debugger::GetNumDebuggers();
- bool need_set = true;
- for (uint32_t j = 0;
- j < num_debuggers;
- j++)
- {
- DebuggerSP debugger_sp = lldb_private::Debugger::GetDebuggerAtIndex(j);
- if (debugger_sp)
- {
- ScriptInterpreter* interpreter_ptr = debugger_sp->GetCommandInterpreter().GetScriptInterpreter();
- if (interpreter_ptr)
- {
- std::string output;
- if (interpreter_ptr->GenerateTypeSynthClass(input, output, name_token) && !output.empty())
- {
- if (need_set)
- {
- need_set = false;
- synth.SetClassName(output.c_str());
- }
- }
- }
+bool SBTypeCategory::AddTypeSynthetic(SBTypeNameSpecifier type_name,
+ SBTypeSynthetic synth) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (!synth.IsValid())
+ return false;
+
+ // FIXME: we need to iterate over all the Debugger objects and have each of
+ // them contain a copy of the function
+ // since we currently have formatters live in a global space, while Python
+ // code lives in a specific Debugger-related environment
+ // this should eventually be fixed by deciding a final location in the LLDB
+ // object space for formatters
+ if (synth.IsClassCode()) {
+ const void *name_token =
+ (const void *)ConstString(type_name.GetName()).GetCString();
+ const char *script = synth.GetData();
+ StringList input;
+ input.SplitIntoLines(script, strlen(script));
+ uint32_t num_debuggers = lldb_private::Debugger::GetNumDebuggers();
+ bool need_set = true;
+ for (uint32_t j = 0; j < num_debuggers; j++) {
+ DebuggerSP debugger_sp = lldb_private::Debugger::GetDebuggerAtIndex(j);
+ if (debugger_sp) {
+ ScriptInterpreter *interpreter_ptr =
+ debugger_sp->GetCommandInterpreter().GetScriptInterpreter();
+ if (interpreter_ptr) {
+ std::string output;
+ if (interpreter_ptr->GenerateTypeSynthClass(input, output,
+ name_token) &&
+ !output.empty()) {
+ if (need_set) {
+ need_set = false;
+ synth.SetClassName(output.c_str());
}
+ }
}
+ }
}
-
- if (type_name.IsRegex())
- m_opaque_sp->GetRegexTypeSyntheticsContainer()->Add(lldb::RegularExpressionSP(new RegularExpression(type_name.GetName())), synth.GetSP());
- else
- m_opaque_sp->GetTypeSyntheticsContainer()->Add(ConstString(type_name.GetName()), synth.GetSP());
-
- return true;
-}
-
-bool
-SBTypeCategory::DeleteTypeSynthetic (SBTypeNameSpecifier type_name)
-{
- if (!IsValid())
- return false;
-
- if (!type_name.IsValid())
- return false;
-
- if (type_name.IsRegex())
- return m_opaque_sp->GetRegexTypeSyntheticsContainer()->Delete(ConstString(type_name.GetName()));
- else
- return m_opaque_sp->GetTypeSyntheticsContainer()->Delete(ConstString(type_name.GetName()));
+ }
+
+ if (type_name.IsRegex())
+ m_opaque_sp->GetRegexTypeSyntheticsContainer()->Add(
+ lldb::RegularExpressionSP(new RegularExpression(
+ llvm::StringRef::withNullAsEmpty(type_name.GetName()))),
+ synth.GetSP());
+ else
+ m_opaque_sp->GetTypeSyntheticsContainer()->Add(
+ ConstString(type_name.GetName()), synth.GetSP());
+
+ return true;
}
-#endif // LLDB_DISABLE_PYTHON
-bool
-SBTypeCategory::GetDescription (lldb::SBStream &description,
- lldb::DescriptionLevel description_level)
-{
- if (!IsValid())
- return false;
- description.Printf("Category name: %s\n",GetName());
- return true;
-}
-
-lldb::SBTypeCategory &
-SBTypeCategory::operator = (const lldb::SBTypeCategory &rhs)
-{
- if (this != &rhs)
- {
- m_opaque_sp = rhs.m_opaque_sp;
- }
- return *this;
+bool SBTypeCategory::DeleteTypeSynthetic(SBTypeNameSpecifier type_name) {
+ if (!IsValid())
+ return false;
+
+ if (!type_name.IsValid())
+ return false;
+
+ if (type_name.IsRegex())
+ return m_opaque_sp->GetRegexTypeSyntheticsContainer()->Delete(
+ ConstString(type_name.GetName()));
+ else
+ return m_opaque_sp->GetTypeSyntheticsContainer()->Delete(
+ ConstString(type_name.GetName()));
}
+#endif // LLDB_DISABLE_PYTHON
-bool
-SBTypeCategory::operator == (lldb::SBTypeCategory &rhs)
-{
- if (IsValid() == false)
- return !rhs.IsValid();
-
- return m_opaque_sp.get() == rhs.m_opaque_sp.get();
-
+bool SBTypeCategory::GetDescription(lldb::SBStream &description,
+ lldb::DescriptionLevel description_level) {
+ if (!IsValid())
+ return false;
+ description.Printf("Category name: %s\n", GetName());
+ return true;
}
-bool
-SBTypeCategory::operator != (lldb::SBTypeCategory &rhs)
-{
- if (IsValid() == false)
- return rhs.IsValid();
-
- return m_opaque_sp.get() != rhs.m_opaque_sp.get();
+lldb::SBTypeCategory &SBTypeCategory::
+operator=(const lldb::SBTypeCategory &rhs) {
+ if (this != &rhs) {
+ m_opaque_sp = rhs.m_opaque_sp;
+ }
+ return *this;
}
-lldb::TypeCategoryImplSP
-SBTypeCategory::GetSP ()
-{
- if (!IsValid())
- return lldb::TypeCategoryImplSP();
- return m_opaque_sp;
+bool SBTypeCategory::operator==(lldb::SBTypeCategory &rhs) {
+ if (IsValid() == false)
+ return !rhs.IsValid();
+
+ return m_opaque_sp.get() == rhs.m_opaque_sp.get();
}
-void
-SBTypeCategory::SetSP (const lldb::TypeCategoryImplSP &typecategory_impl_sp)
-{
- m_opaque_sp = typecategory_impl_sp;
+bool SBTypeCategory::operator!=(lldb::SBTypeCategory &rhs) {
+ if (IsValid() == false)
+ return rhs.IsValid();
+
+ return m_opaque_sp.get() != rhs.m_opaque_sp.get();
}
-SBTypeCategory::SBTypeCategory (const lldb::TypeCategoryImplSP &typecategory_impl_sp) :
-m_opaque_sp(typecategory_impl_sp)
-{
+lldb::TypeCategoryImplSP SBTypeCategory::GetSP() {
+ if (!IsValid())
+ return lldb::TypeCategoryImplSP();
+ return m_opaque_sp;
}
-bool
-SBTypeCategory::IsDefaultCategory()
-{
- if (!IsValid())
- return false;
-
- return (strcmp(m_opaque_sp->GetName(),"default") == 0);
+void SBTypeCategory::SetSP(
+ const lldb::TypeCategoryImplSP &typecategory_impl_sp) {
+ m_opaque_sp = typecategory_impl_sp;
}
+SBTypeCategory::SBTypeCategory(
+ const lldb::TypeCategoryImplSP &typecategory_impl_sp)
+ : m_opaque_sp(typecategory_impl_sp) {}
+
+bool SBTypeCategory::IsDefaultCategory() {
+ if (!IsValid())
+ return false;
+
+ return (strcmp(m_opaque_sp->GetName(), "default") == 0);
+}