| //===-- DataVisualization.cpp ---------------------------------------------===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "lldb/DataFormatters/DataVisualization.h" |
| |
| |
| 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); |
| } |
| |
| lldb::SyntheticChildrenSP |
| DataVisualization::GetSyntheticChildren(ValueObject &valobj, |
| lldb::DynamicValueType use_dynamic) { |
| return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); |
| } |
| |
| lldb::TypeFilterImplSP |
| DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetFilterForType(type_sp); |
| } |
| |
| lldb::ScriptedSyntheticChildrenSP |
| DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) { |
| return GetFormatManager().GetSyntheticForType(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(ConstString category, |
| lldb::TypeCategoryImplSP &entry, |
| bool allow_create) { |
| entry = GetFormatManager().GetCategory(category, allow_create); |
| return (entry.get() != nullptr); |
| } |
| |
| 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(ConstString category) { |
| GetFormatManager().GetCategory(category); |
| } |
| |
| bool DataVisualization::Categories::Delete(ConstString category) { |
| GetFormatManager().DisableCategory(category); |
| return GetFormatManager().DeleteCategory(category); |
| } |
| |
| void DataVisualization::Categories::Clear() { |
| GetFormatManager().ClearCategories(); |
| } |
| |
| void DataVisualization::Categories::Clear(ConstString category) { |
| GetFormatManager().GetCategory(category)->Clear( |
| eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); |
| } |
| |
| void DataVisualization::Categories::Enable(ConstString category, |
| TypeCategoryMap::Position pos) { |
| if (GetFormatManager().GetCategory(category)->IsEnabled()) |
| GetFormatManager().DisableCategory(category); |
| GetFormatManager().EnableCategory(category, pos, {}); |
| } |
| |
| void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) { |
| if (LanguageCategory *lang_category = |
| GetFormatManager().GetCategoryForLanguage(lang_type)) |
| lang_category->Enable(); |
| } |
| |
| void DataVisualization::Categories::Disable(ConstString category) { |
| if (GetFormatManager().GetCategory(category)->IsEnabled()) |
| 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()) |
| 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( |
| ConstString type, lldb::TypeSummaryImplSP &entry) { |
| return GetFormatManager().GetNamedSummaryContainer().GetExact(type, entry); |
| } |
| |
| void DataVisualization::NamedSummaryFormats::Add( |
| ConstString type, const lldb::TypeSummaryImplSP &entry) { |
| GetFormatManager().GetNamedSummaryContainer().Add(type, entry); |
| } |
| |
| bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) { |
| return GetFormatManager().GetNamedSummaryContainer().Delete(type); |
| } |
| |
| void DataVisualization::NamedSummaryFormats::Clear() { |
| GetFormatManager().GetNamedSummaryContainer().Clear(); |
| } |
| |
| void DataVisualization::NamedSummaryFormats::ForEach( |
| std::function<bool(const TypeMatcher &, const lldb::TypeSummaryImplSP &)> |
| callback) { |
| GetFormatManager().GetNamedSummaryContainer().ForEach(callback); |
| } |
| |
| uint32_t DataVisualization::NamedSummaryFormats::GetCount() { |
| return GetFormatManager().GetNamedSummaryContainer().GetCount(); |
| } |