| //===-- DataVisualization.cpp ---------------------------------------*- C++ |
| //-*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "lldb/DataFormatters/DataVisualization.h" |
| |
| // C Includes |
| // C++ Includes |
| // Other libraries and framework includes |
| // Project includes |
| |
| using namespace lldb; |
| using namespace lldb_private; |
| |
| static FormatManager &GetFormatManager() { |
| static FormatManager g_format_manager; |
| return g_format_manager; |
| } |
| |
| void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); } |
| |
| uint32_t DataVisualization::GetCurrentRevision() { |
| return GetFormatManager().GetCurrentRevision(); |
| } |
| |
| bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) { |
| return GetFormatManager().ShouldPrintAsOneLiner(valobj); |
| } |
| |
| lldb::TypeFormatImplSP |
| DataVisualization::GetFormat(ValueObject &valobj, |
| lldb::DynamicValueType use_dynamic) { |
| return GetFormatManager().GetFormat(valobj, use_dynamic); |
| } |
| |
| lldb::TypeFormatImplSP |
| DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetFormatForType(type_sp); |
| } |
| |
| lldb::TypeSummaryImplSP |
| DataVisualization::GetSummaryFormat(ValueObject &valobj, |
| lldb::DynamicValueType use_dynamic) { |
| return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); |
| } |
| |
| lldb::TypeSummaryImplSP |
| DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetSummaryForType(type_sp); |
| } |
| |
| #ifndef LLDB_DISABLE_PYTHON |
| lldb::SyntheticChildrenSP |
| DataVisualization::GetSyntheticChildren(ValueObject &valobj, |
| lldb::DynamicValueType use_dynamic) { |
| return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); |
| } |
| #endif |
| |
| #ifndef LLDB_DISABLE_PYTHON |
| lldb::SyntheticChildrenSP DataVisualization::GetSyntheticChildrenForType( |
| lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetSyntheticChildrenForType(type_sp); |
| } |
| #endif |
| |
| lldb::TypeFilterImplSP |
| DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetFilterForType(type_sp); |
| } |
| |
| #ifndef LLDB_DISABLE_PYTHON |
| lldb::ScriptedSyntheticChildrenSP |
| DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetSyntheticForType(type_sp); |
| } |
| #endif |
| |
| lldb::TypeValidatorImplSP |
| DataVisualization::GetValidator(ValueObject &valobj, |
| lldb::DynamicValueType use_dynamic) { |
| return GetFormatManager().GetValidator(valobj, use_dynamic); |
| } |
| |
| lldb::TypeValidatorImplSP |
| DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetValidatorForType(type_sp); |
| } |
| |
| bool DataVisualization::AnyMatches( |
| ConstString type_name, TypeCategoryImpl::FormatCategoryItems items, |
| bool only_enabled, const char **matching_category, |
| TypeCategoryImpl::FormatCategoryItems *matching_type) { |
| return GetFormatManager().AnyMatches(type_name, items, only_enabled, |
| matching_category, matching_type); |
| } |
| |
| bool DataVisualization::Categories::GetCategory(const ConstString &category, |
| lldb::TypeCategoryImplSP &entry, |
| bool allow_create) { |
| entry = GetFormatManager().GetCategory(category, allow_create); |
| return (entry.get() != NULL); |
| } |
| |
| bool DataVisualization::Categories::GetCategory( |
| lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) { |
| if (LanguageCategory *lang_category = |
| GetFormatManager().GetCategoryForLanguage(language)) |
| entry = lang_category->GetCategory(); |
| return (entry.get() != nullptr); |
| } |
| |
| void DataVisualization::Categories::Add(const ConstString &category) { |
| GetFormatManager().GetCategory(category); |
| } |
| |
| bool DataVisualization::Categories::Delete(const ConstString &category) { |
| GetFormatManager().DisableCategory(category); |
| return GetFormatManager().DeleteCategory(category); |
| } |
| |
| void DataVisualization::Categories::Clear() { |
| GetFormatManager().ClearCategories(); |
| } |
| |
| void DataVisualization::Categories::Clear(const ConstString &category) { |
| GetFormatManager().GetCategory(category)->Clear( |
| eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); |
| } |
| |
| void DataVisualization::Categories::Enable(const ConstString &category, |
| TypeCategoryMap::Position pos) { |
| if (GetFormatManager().GetCategory(category)->IsEnabled()) |
| GetFormatManager().DisableCategory(category); |
| GetFormatManager().EnableCategory( |
| category, pos, std::initializer_list<lldb::LanguageType>()); |
| } |
| |
| void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) { |
| if (LanguageCategory *lang_category = |
| GetFormatManager().GetCategoryForLanguage(lang_type)) |
| lang_category->Enable(); |
| } |
| |
| void DataVisualization::Categories::Disable(const ConstString &category) { |
| if (GetFormatManager().GetCategory(category)->IsEnabled() == true) |
| GetFormatManager().DisableCategory(category); |
| } |
| |
| void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) { |
| if (LanguageCategory *lang_category = |
| GetFormatManager().GetCategoryForLanguage(lang_type)) |
| lang_category->Disable(); |
| } |
| |
| void DataVisualization::Categories::Enable( |
| const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) { |
| if (category.get()) { |
| if (category->IsEnabled()) |
| GetFormatManager().DisableCategory(category); |
| GetFormatManager().EnableCategory(category, pos); |
| } |
| } |
| |
| void DataVisualization::Categories::Disable( |
| const lldb::TypeCategoryImplSP &category) { |
| if (category.get() && category->IsEnabled() == true) |
| GetFormatManager().DisableCategory(category); |
| } |
| |
| void DataVisualization::Categories::EnableStar() { |
| GetFormatManager().EnableAllCategories(); |
| } |
| |
| void DataVisualization::Categories::DisableStar() { |
| GetFormatManager().DisableAllCategories(); |
| } |
| |
| void DataVisualization::Categories::ForEach( |
| TypeCategoryMap::ForEachCallback callback) { |
| GetFormatManager().ForEachCategory(callback); |
| } |
| |
| uint32_t DataVisualization::Categories::GetCount() { |
| return GetFormatManager().GetCategoriesCount(); |
| } |
| |
| lldb::TypeCategoryImplSP |
| DataVisualization::Categories::GetCategoryAtIndex(size_t index) { |
| return GetFormatManager().GetCategoryAtIndex(index); |
| } |
| |
| bool DataVisualization::NamedSummaryFormats::GetSummaryFormat( |
| const ConstString &type, lldb::TypeSummaryImplSP &entry) { |
| return GetFormatManager().GetNamedSummaryContainer().Get(type, entry); |
| } |
| |
| void DataVisualization::NamedSummaryFormats::Add( |
| const ConstString &type, const lldb::TypeSummaryImplSP &entry) { |
| GetFormatManager().GetNamedSummaryContainer().Add( |
| FormatManager::GetValidTypeName(type), entry); |
| } |
| |
| bool DataVisualization::NamedSummaryFormats::Delete(const ConstString &type) { |
| return GetFormatManager().GetNamedSummaryContainer().Delete(type); |
| } |
| |
| void DataVisualization::NamedSummaryFormats::Clear() { |
| GetFormatManager().GetNamedSummaryContainer().Clear(); |
| } |
| |
| void DataVisualization::NamedSummaryFormats::ForEach( |
| std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)> |
| callback) { |
| GetFormatManager().GetNamedSummaryContainer().ForEach(callback); |
| } |
| |
| uint32_t DataVisualization::NamedSummaryFormats::GetCount() { |
| return GetFormatManager().GetNamedSummaryContainer().GetCount(); |
| } |