15548cb50SEnrico Granata //===-- DataVisualization.cpp ---------------------------------------*- C++ -*-===// 25548cb50SEnrico Granata // 35548cb50SEnrico Granata // The LLVM Compiler Infrastructure 45548cb50SEnrico Granata // 55548cb50SEnrico Granata // This file is distributed under the University of Illinois Open Source 65548cb50SEnrico Granata // License. See LICENSE.TXT for details. 75548cb50SEnrico Granata // 85548cb50SEnrico Granata //===----------------------------------------------------------------------===// 95548cb50SEnrico Granata 105548cb50SEnrico Granata #include "lldb/DataFormatters/DataVisualization.h" 115548cb50SEnrico Granata 125548cb50SEnrico Granata // C Includes 135548cb50SEnrico Granata // C++ Includes 145548cb50SEnrico Granata // Other libraries and framework includes 155548cb50SEnrico Granata // Project includes 165548cb50SEnrico Granata 175548cb50SEnrico Granata using namespace lldb; 185548cb50SEnrico Granata using namespace lldb_private; 195548cb50SEnrico Granata 205548cb50SEnrico Granata static FormatManager& 215548cb50SEnrico Granata GetFormatManager() 225548cb50SEnrico Granata { 235548cb50SEnrico Granata static FormatManager g_format_manager; 245548cb50SEnrico Granata return g_format_manager; 255548cb50SEnrico Granata } 265548cb50SEnrico Granata 275548cb50SEnrico Granata void 285548cb50SEnrico Granata DataVisualization::ForceUpdate () 295548cb50SEnrico Granata { 305548cb50SEnrico Granata GetFormatManager().Changed(); 315548cb50SEnrico Granata } 325548cb50SEnrico Granata 335548cb50SEnrico Granata uint32_t 345548cb50SEnrico Granata DataVisualization::GetCurrentRevision () 355548cb50SEnrico Granata { 365548cb50SEnrico Granata return GetFormatManager().GetCurrentRevision(); 375548cb50SEnrico Granata } 385548cb50SEnrico Granata 39a29cb0baSEnrico Granata bool 40a29cb0baSEnrico Granata DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj) 41a29cb0baSEnrico Granata { 42a29cb0baSEnrico Granata return GetFormatManager().ShouldPrintAsOneLiner(valobj); 43a29cb0baSEnrico Granata } 44a29cb0baSEnrico Granata 455548cb50SEnrico Granata lldb::TypeFormatImplSP 46852cc954SEnrico Granata DataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 475548cb50SEnrico Granata { 48852cc954SEnrico Granata return GetFormatManager().GetFormat(valobj, use_dynamic); 495548cb50SEnrico Granata } 505548cb50SEnrico Granata 515548cb50SEnrico Granata lldb::TypeFormatImplSP 52852cc954SEnrico Granata DataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp) 535548cb50SEnrico Granata { 54852cc954SEnrico Granata return GetFormatManager().GetFormatForType(type_sp); 555548cb50SEnrico Granata } 565548cb50SEnrico Granata 575548cb50SEnrico Granata lldb::TypeSummaryImplSP 58852cc954SEnrico Granata DataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 595548cb50SEnrico Granata { 605548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); 615548cb50SEnrico Granata } 625548cb50SEnrico Granata 635548cb50SEnrico Granata lldb::TypeSummaryImplSP 645548cb50SEnrico Granata DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp) 655548cb50SEnrico Granata { 665548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp); 675548cb50SEnrico Granata } 685548cb50SEnrico Granata 695548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 705548cb50SEnrico Granata lldb::SyntheticChildrenSP 715548cb50SEnrico Granata DataVisualization::GetSyntheticChildren (ValueObject& valobj, 725548cb50SEnrico Granata lldb::DynamicValueType use_dynamic) 735548cb50SEnrico Granata { 745548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); 755548cb50SEnrico Granata } 765548cb50SEnrico Granata #endif 775548cb50SEnrico Granata 785548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 795548cb50SEnrico Granata lldb::SyntheticChildrenSP 805548cb50SEnrico Granata DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp) 815548cb50SEnrico Granata { 825548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildrenForType(type_sp); 835548cb50SEnrico Granata } 845548cb50SEnrico Granata #endif 855548cb50SEnrico Granata 865548cb50SEnrico Granata lldb::TypeFilterImplSP 875548cb50SEnrico Granata DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp) 885548cb50SEnrico Granata { 895548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp); 905548cb50SEnrico Granata } 915548cb50SEnrico Granata 925548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 935548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP 945548cb50SEnrico Granata DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp) 955548cb50SEnrico Granata { 965548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp); 975548cb50SEnrico Granata } 985548cb50SEnrico Granata #endif 995548cb50SEnrico Granata 100c582713cSEnrico Granata lldb::TypeValidatorImplSP 101c582713cSEnrico Granata DataVisualization::GetValidator (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 102c582713cSEnrico Granata { 103c582713cSEnrico Granata return GetFormatManager().GetValidator(valobj, use_dynamic); 104c582713cSEnrico Granata } 105c582713cSEnrico Granata 106c582713cSEnrico Granata lldb::TypeValidatorImplSP 107c582713cSEnrico Granata DataVisualization::GetValidatorForType (lldb::TypeNameSpecifierImplSP type_sp) 108c582713cSEnrico Granata { 109c582713cSEnrico Granata return GetFormatManager().GetValidatorForType(type_sp); 110c582713cSEnrico Granata } 111c582713cSEnrico Granata 1125548cb50SEnrico Granata bool 1135548cb50SEnrico Granata DataVisualization::AnyMatches (ConstString type_name, 1145548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems items, 1155548cb50SEnrico Granata bool only_enabled, 1165548cb50SEnrico Granata const char** matching_category, 1175548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems* matching_type) 1185548cb50SEnrico Granata { 1195548cb50SEnrico Granata return GetFormatManager().AnyMatches(type_name, 1205548cb50SEnrico Granata items, 1215548cb50SEnrico Granata only_enabled, 1225548cb50SEnrico Granata matching_category, 1235548cb50SEnrico Granata matching_type); 1245548cb50SEnrico Granata } 1255548cb50SEnrico Granata 1265548cb50SEnrico Granata bool 1275548cb50SEnrico Granata DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry, 1285548cb50SEnrico Granata bool allow_create) 1295548cb50SEnrico Granata { 1305548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create); 1315548cb50SEnrico Granata return (entry.get() != NULL); 1325548cb50SEnrico Granata } 1335548cb50SEnrico Granata 134*9eeabff0SEnrico Granata bool 135*9eeabff0SEnrico Granata DataVisualization::Categories::GetCategory (lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) 136*9eeabff0SEnrico Granata { 137*9eeabff0SEnrico Granata if (LanguageCategory *lang_category = GetFormatManager().GetCategoryForLanguage(language)) 138*9eeabff0SEnrico Granata entry = lang_category->GetCategory(); 139*9eeabff0SEnrico Granata return (entry.get() != nullptr); 140*9eeabff0SEnrico Granata } 141*9eeabff0SEnrico Granata 1425548cb50SEnrico Granata void 1435548cb50SEnrico Granata DataVisualization::Categories::Add (const ConstString &category) 1445548cb50SEnrico Granata { 1455548cb50SEnrico Granata GetFormatManager().GetCategory(category); 1465548cb50SEnrico Granata } 1475548cb50SEnrico Granata 1485548cb50SEnrico Granata bool 1495548cb50SEnrico Granata DataVisualization::Categories::Delete (const ConstString &category) 1505548cb50SEnrico Granata { 1515548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1525548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category); 1535548cb50SEnrico Granata } 1545548cb50SEnrico Granata 1555548cb50SEnrico Granata void 1565548cb50SEnrico Granata DataVisualization::Categories::Clear () 1575548cb50SEnrico Granata { 1585548cb50SEnrico Granata GetFormatManager().ClearCategories(); 1595548cb50SEnrico Granata } 1605548cb50SEnrico Granata 1615548cb50SEnrico Granata void 1625548cb50SEnrico Granata DataVisualization::Categories::Clear (const ConstString &category) 1635548cb50SEnrico Granata { 1645548cb50SEnrico Granata GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); 1655548cb50SEnrico Granata } 1665548cb50SEnrico Granata 1675548cb50SEnrico Granata void 1685548cb50SEnrico Granata DataVisualization::Categories::Enable (const ConstString& category, 1695548cb50SEnrico Granata TypeCategoryMap::Position pos) 1705548cb50SEnrico Granata { 1715548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled()) 1725548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 173fa6b278fSEnrico Granata GetFormatManager().EnableCategory(category, pos, std::initializer_list<lldb::LanguageType>()); 1745548cb50SEnrico Granata } 1755548cb50SEnrico Granata 1765548cb50SEnrico Granata void 177964211f2SEnrico Granata DataVisualization::Categories::Enable (lldb::LanguageType lang_type) 178964211f2SEnrico Granata { 179964211f2SEnrico Granata if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type)) 180964211f2SEnrico Granata lang_category->Enable(); 181964211f2SEnrico Granata } 182964211f2SEnrico Granata 183964211f2SEnrico Granata void 1845548cb50SEnrico Granata DataVisualization::Categories::Disable (const ConstString& category) 1855548cb50SEnrico Granata { 1865548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled() == true) 1875548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1885548cb50SEnrico Granata } 1895548cb50SEnrico Granata 1905548cb50SEnrico Granata void 191964211f2SEnrico Granata DataVisualization::Categories::Disable (lldb::LanguageType lang_type) 192964211f2SEnrico Granata { 193964211f2SEnrico Granata if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type)) 194964211f2SEnrico Granata lang_category->Disable(); 195964211f2SEnrico Granata } 196964211f2SEnrico Granata 197964211f2SEnrico Granata void 1985548cb50SEnrico Granata DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category, 1995548cb50SEnrico Granata TypeCategoryMap::Position pos) 2005548cb50SEnrico Granata { 2015548cb50SEnrico Granata if (category.get()) 2025548cb50SEnrico Granata { 2035548cb50SEnrico Granata if (category->IsEnabled()) 2045548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 2055548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 2065548cb50SEnrico Granata } 2075548cb50SEnrico Granata } 2085548cb50SEnrico Granata 2095548cb50SEnrico Granata void 2105548cb50SEnrico Granata DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category) 2115548cb50SEnrico Granata { 2125548cb50SEnrico Granata if (category.get() && category->IsEnabled() == true) 2135548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 2145548cb50SEnrico Granata } 2155548cb50SEnrico Granata 2165548cb50SEnrico Granata void 217e7687adcSEnrico Granata DataVisualization::Categories::EnableStar () 218e7687adcSEnrico Granata { 219e7687adcSEnrico Granata GetFormatManager().EnableAllCategories (); 220e7687adcSEnrico Granata } 221e7687adcSEnrico Granata 222e7687adcSEnrico Granata void 223e7687adcSEnrico Granata DataVisualization::Categories::DisableStar () 224e7687adcSEnrico Granata { 225e7687adcSEnrico Granata GetFormatManager().DisableAllCategories(); 226e7687adcSEnrico Granata } 227e7687adcSEnrico Granata 228e7687adcSEnrico Granata void 2295548cb50SEnrico Granata DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton) 2305548cb50SEnrico Granata { 2315548cb50SEnrico Granata GetFormatManager().LoopThroughCategories(callback, callback_baton); 2325548cb50SEnrico Granata } 2335548cb50SEnrico Granata 2345548cb50SEnrico Granata uint32_t 2355548cb50SEnrico Granata DataVisualization::Categories::GetCount () 2365548cb50SEnrico Granata { 2375548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 2385548cb50SEnrico Granata } 2395548cb50SEnrico Granata 2405548cb50SEnrico Granata lldb::TypeCategoryImplSP 2415548cb50SEnrico Granata DataVisualization::Categories::GetCategoryAtIndex (size_t index) 2425548cb50SEnrico Granata { 2435548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 2445548cb50SEnrico Granata } 2455548cb50SEnrico Granata 2465548cb50SEnrico Granata bool 2475548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry) 2485548cb50SEnrico Granata { 249b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Get(type,entry); 2505548cb50SEnrico Granata } 2515548cb50SEnrico Granata 2525548cb50SEnrico Granata void 2535548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry) 2545548cb50SEnrico Granata { 255b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Add(FormatManager::GetValidTypeName(type),entry); 2565548cb50SEnrico Granata } 2575548cb50SEnrico Granata 2585548cb50SEnrico Granata bool 2595548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Delete (const ConstString &type) 2605548cb50SEnrico Granata { 261b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Delete(type); 2625548cb50SEnrico Granata } 2635548cb50SEnrico Granata 2645548cb50SEnrico Granata void 2655548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Clear () 2665548cb50SEnrico Granata { 267b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Clear(); 2685548cb50SEnrico Granata } 2695548cb50SEnrico Granata 2705548cb50SEnrico Granata void 2715548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton) 2725548cb50SEnrico Granata { 273b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().LoopThrough(callback, callback_baton); 2745548cb50SEnrico Granata } 2755548cb50SEnrico Granata 2765548cb50SEnrico Granata uint32_t 2775548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetCount () 2785548cb50SEnrico Granata { 279b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().GetCount(); 2805548cb50SEnrico Granata } 281