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); 92*248a1305SKonrad 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); 125b9c1b51eSKate Stone GetFormatManager().EnableCategory( 126b9c1b51eSKate Stone category, pos, std::initializer_list<lldb::LanguageType>()); 1275548cb50SEnrico Granata } 1285548cb50SEnrico Granata 129b9c1b51eSKate Stone void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) { 130b9c1b51eSKate Stone if (LanguageCategory *lang_category = 131b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type)) 132964211f2SEnrico Granata lang_category->Enable(); 133964211f2SEnrico Granata } 134964211f2SEnrico Granata 1350e4c4821SAdrian Prantl void DataVisualization::Categories::Disable(ConstString category) { 136a6682a41SJonas Devlieghere if (GetFormatManager().GetCategory(category)->IsEnabled()) 1375548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1385548cb50SEnrico Granata } 1395548cb50SEnrico Granata 140b9c1b51eSKate Stone void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) { 141b9c1b51eSKate Stone if (LanguageCategory *lang_category = 142b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type)) 143964211f2SEnrico Granata lang_category->Disable(); 144964211f2SEnrico Granata } 145964211f2SEnrico Granata 146b9c1b51eSKate Stone void DataVisualization::Categories::Enable( 147b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) { 148b9c1b51eSKate Stone if (category.get()) { 1495548cb50SEnrico Granata if (category->IsEnabled()) 1505548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1515548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 1525548cb50SEnrico Granata } 1535548cb50SEnrico Granata } 1545548cb50SEnrico Granata 155b9c1b51eSKate Stone void DataVisualization::Categories::Disable( 156b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category) { 157a6682a41SJonas Devlieghere if (category.get() && category->IsEnabled()) 1585548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1595548cb50SEnrico Granata } 1605548cb50SEnrico Granata 161b9c1b51eSKate Stone void DataVisualization::Categories::EnableStar() { 162e7687adcSEnrico Granata GetFormatManager().EnableAllCategories(); 163e7687adcSEnrico Granata } 164e7687adcSEnrico Granata 165b9c1b51eSKate Stone void DataVisualization::Categories::DisableStar() { 166e7687adcSEnrico Granata GetFormatManager().DisableAllCategories(); 167e7687adcSEnrico Granata } 168e7687adcSEnrico Granata 169b9c1b51eSKate Stone void DataVisualization::Categories::ForEach( 170b9c1b51eSKate Stone TypeCategoryMap::ForEachCallback callback) { 171b56d0103SEnrico Granata GetFormatManager().ForEachCategory(callback); 172b56d0103SEnrico Granata } 173b56d0103SEnrico Granata 174b9c1b51eSKate Stone uint32_t DataVisualization::Categories::GetCount() { 1755548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 1765548cb50SEnrico Granata } 1775548cb50SEnrico Granata 1785548cb50SEnrico Granata lldb::TypeCategoryImplSP 179b9c1b51eSKate Stone DataVisualization::Categories::GetCategoryAtIndex(size_t index) { 1805548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 1815548cb50SEnrico Granata } 1825548cb50SEnrico Granata 183b9c1b51eSKate Stone bool DataVisualization::NamedSummaryFormats::GetSummaryFormat( 1840e4c4821SAdrian Prantl ConstString type, lldb::TypeSummaryImplSP &entry) { 185b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Get(type, entry); 1865548cb50SEnrico Granata } 1875548cb50SEnrico Granata 188b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Add( 1890e4c4821SAdrian Prantl ConstString type, const lldb::TypeSummaryImplSP &entry) { 190b9c1b51eSKate Stone GetFormatManager().GetNamedSummaryContainer().Add( 191b9c1b51eSKate Stone FormatManager::GetValidTypeName(type), entry); 1925548cb50SEnrico Granata } 1935548cb50SEnrico Granata 1940e4c4821SAdrian Prantl bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) { 195b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Delete(type); 1965548cb50SEnrico Granata } 1975548cb50SEnrico Granata 198b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Clear() { 199b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Clear(); 2005548cb50SEnrico Granata } 2015548cb50SEnrico Granata 202b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::ForEach( 203b9c1b51eSKate Stone std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)> 204b9c1b51eSKate Stone callback) { 2053de08c5fSEnrico Granata GetFormatManager().GetNamedSummaryContainer().ForEach(callback); 2065548cb50SEnrico Granata } 2075548cb50SEnrico Granata 208b9c1b51eSKate Stone uint32_t DataVisualization::NamedSummaryFormats::GetCount() { 209b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().GetCount(); 2105548cb50SEnrico Granata } 211