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 #include "lldb/Core/Debugger.h" 185548cb50SEnrico Granata 195548cb50SEnrico Granata using namespace lldb; 205548cb50SEnrico Granata using namespace lldb_private; 215548cb50SEnrico Granata 225548cb50SEnrico Granata static FormatManager& 235548cb50SEnrico Granata GetFormatManager() 245548cb50SEnrico Granata { 255548cb50SEnrico Granata static FormatManager g_format_manager; 265548cb50SEnrico Granata return g_format_manager; 275548cb50SEnrico Granata } 285548cb50SEnrico Granata 295548cb50SEnrico Granata void 305548cb50SEnrico Granata DataVisualization::ForceUpdate () 315548cb50SEnrico Granata { 325548cb50SEnrico Granata GetFormatManager().Changed(); 335548cb50SEnrico Granata } 345548cb50SEnrico Granata 355548cb50SEnrico Granata uint32_t 365548cb50SEnrico Granata DataVisualization::GetCurrentRevision () 375548cb50SEnrico Granata { 385548cb50SEnrico Granata return GetFormatManager().GetCurrentRevision(); 395548cb50SEnrico Granata } 405548cb50SEnrico Granata 41a29cb0baSEnrico Granata bool 42a29cb0baSEnrico Granata DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj) 43a29cb0baSEnrico Granata { 44a29cb0baSEnrico Granata return GetFormatManager().ShouldPrintAsOneLiner(valobj); 45a29cb0baSEnrico Granata } 46a29cb0baSEnrico Granata 475548cb50SEnrico Granata lldb::TypeFormatImplSP 48852cc954SEnrico Granata DataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 495548cb50SEnrico Granata { 50852cc954SEnrico Granata return GetFormatManager().GetFormat(valobj, use_dynamic); 515548cb50SEnrico Granata } 525548cb50SEnrico Granata 535548cb50SEnrico Granata lldb::TypeFormatImplSP 54852cc954SEnrico Granata DataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp) 555548cb50SEnrico Granata { 56852cc954SEnrico Granata return GetFormatManager().GetFormatForType(type_sp); 575548cb50SEnrico Granata } 585548cb50SEnrico Granata 595548cb50SEnrico Granata lldb::TypeSummaryImplSP 60852cc954SEnrico Granata DataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 615548cb50SEnrico Granata { 625548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); 635548cb50SEnrico Granata } 645548cb50SEnrico Granata 655548cb50SEnrico Granata lldb::TypeSummaryImplSP 665548cb50SEnrico Granata DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp) 675548cb50SEnrico Granata { 685548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp); 695548cb50SEnrico Granata } 705548cb50SEnrico Granata 715548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 725548cb50SEnrico Granata lldb::SyntheticChildrenSP 735548cb50SEnrico Granata DataVisualization::GetSyntheticChildren (ValueObject& valobj, 745548cb50SEnrico Granata lldb::DynamicValueType use_dynamic) 755548cb50SEnrico Granata { 765548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); 775548cb50SEnrico Granata } 785548cb50SEnrico Granata #endif 795548cb50SEnrico Granata 805548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 815548cb50SEnrico Granata lldb::SyntheticChildrenSP 825548cb50SEnrico Granata DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp) 835548cb50SEnrico Granata { 845548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildrenForType(type_sp); 855548cb50SEnrico Granata } 865548cb50SEnrico Granata #endif 875548cb50SEnrico Granata 885548cb50SEnrico Granata lldb::TypeFilterImplSP 895548cb50SEnrico Granata DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp) 905548cb50SEnrico Granata { 915548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp); 925548cb50SEnrico Granata } 935548cb50SEnrico Granata 945548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 955548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP 965548cb50SEnrico Granata DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp) 975548cb50SEnrico Granata { 985548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp); 995548cb50SEnrico Granata } 1005548cb50SEnrico Granata #endif 1015548cb50SEnrico Granata 102c582713cSEnrico Granata lldb::TypeValidatorImplSP 103c582713cSEnrico Granata DataVisualization::GetValidator (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 104c582713cSEnrico Granata { 105c582713cSEnrico Granata return GetFormatManager().GetValidator(valobj, use_dynamic); 106c582713cSEnrico Granata } 107c582713cSEnrico Granata 108c582713cSEnrico Granata lldb::TypeValidatorImplSP 109c582713cSEnrico Granata DataVisualization::GetValidatorForType (lldb::TypeNameSpecifierImplSP type_sp) 110c582713cSEnrico Granata { 111c582713cSEnrico Granata return GetFormatManager().GetValidatorForType(type_sp); 112c582713cSEnrico Granata } 113c582713cSEnrico Granata 1145548cb50SEnrico Granata bool 1155548cb50SEnrico Granata DataVisualization::AnyMatches (ConstString type_name, 1165548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems items, 1175548cb50SEnrico Granata bool only_enabled, 1185548cb50SEnrico Granata const char** matching_category, 1195548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems* matching_type) 1205548cb50SEnrico Granata { 1215548cb50SEnrico Granata return GetFormatManager().AnyMatches(type_name, 1225548cb50SEnrico Granata items, 1235548cb50SEnrico Granata only_enabled, 1245548cb50SEnrico Granata matching_category, 1255548cb50SEnrico Granata matching_type); 1265548cb50SEnrico Granata } 1275548cb50SEnrico Granata 1285548cb50SEnrico Granata bool 1295548cb50SEnrico Granata DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry, 1305548cb50SEnrico Granata bool allow_create) 1315548cb50SEnrico Granata { 1325548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create); 1335548cb50SEnrico Granata return (entry.get() != NULL); 1345548cb50SEnrico Granata } 1355548cb50SEnrico Granata 1365548cb50SEnrico Granata void 1375548cb50SEnrico Granata DataVisualization::Categories::Add (const ConstString &category) 1385548cb50SEnrico Granata { 1395548cb50SEnrico Granata GetFormatManager().GetCategory(category); 1405548cb50SEnrico Granata } 1415548cb50SEnrico Granata 1425548cb50SEnrico Granata bool 1435548cb50SEnrico Granata DataVisualization::Categories::Delete (const ConstString &category) 1445548cb50SEnrico Granata { 1455548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1465548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category); 1475548cb50SEnrico Granata } 1485548cb50SEnrico Granata 1495548cb50SEnrico Granata void 1505548cb50SEnrico Granata DataVisualization::Categories::Clear () 1515548cb50SEnrico Granata { 1525548cb50SEnrico Granata GetFormatManager().ClearCategories(); 1535548cb50SEnrico Granata } 1545548cb50SEnrico Granata 1555548cb50SEnrico Granata void 1565548cb50SEnrico Granata DataVisualization::Categories::Clear (const ConstString &category) 1575548cb50SEnrico Granata { 1585548cb50SEnrico Granata GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); 1595548cb50SEnrico Granata } 1605548cb50SEnrico Granata 1615548cb50SEnrico Granata void 1625548cb50SEnrico Granata DataVisualization::Categories::Enable (const ConstString& category, 1635548cb50SEnrico Granata TypeCategoryMap::Position pos) 1645548cb50SEnrico Granata { 1655548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled()) 1665548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 167*fa6b278fSEnrico Granata GetFormatManager().EnableCategory(category, pos, std::initializer_list<lldb::LanguageType>()); 1685548cb50SEnrico Granata } 1695548cb50SEnrico Granata 1705548cb50SEnrico Granata void 171964211f2SEnrico Granata DataVisualization::Categories::Enable (lldb::LanguageType lang_type) 172964211f2SEnrico Granata { 173964211f2SEnrico Granata if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type)) 174964211f2SEnrico Granata lang_category->Enable(); 175964211f2SEnrico Granata } 176964211f2SEnrico Granata 177964211f2SEnrico Granata void 1785548cb50SEnrico Granata DataVisualization::Categories::Disable (const ConstString& category) 1795548cb50SEnrico Granata { 1805548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled() == true) 1815548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1825548cb50SEnrico Granata } 1835548cb50SEnrico Granata 1845548cb50SEnrico Granata void 185964211f2SEnrico Granata DataVisualization::Categories::Disable (lldb::LanguageType lang_type) 186964211f2SEnrico Granata { 187964211f2SEnrico Granata if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type)) 188964211f2SEnrico Granata lang_category->Disable(); 189964211f2SEnrico Granata } 190964211f2SEnrico Granata 191964211f2SEnrico Granata void 1925548cb50SEnrico Granata DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category, 1935548cb50SEnrico Granata TypeCategoryMap::Position pos) 1945548cb50SEnrico Granata { 1955548cb50SEnrico Granata if (category.get()) 1965548cb50SEnrico Granata { 1975548cb50SEnrico Granata if (category->IsEnabled()) 1985548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1995548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 2005548cb50SEnrico Granata } 2015548cb50SEnrico Granata } 2025548cb50SEnrico Granata 2035548cb50SEnrico Granata void 2045548cb50SEnrico Granata DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category) 2055548cb50SEnrico Granata { 2065548cb50SEnrico Granata if (category.get() && category->IsEnabled() == true) 2075548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 2085548cb50SEnrico Granata } 2095548cb50SEnrico Granata 2105548cb50SEnrico Granata void 211e7687adcSEnrico Granata DataVisualization::Categories::EnableStar () 212e7687adcSEnrico Granata { 213e7687adcSEnrico Granata GetFormatManager().EnableAllCategories (); 214e7687adcSEnrico Granata } 215e7687adcSEnrico Granata 216e7687adcSEnrico Granata void 217e7687adcSEnrico Granata DataVisualization::Categories::DisableStar () 218e7687adcSEnrico Granata { 219e7687adcSEnrico Granata GetFormatManager().DisableAllCategories(); 220e7687adcSEnrico Granata } 221e7687adcSEnrico Granata 222e7687adcSEnrico Granata void 2235548cb50SEnrico Granata DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton) 2245548cb50SEnrico Granata { 2255548cb50SEnrico Granata GetFormatManager().LoopThroughCategories(callback, callback_baton); 2265548cb50SEnrico Granata } 2275548cb50SEnrico Granata 2285548cb50SEnrico Granata uint32_t 2295548cb50SEnrico Granata DataVisualization::Categories::GetCount () 2305548cb50SEnrico Granata { 2315548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 2325548cb50SEnrico Granata } 2335548cb50SEnrico Granata 2345548cb50SEnrico Granata lldb::TypeCategoryImplSP 2355548cb50SEnrico Granata DataVisualization::Categories::GetCategoryAtIndex (size_t index) 2365548cb50SEnrico Granata { 2375548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 2385548cb50SEnrico Granata } 2395548cb50SEnrico Granata 2405548cb50SEnrico Granata bool 2415548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry) 2425548cb50SEnrico Granata { 243b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Get(type,entry); 2445548cb50SEnrico Granata } 2455548cb50SEnrico Granata 2465548cb50SEnrico Granata void 2475548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry) 2485548cb50SEnrico Granata { 249b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Add(FormatManager::GetValidTypeName(type),entry); 2505548cb50SEnrico Granata } 2515548cb50SEnrico Granata 2525548cb50SEnrico Granata bool 2535548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Delete (const ConstString &type) 2545548cb50SEnrico Granata { 255b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Delete(type); 2565548cb50SEnrico Granata } 2575548cb50SEnrico Granata 2585548cb50SEnrico Granata void 2595548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Clear () 2605548cb50SEnrico Granata { 261b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Clear(); 2625548cb50SEnrico Granata } 2635548cb50SEnrico Granata 2645548cb50SEnrico Granata void 2655548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton) 2665548cb50SEnrico Granata { 267b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().LoopThrough(callback, callback_baton); 2685548cb50SEnrico Granata } 2695548cb50SEnrico Granata 2705548cb50SEnrico Granata uint32_t 2715548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetCount () 2725548cb50SEnrico Granata { 273b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().GetCount(); 2745548cb50SEnrico Granata } 275