1b9c1b51eSKate Stone //===-- DataVisualization.cpp ---------------------------------------*- C++ 2b9c1b51eSKate Stone //-*-===// 35548cb50SEnrico Granata // 45548cb50SEnrico Granata // The LLVM Compiler Infrastructure 55548cb50SEnrico Granata // 65548cb50SEnrico Granata // This file is distributed under the University of Illinois Open Source 75548cb50SEnrico Granata // License. See LICENSE.TXT for details. 85548cb50SEnrico Granata // 95548cb50SEnrico Granata //===----------------------------------------------------------------------===// 105548cb50SEnrico Granata 115548cb50SEnrico Granata #include "lldb/DataFormatters/DataVisualization.h" 125548cb50SEnrico Granata 135548cb50SEnrico Granata 145548cb50SEnrico Granata using namespace lldb; 155548cb50SEnrico Granata using namespace lldb_private; 165548cb50SEnrico Granata 17b9c1b51eSKate Stone static FormatManager &GetFormatManager() { 185548cb50SEnrico Granata static FormatManager g_format_manager; 195548cb50SEnrico Granata return g_format_manager; 205548cb50SEnrico Granata } 215548cb50SEnrico Granata 22b9c1b51eSKate Stone void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); } 235548cb50SEnrico Granata 24b9c1b51eSKate Stone uint32_t DataVisualization::GetCurrentRevision() { 255548cb50SEnrico Granata return GetFormatManager().GetCurrentRevision(); 265548cb50SEnrico Granata } 275548cb50SEnrico Granata 28b9c1b51eSKate Stone bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) { 29a29cb0baSEnrico Granata return GetFormatManager().ShouldPrintAsOneLiner(valobj); 30a29cb0baSEnrico Granata } 31a29cb0baSEnrico Granata 325548cb50SEnrico Granata lldb::TypeFormatImplSP 33b9c1b51eSKate Stone DataVisualization::GetFormat(ValueObject &valobj, 34b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 35852cc954SEnrico Granata return GetFormatManager().GetFormat(valobj, use_dynamic); 365548cb50SEnrico Granata } 375548cb50SEnrico Granata 385548cb50SEnrico Granata lldb::TypeFormatImplSP 39b9c1b51eSKate Stone DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) { 40852cc954SEnrico Granata return GetFormatManager().GetFormatForType(type_sp); 415548cb50SEnrico Granata } 425548cb50SEnrico Granata 435548cb50SEnrico Granata lldb::TypeSummaryImplSP 44b9c1b51eSKate Stone DataVisualization::GetSummaryFormat(ValueObject &valobj, 45b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 465548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); 475548cb50SEnrico Granata } 485548cb50SEnrico Granata 495548cb50SEnrico Granata lldb::TypeSummaryImplSP 50b9c1b51eSKate Stone DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) { 515548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp); 525548cb50SEnrico Granata } 535548cb50SEnrico Granata 545548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 555548cb50SEnrico Granata lldb::SyntheticChildrenSP 565548cb50SEnrico Granata DataVisualization::GetSyntheticChildren(ValueObject &valobj, 57b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 585548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); 595548cb50SEnrico Granata } 605548cb50SEnrico Granata #endif 615548cb50SEnrico Granata 625548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 63b9c1b51eSKate Stone lldb::SyntheticChildrenSP DataVisualization::GetSyntheticChildrenForType( 64b9c1b51eSKate Stone lldb::TypeNameSpecifierImplSP type_sp) { 655548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildrenForType(type_sp); 665548cb50SEnrico Granata } 675548cb50SEnrico Granata #endif 685548cb50SEnrico Granata 695548cb50SEnrico Granata lldb::TypeFilterImplSP 70b9c1b51eSKate Stone DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) { 715548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp); 725548cb50SEnrico Granata } 735548cb50SEnrico Granata 745548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 755548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP 76b9c1b51eSKate Stone DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) { 775548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp); 785548cb50SEnrico Granata } 795548cb50SEnrico Granata #endif 805548cb50SEnrico Granata 81c582713cSEnrico Granata lldb::TypeValidatorImplSP 82b9c1b51eSKate Stone DataVisualization::GetValidator(ValueObject &valobj, 83b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 84c582713cSEnrico Granata return GetFormatManager().GetValidator(valobj, use_dynamic); 85c582713cSEnrico Granata } 86c582713cSEnrico Granata 87c582713cSEnrico Granata lldb::TypeValidatorImplSP 88b9c1b51eSKate Stone DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) { 89c582713cSEnrico Granata return GetFormatManager().GetValidatorForType(type_sp); 90c582713cSEnrico Granata } 91c582713cSEnrico Granata 92b9c1b51eSKate Stone bool DataVisualization::AnyMatches( 93b9c1b51eSKate Stone ConstString type_name, TypeCategoryImpl::FormatCategoryItems items, 94b9c1b51eSKate Stone bool only_enabled, const char **matching_category, 95b9c1b51eSKate Stone TypeCategoryImpl::FormatCategoryItems *matching_type) { 96b9c1b51eSKate Stone return GetFormatManager().AnyMatches(type_name, items, only_enabled, 97b9c1b51eSKate Stone matching_category, matching_type); 985548cb50SEnrico Granata } 995548cb50SEnrico Granata 100b9c1b51eSKate Stone bool DataVisualization::Categories::GetCategory(const ConstString &category, 101b9c1b51eSKate Stone lldb::TypeCategoryImplSP &entry, 102b9c1b51eSKate Stone bool allow_create) { 1035548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create); 1045548cb50SEnrico Granata return (entry.get() != NULL); 1055548cb50SEnrico Granata } 1065548cb50SEnrico Granata 107b9c1b51eSKate Stone bool DataVisualization::Categories::GetCategory( 108b9c1b51eSKate Stone lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) { 109b9c1b51eSKate Stone if (LanguageCategory *lang_category = 110b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(language)) 1119eeabff0SEnrico Granata entry = lang_category->GetCategory(); 1129eeabff0SEnrico Granata return (entry.get() != nullptr); 1139eeabff0SEnrico Granata } 1149eeabff0SEnrico Granata 115b9c1b51eSKate Stone void DataVisualization::Categories::Add(const ConstString &category) { 1165548cb50SEnrico Granata GetFormatManager().GetCategory(category); 1175548cb50SEnrico Granata } 1185548cb50SEnrico Granata 119b9c1b51eSKate Stone bool DataVisualization::Categories::Delete(const ConstString &category) { 1205548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1215548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category); 1225548cb50SEnrico Granata } 1235548cb50SEnrico Granata 124b9c1b51eSKate Stone void DataVisualization::Categories::Clear() { 1255548cb50SEnrico Granata GetFormatManager().ClearCategories(); 1265548cb50SEnrico Granata } 1275548cb50SEnrico Granata 128b9c1b51eSKate Stone void DataVisualization::Categories::Clear(const ConstString &category) { 129b9c1b51eSKate Stone GetFormatManager().GetCategory(category)->Clear( 130b9c1b51eSKate Stone eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); 1315548cb50SEnrico Granata } 1325548cb50SEnrico Granata 133b9c1b51eSKate Stone void DataVisualization::Categories::Enable(const ConstString &category, 134b9c1b51eSKate Stone TypeCategoryMap::Position pos) { 1355548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled()) 1365548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 137b9c1b51eSKate Stone GetFormatManager().EnableCategory( 138b9c1b51eSKate Stone category, pos, std::initializer_list<lldb::LanguageType>()); 1395548cb50SEnrico Granata } 1405548cb50SEnrico Granata 141b9c1b51eSKate Stone void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) { 142b9c1b51eSKate Stone if (LanguageCategory *lang_category = 143b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type)) 144964211f2SEnrico Granata lang_category->Enable(); 145964211f2SEnrico Granata } 146964211f2SEnrico Granata 147b9c1b51eSKate Stone void DataVisualization::Categories::Disable(const ConstString &category) { 148*a6682a41SJonas Devlieghere if (GetFormatManager().GetCategory(category)->IsEnabled()) 1495548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1505548cb50SEnrico Granata } 1515548cb50SEnrico Granata 152b9c1b51eSKate Stone void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) { 153b9c1b51eSKate Stone if (LanguageCategory *lang_category = 154b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type)) 155964211f2SEnrico Granata lang_category->Disable(); 156964211f2SEnrico Granata } 157964211f2SEnrico Granata 158b9c1b51eSKate Stone void DataVisualization::Categories::Enable( 159b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) { 160b9c1b51eSKate Stone if (category.get()) { 1615548cb50SEnrico Granata if (category->IsEnabled()) 1625548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1635548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 1645548cb50SEnrico Granata } 1655548cb50SEnrico Granata } 1665548cb50SEnrico Granata 167b9c1b51eSKate Stone void DataVisualization::Categories::Disable( 168b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category) { 169*a6682a41SJonas Devlieghere if (category.get() && category->IsEnabled()) 1705548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1715548cb50SEnrico Granata } 1725548cb50SEnrico Granata 173b9c1b51eSKate Stone void DataVisualization::Categories::EnableStar() { 174e7687adcSEnrico Granata GetFormatManager().EnableAllCategories(); 175e7687adcSEnrico Granata } 176e7687adcSEnrico Granata 177b9c1b51eSKate Stone void DataVisualization::Categories::DisableStar() { 178e7687adcSEnrico Granata GetFormatManager().DisableAllCategories(); 179e7687adcSEnrico Granata } 180e7687adcSEnrico Granata 181b9c1b51eSKate Stone void DataVisualization::Categories::ForEach( 182b9c1b51eSKate Stone TypeCategoryMap::ForEachCallback callback) { 183b56d0103SEnrico Granata GetFormatManager().ForEachCategory(callback); 184b56d0103SEnrico Granata } 185b56d0103SEnrico Granata 186b9c1b51eSKate Stone uint32_t DataVisualization::Categories::GetCount() { 1875548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 1885548cb50SEnrico Granata } 1895548cb50SEnrico Granata 1905548cb50SEnrico Granata lldb::TypeCategoryImplSP 191b9c1b51eSKate Stone DataVisualization::Categories::GetCategoryAtIndex(size_t index) { 1925548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 1935548cb50SEnrico Granata } 1945548cb50SEnrico Granata 195b9c1b51eSKate Stone bool DataVisualization::NamedSummaryFormats::GetSummaryFormat( 196b9c1b51eSKate Stone const ConstString &type, lldb::TypeSummaryImplSP &entry) { 197b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Get(type, entry); 1985548cb50SEnrico Granata } 1995548cb50SEnrico Granata 200b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Add( 201b9c1b51eSKate Stone const ConstString &type, const lldb::TypeSummaryImplSP &entry) { 202b9c1b51eSKate Stone GetFormatManager().GetNamedSummaryContainer().Add( 203b9c1b51eSKate Stone FormatManager::GetValidTypeName(type), entry); 2045548cb50SEnrico Granata } 2055548cb50SEnrico Granata 206b9c1b51eSKate Stone bool DataVisualization::NamedSummaryFormats::Delete(const ConstString &type) { 207b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Delete(type); 2085548cb50SEnrico Granata } 2095548cb50SEnrico Granata 210b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Clear() { 211b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Clear(); 2125548cb50SEnrico Granata } 2135548cb50SEnrico Granata 214b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::ForEach( 215b9c1b51eSKate Stone std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)> 216b9c1b51eSKate Stone callback) { 2173de08c5fSEnrico Granata GetFormatManager().GetNamedSummaryContainer().ForEach(callback); 2185548cb50SEnrico Granata } 2195548cb50SEnrico Granata 220b9c1b51eSKate Stone uint32_t DataVisualization::NamedSummaryFormats::GetCount() { 221b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().GetCount(); 2225548cb50SEnrico Granata } 223