1b9c1b51eSKate Stone //===-- DataVisualization.cpp ---------------------------------------*- C++ 2b9c1b51eSKate Stone //-*-===// 35548cb50SEnrico Granata // 42946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 52946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 62946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 75548cb50SEnrico Granata // 85548cb50SEnrico Granata //===----------------------------------------------------------------------===// 95548cb50SEnrico Granata 105548cb50SEnrico Granata #include "lldb/DataFormatters/DataVisualization.h" 115548cb50SEnrico Granata 125548cb50SEnrico Granata 135548cb50SEnrico Granata using namespace lldb; 145548cb50SEnrico Granata using namespace lldb_private; 155548cb50SEnrico Granata 16b9c1b51eSKate Stone static FormatManager &GetFormatManager() { 175548cb50SEnrico Granata static FormatManager g_format_manager; 185548cb50SEnrico Granata return g_format_manager; 195548cb50SEnrico Granata } 205548cb50SEnrico Granata 21b9c1b51eSKate Stone void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); } 225548cb50SEnrico Granata 23b9c1b51eSKate Stone uint32_t DataVisualization::GetCurrentRevision() { 245548cb50SEnrico Granata return GetFormatManager().GetCurrentRevision(); 255548cb50SEnrico Granata } 265548cb50SEnrico Granata 27b9c1b51eSKate Stone bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) { 28a29cb0baSEnrico Granata return GetFormatManager().ShouldPrintAsOneLiner(valobj); 29a29cb0baSEnrico Granata } 30a29cb0baSEnrico Granata 315548cb50SEnrico Granata lldb::TypeFormatImplSP 32b9c1b51eSKate Stone DataVisualization::GetFormat(ValueObject &valobj, 33b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 34852cc954SEnrico Granata return GetFormatManager().GetFormat(valobj, use_dynamic); 355548cb50SEnrico Granata } 365548cb50SEnrico Granata 375548cb50SEnrico Granata lldb::TypeFormatImplSP 38b9c1b51eSKate Stone DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) { 39852cc954SEnrico Granata return GetFormatManager().GetFormatForType(type_sp); 405548cb50SEnrico Granata } 415548cb50SEnrico Granata 425548cb50SEnrico Granata lldb::TypeSummaryImplSP 43b9c1b51eSKate Stone DataVisualization::GetSummaryFormat(ValueObject &valobj, 44b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 455548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); 465548cb50SEnrico Granata } 475548cb50SEnrico Granata 485548cb50SEnrico Granata lldb::TypeSummaryImplSP 49b9c1b51eSKate Stone DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) { 505548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp); 515548cb50SEnrico Granata } 525548cb50SEnrico Granata 535548cb50SEnrico Granata lldb::SyntheticChildrenSP 545548cb50SEnrico Granata DataVisualization::GetSyntheticChildren(ValueObject &valobj, 55b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 565548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); 575548cb50SEnrico Granata } 585548cb50SEnrico Granata 595548cb50SEnrico Granata lldb::TypeFilterImplSP 60b9c1b51eSKate Stone DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) { 615548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp); 625548cb50SEnrico Granata } 635548cb50SEnrico Granata 645548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP 65b9c1b51eSKate Stone DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) { 665548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp); 675548cb50SEnrico Granata } 685548cb50SEnrico Granata 69c582713cSEnrico Granata lldb::TypeValidatorImplSP 70b9c1b51eSKate Stone DataVisualization::GetValidator(ValueObject &valobj, 71b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 72c582713cSEnrico Granata return GetFormatManager().GetValidator(valobj, use_dynamic); 73c582713cSEnrico Granata } 74c582713cSEnrico Granata 75c582713cSEnrico Granata lldb::TypeValidatorImplSP 76b9c1b51eSKate Stone DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) { 77c582713cSEnrico Granata return GetFormatManager().GetValidatorForType(type_sp); 78c582713cSEnrico Granata } 79c582713cSEnrico Granata 80b9c1b51eSKate Stone bool DataVisualization::AnyMatches( 81b9c1b51eSKate Stone ConstString type_name, TypeCategoryImpl::FormatCategoryItems items, 82b9c1b51eSKate Stone bool only_enabled, const char **matching_category, 83b9c1b51eSKate Stone TypeCategoryImpl::FormatCategoryItems *matching_type) { 84b9c1b51eSKate Stone return GetFormatManager().AnyMatches(type_name, items, only_enabled, 85b9c1b51eSKate Stone matching_category, matching_type); 865548cb50SEnrico Granata } 875548cb50SEnrico Granata 880e4c4821SAdrian Prantl bool DataVisualization::Categories::GetCategory(ConstString category, 89b9c1b51eSKate Stone lldb::TypeCategoryImplSP &entry, 90b9c1b51eSKate Stone bool allow_create) { 915548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create); 92248a1305SKonrad Kleine return (entry.get() != nullptr); 935548cb50SEnrico Granata } 945548cb50SEnrico Granata 95b9c1b51eSKate Stone bool DataVisualization::Categories::GetCategory( 96b9c1b51eSKate Stone lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) { 97b9c1b51eSKate Stone if (LanguageCategory *lang_category = 98b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(language)) 999eeabff0SEnrico Granata entry = lang_category->GetCategory(); 1009eeabff0SEnrico Granata return (entry.get() != nullptr); 1019eeabff0SEnrico Granata } 1029eeabff0SEnrico Granata 1030e4c4821SAdrian Prantl void DataVisualization::Categories::Add(ConstString category) { 1045548cb50SEnrico Granata GetFormatManager().GetCategory(category); 1055548cb50SEnrico Granata } 1065548cb50SEnrico Granata 1070e4c4821SAdrian Prantl bool DataVisualization::Categories::Delete(ConstString category) { 1085548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1095548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category); 1105548cb50SEnrico Granata } 1115548cb50SEnrico Granata 112b9c1b51eSKate Stone void DataVisualization::Categories::Clear() { 1135548cb50SEnrico Granata GetFormatManager().ClearCategories(); 1145548cb50SEnrico Granata } 1155548cb50SEnrico Granata 1160e4c4821SAdrian Prantl void DataVisualization::Categories::Clear(ConstString category) { 117b9c1b51eSKate Stone GetFormatManager().GetCategory(category)->Clear( 118b9c1b51eSKate Stone eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); 1195548cb50SEnrico Granata } 1205548cb50SEnrico Granata 1210e4c4821SAdrian Prantl void DataVisualization::Categories::Enable(ConstString category, 122b9c1b51eSKate Stone TypeCategoryMap::Position pos) { 1235548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled()) 1245548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 125*89618a7cSDavide Italiano GetFormatManager().EnableCategory(category, pos, {}); 1265548cb50SEnrico Granata } 1275548cb50SEnrico Granata 128b9c1b51eSKate Stone void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) { 129b9c1b51eSKate Stone if (LanguageCategory *lang_category = 130b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type)) 131964211f2SEnrico Granata lang_category->Enable(); 132964211f2SEnrico Granata } 133964211f2SEnrico Granata 1340e4c4821SAdrian Prantl void DataVisualization::Categories::Disable(ConstString category) { 135a6682a41SJonas Devlieghere if (GetFormatManager().GetCategory(category)->IsEnabled()) 1365548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1375548cb50SEnrico Granata } 1385548cb50SEnrico Granata 139b9c1b51eSKate Stone void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) { 140b9c1b51eSKate Stone if (LanguageCategory *lang_category = 141b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type)) 142964211f2SEnrico Granata lang_category->Disable(); 143964211f2SEnrico Granata } 144964211f2SEnrico Granata 145b9c1b51eSKate Stone void DataVisualization::Categories::Enable( 146b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) { 147b9c1b51eSKate Stone if (category.get()) { 1485548cb50SEnrico Granata if (category->IsEnabled()) 1495548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1505548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 1515548cb50SEnrico Granata } 1525548cb50SEnrico Granata } 1535548cb50SEnrico Granata 154b9c1b51eSKate Stone void DataVisualization::Categories::Disable( 155b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category) { 156a6682a41SJonas Devlieghere if (category.get() && category->IsEnabled()) 1575548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1585548cb50SEnrico Granata } 1595548cb50SEnrico Granata 160b9c1b51eSKate Stone void DataVisualization::Categories::EnableStar() { 161e7687adcSEnrico Granata GetFormatManager().EnableAllCategories(); 162e7687adcSEnrico Granata } 163e7687adcSEnrico Granata 164b9c1b51eSKate Stone void DataVisualization::Categories::DisableStar() { 165e7687adcSEnrico Granata GetFormatManager().DisableAllCategories(); 166e7687adcSEnrico Granata } 167e7687adcSEnrico Granata 168b9c1b51eSKate Stone void DataVisualization::Categories::ForEach( 169b9c1b51eSKate Stone TypeCategoryMap::ForEachCallback callback) { 170b56d0103SEnrico Granata GetFormatManager().ForEachCategory(callback); 171b56d0103SEnrico Granata } 172b56d0103SEnrico Granata 173b9c1b51eSKate Stone uint32_t DataVisualization::Categories::GetCount() { 1745548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 1755548cb50SEnrico Granata } 1765548cb50SEnrico Granata 1775548cb50SEnrico Granata lldb::TypeCategoryImplSP 178b9c1b51eSKate Stone DataVisualization::Categories::GetCategoryAtIndex(size_t index) { 1795548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 1805548cb50SEnrico Granata } 1815548cb50SEnrico Granata 182b9c1b51eSKate Stone bool DataVisualization::NamedSummaryFormats::GetSummaryFormat( 1830e4c4821SAdrian Prantl ConstString type, lldb::TypeSummaryImplSP &entry) { 184b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Get(type, entry); 1855548cb50SEnrico Granata } 1865548cb50SEnrico Granata 187b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Add( 1880e4c4821SAdrian Prantl ConstString type, const lldb::TypeSummaryImplSP &entry) { 189b9c1b51eSKate Stone GetFormatManager().GetNamedSummaryContainer().Add( 190b9c1b51eSKate Stone FormatManager::GetValidTypeName(type), entry); 1915548cb50SEnrico Granata } 1925548cb50SEnrico Granata 1930e4c4821SAdrian Prantl bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) { 194b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Delete(type); 1955548cb50SEnrico Granata } 1965548cb50SEnrico Granata 197b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Clear() { 198b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Clear(); 1995548cb50SEnrico Granata } 2005548cb50SEnrico Granata 201b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::ForEach( 202b9c1b51eSKate Stone std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)> 203b9c1b51eSKate Stone callback) { 2043de08c5fSEnrico Granata GetFormatManager().GetNamedSummaryContainer().ForEach(callback); 2055548cb50SEnrico Granata } 2065548cb50SEnrico Granata 207b9c1b51eSKate Stone uint32_t DataVisualization::NamedSummaryFormats::GetCount() { 208b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().GetCount(); 2095548cb50SEnrico Granata } 210