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/lldb-python.h" 115548cb50SEnrico Granata 125548cb50SEnrico Granata #include "lldb/DataFormatters/DataVisualization.h" 135548cb50SEnrico Granata 145548cb50SEnrico Granata // C Includes 155548cb50SEnrico Granata // C++ Includes 165548cb50SEnrico Granata // Other libraries and framework includes 175548cb50SEnrico Granata // Project includes 185548cb50SEnrico Granata 195548cb50SEnrico Granata #include "lldb/Core/Debugger.h" 205548cb50SEnrico Granata 215548cb50SEnrico Granata using namespace lldb; 225548cb50SEnrico Granata using namespace lldb_private; 235548cb50SEnrico Granata 245548cb50SEnrico Granata static FormatManager& 255548cb50SEnrico Granata GetFormatManager() 265548cb50SEnrico Granata { 275548cb50SEnrico Granata static FormatManager g_format_manager; 285548cb50SEnrico Granata return g_format_manager; 295548cb50SEnrico Granata } 305548cb50SEnrico Granata 315548cb50SEnrico Granata void 325548cb50SEnrico Granata DataVisualization::ForceUpdate () 335548cb50SEnrico Granata { 345548cb50SEnrico Granata GetFormatManager().Changed(); 355548cb50SEnrico Granata } 365548cb50SEnrico Granata 375548cb50SEnrico Granata uint32_t 385548cb50SEnrico Granata DataVisualization::GetCurrentRevision () 395548cb50SEnrico Granata { 405548cb50SEnrico Granata return GetFormatManager().GetCurrentRevision(); 415548cb50SEnrico Granata } 425548cb50SEnrico Granata 43a29cb0baSEnrico Granata bool 44a29cb0baSEnrico Granata DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj) 45a29cb0baSEnrico Granata { 46a29cb0baSEnrico Granata return GetFormatManager().ShouldPrintAsOneLiner(valobj); 47a29cb0baSEnrico Granata } 48a29cb0baSEnrico Granata 495548cb50SEnrico Granata lldb::TypeFormatImplSP 50852cc954SEnrico Granata DataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 515548cb50SEnrico Granata { 52852cc954SEnrico Granata return GetFormatManager().GetFormat(valobj, use_dynamic); 535548cb50SEnrico Granata } 545548cb50SEnrico Granata 555548cb50SEnrico Granata lldb::TypeFormatImplSP 56852cc954SEnrico Granata DataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp) 575548cb50SEnrico Granata { 58852cc954SEnrico Granata return GetFormatManager().GetFormatForType(type_sp); 595548cb50SEnrico Granata } 605548cb50SEnrico Granata 615548cb50SEnrico Granata lldb::TypeSummaryImplSP 62852cc954SEnrico Granata DataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 635548cb50SEnrico Granata { 645548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); 655548cb50SEnrico Granata } 665548cb50SEnrico Granata 675548cb50SEnrico Granata lldb::TypeSummaryImplSP 685548cb50SEnrico Granata DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp) 695548cb50SEnrico Granata { 705548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp); 715548cb50SEnrico Granata } 725548cb50SEnrico Granata 735548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 745548cb50SEnrico Granata lldb::SyntheticChildrenSP 755548cb50SEnrico Granata DataVisualization::GetSyntheticChildren (ValueObject& valobj, 765548cb50SEnrico Granata lldb::DynamicValueType use_dynamic) 775548cb50SEnrico Granata { 785548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); 795548cb50SEnrico Granata } 805548cb50SEnrico Granata #endif 815548cb50SEnrico Granata 825548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 835548cb50SEnrico Granata lldb::SyntheticChildrenSP 845548cb50SEnrico Granata DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp) 855548cb50SEnrico Granata { 865548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildrenForType(type_sp); 875548cb50SEnrico Granata } 885548cb50SEnrico Granata #endif 895548cb50SEnrico Granata 905548cb50SEnrico Granata lldb::TypeFilterImplSP 915548cb50SEnrico Granata DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp) 925548cb50SEnrico Granata { 935548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp); 945548cb50SEnrico Granata } 955548cb50SEnrico Granata 965548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 975548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP 985548cb50SEnrico Granata DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp) 995548cb50SEnrico Granata { 1005548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp); 1015548cb50SEnrico Granata } 1025548cb50SEnrico Granata #endif 1035548cb50SEnrico Granata 1045548cb50SEnrico Granata bool 1055548cb50SEnrico Granata DataVisualization::AnyMatches (ConstString type_name, 1065548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems items, 1075548cb50SEnrico Granata bool only_enabled, 1085548cb50SEnrico Granata const char** matching_category, 1095548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems* matching_type) 1105548cb50SEnrico Granata { 1115548cb50SEnrico Granata return GetFormatManager().AnyMatches(type_name, 1125548cb50SEnrico Granata items, 1135548cb50SEnrico Granata only_enabled, 1145548cb50SEnrico Granata matching_category, 1155548cb50SEnrico Granata matching_type); 1165548cb50SEnrico Granata } 1175548cb50SEnrico Granata 1185548cb50SEnrico Granata bool 1195548cb50SEnrico Granata DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry, 1205548cb50SEnrico Granata bool allow_create) 1215548cb50SEnrico Granata { 1225548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create); 1235548cb50SEnrico Granata return (entry.get() != NULL); 1245548cb50SEnrico Granata } 1255548cb50SEnrico Granata 1265548cb50SEnrico Granata void 1275548cb50SEnrico Granata DataVisualization::Categories::Add (const ConstString &category) 1285548cb50SEnrico Granata { 1295548cb50SEnrico Granata GetFormatManager().GetCategory(category); 1305548cb50SEnrico Granata } 1315548cb50SEnrico Granata 1325548cb50SEnrico Granata bool 1335548cb50SEnrico Granata DataVisualization::Categories::Delete (const ConstString &category) 1345548cb50SEnrico Granata { 1355548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1365548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category); 1375548cb50SEnrico Granata } 1385548cb50SEnrico Granata 1395548cb50SEnrico Granata void 1405548cb50SEnrico Granata DataVisualization::Categories::Clear () 1415548cb50SEnrico Granata { 1425548cb50SEnrico Granata GetFormatManager().ClearCategories(); 1435548cb50SEnrico Granata } 1445548cb50SEnrico Granata 1455548cb50SEnrico Granata void 1465548cb50SEnrico Granata DataVisualization::Categories::Clear (const ConstString &category) 1475548cb50SEnrico Granata { 1485548cb50SEnrico Granata GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); 1495548cb50SEnrico Granata } 1505548cb50SEnrico Granata 1515548cb50SEnrico Granata void 1525548cb50SEnrico Granata DataVisualization::Categories::Enable (const ConstString& category, 1535548cb50SEnrico Granata TypeCategoryMap::Position pos) 1545548cb50SEnrico Granata { 1555548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled()) 1565548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1575548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 1585548cb50SEnrico Granata } 1595548cb50SEnrico Granata 1605548cb50SEnrico Granata void 1615548cb50SEnrico Granata DataVisualization::Categories::Disable (const ConstString& category) 1625548cb50SEnrico Granata { 1635548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled() == true) 1645548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1655548cb50SEnrico Granata } 1665548cb50SEnrico Granata 1675548cb50SEnrico Granata void 1685548cb50SEnrico Granata DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category, 1695548cb50SEnrico Granata TypeCategoryMap::Position pos) 1705548cb50SEnrico Granata { 1715548cb50SEnrico Granata if (category.get()) 1725548cb50SEnrico Granata { 1735548cb50SEnrico Granata if (category->IsEnabled()) 1745548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1755548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 1765548cb50SEnrico Granata } 1775548cb50SEnrico Granata } 1785548cb50SEnrico Granata 1795548cb50SEnrico Granata void 1805548cb50SEnrico Granata DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category) 1815548cb50SEnrico Granata { 1825548cb50SEnrico Granata if (category.get() && category->IsEnabled() == true) 1835548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1845548cb50SEnrico Granata } 1855548cb50SEnrico Granata 1865548cb50SEnrico Granata void 1875548cb50SEnrico Granata DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton) 1885548cb50SEnrico Granata { 1895548cb50SEnrico Granata GetFormatManager().LoopThroughCategories(callback, callback_baton); 1905548cb50SEnrico Granata } 1915548cb50SEnrico Granata 1925548cb50SEnrico Granata uint32_t 1935548cb50SEnrico Granata DataVisualization::Categories::GetCount () 1945548cb50SEnrico Granata { 1955548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 1965548cb50SEnrico Granata } 1975548cb50SEnrico Granata 1985548cb50SEnrico Granata lldb::TypeCategoryImplSP 1995548cb50SEnrico Granata DataVisualization::Categories::GetCategoryAtIndex (size_t index) 2005548cb50SEnrico Granata { 2015548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 2025548cb50SEnrico Granata } 2035548cb50SEnrico Granata 2045548cb50SEnrico Granata bool 2055548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry) 2065548cb50SEnrico Granata { 207*b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Get(type,entry); 2085548cb50SEnrico Granata } 2095548cb50SEnrico Granata 2105548cb50SEnrico Granata void 2115548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry) 2125548cb50SEnrico Granata { 213*b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Add(FormatManager::GetValidTypeName(type),entry); 2145548cb50SEnrico Granata } 2155548cb50SEnrico Granata 2165548cb50SEnrico Granata bool 2175548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Delete (const ConstString &type) 2185548cb50SEnrico Granata { 219*b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Delete(type); 2205548cb50SEnrico Granata } 2215548cb50SEnrico Granata 2225548cb50SEnrico Granata void 2235548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Clear () 2245548cb50SEnrico Granata { 225*b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Clear(); 2265548cb50SEnrico Granata } 2275548cb50SEnrico Granata 2285548cb50SEnrico Granata void 2295548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton) 2305548cb50SEnrico Granata { 231*b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().LoopThrough(callback, callback_baton); 2325548cb50SEnrico Granata } 2335548cb50SEnrico Granata 2345548cb50SEnrico Granata uint32_t 2355548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetCount () 2365548cb50SEnrico Granata { 237*b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().GetCount(); 2385548cb50SEnrico Granata } 239