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 43*a29cb0baSEnrico Granata bool 44*a29cb0baSEnrico Granata DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj) 45*a29cb0baSEnrico Granata { 46*a29cb0baSEnrico Granata return GetFormatManager().ShouldPrintAsOneLiner(valobj); 47*a29cb0baSEnrico Granata } 48*a29cb0baSEnrico Granata 495548cb50SEnrico Granata lldb::TypeFormatImplSP 505548cb50SEnrico Granata DataVisualization::ValueFormats::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 515548cb50SEnrico Granata { 525548cb50SEnrico Granata lldb::TypeFormatImplSP entry; 535548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Get(valobj, entry, use_dynamic); 545548cb50SEnrico Granata return entry; 555548cb50SEnrico Granata } 565548cb50SEnrico Granata 575548cb50SEnrico Granata lldb::TypeFormatImplSP 585548cb50SEnrico Granata DataVisualization::ValueFormats::GetFormat (const ConstString &type) 595548cb50SEnrico Granata { 605548cb50SEnrico Granata lldb::TypeFormatImplSP entry; 615548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Get(type, entry); 625548cb50SEnrico Granata return entry; 635548cb50SEnrico Granata } 645548cb50SEnrico Granata 655548cb50SEnrico Granata void 665548cb50SEnrico Granata DataVisualization::ValueFormats::Add (const ConstString &type, const lldb::TypeFormatImplSP &entry) 675548cb50SEnrico Granata { 685548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Add(FormatManager::GetValidTypeName(type),entry); 695548cb50SEnrico Granata } 705548cb50SEnrico Granata 715548cb50SEnrico Granata bool 725548cb50SEnrico Granata DataVisualization::ValueFormats::Delete (const ConstString &type) 735548cb50SEnrico Granata { 745548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().Delete(type); 755548cb50SEnrico Granata } 765548cb50SEnrico Granata 775548cb50SEnrico Granata void 785548cb50SEnrico Granata DataVisualization::ValueFormats::Clear () 795548cb50SEnrico Granata { 805548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Clear(); 815548cb50SEnrico Granata } 825548cb50SEnrico Granata 835548cb50SEnrico Granata void 845548cb50SEnrico Granata DataVisualization::ValueFormats::LoopThrough (TypeFormatImpl::ValueCallback callback, void* callback_baton) 855548cb50SEnrico Granata { 865548cb50SEnrico Granata GetFormatManager().GetValueNavigator().LoopThrough(callback, callback_baton); 875548cb50SEnrico Granata } 885548cb50SEnrico Granata 895548cb50SEnrico Granata size_t 905548cb50SEnrico Granata DataVisualization::ValueFormats::GetCount () 915548cb50SEnrico Granata { 925548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().GetCount(); 935548cb50SEnrico Granata } 945548cb50SEnrico Granata 955548cb50SEnrico Granata lldb::TypeNameSpecifierImplSP 965548cb50SEnrico Granata DataVisualization::ValueFormats::GetTypeNameSpecifierForFormatAtIndex (size_t index) 975548cb50SEnrico Granata { 985548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().GetTypeNameSpecifierAtIndex(index); 995548cb50SEnrico Granata } 1005548cb50SEnrico Granata 1015548cb50SEnrico Granata lldb::TypeFormatImplSP 1025548cb50SEnrico Granata DataVisualization::ValueFormats::GetFormatAtIndex (size_t index) 1035548cb50SEnrico Granata { 1045548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().GetAtIndex(index); 1055548cb50SEnrico Granata } 1065548cb50SEnrico Granata 1075548cb50SEnrico Granata lldb::TypeSummaryImplSP 1085548cb50SEnrico Granata DataVisualization::GetSummaryFormat (ValueObject& valobj, 1095548cb50SEnrico Granata lldb::DynamicValueType use_dynamic) 1105548cb50SEnrico Granata { 1115548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); 1125548cb50SEnrico Granata } 1135548cb50SEnrico Granata 1145548cb50SEnrico Granata lldb::TypeSummaryImplSP 1155548cb50SEnrico Granata DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp) 1165548cb50SEnrico Granata { 1175548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp); 1185548cb50SEnrico Granata } 1195548cb50SEnrico Granata 1205548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 1215548cb50SEnrico Granata lldb::SyntheticChildrenSP 1225548cb50SEnrico Granata DataVisualization::GetSyntheticChildren (ValueObject& valobj, 1235548cb50SEnrico Granata lldb::DynamicValueType use_dynamic) 1245548cb50SEnrico Granata { 1255548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); 1265548cb50SEnrico Granata } 1275548cb50SEnrico Granata #endif 1285548cb50SEnrico Granata 1295548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 1305548cb50SEnrico Granata lldb::SyntheticChildrenSP 1315548cb50SEnrico Granata DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp) 1325548cb50SEnrico Granata { 1335548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildrenForType(type_sp); 1345548cb50SEnrico Granata } 1355548cb50SEnrico Granata #endif 1365548cb50SEnrico Granata 1375548cb50SEnrico Granata lldb::TypeFilterImplSP 1385548cb50SEnrico Granata DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp) 1395548cb50SEnrico Granata { 1405548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp); 1415548cb50SEnrico Granata } 1425548cb50SEnrico Granata 1435548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 1445548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP 1455548cb50SEnrico Granata DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp) 1465548cb50SEnrico Granata { 1475548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp); 1485548cb50SEnrico Granata } 1495548cb50SEnrico Granata #endif 1505548cb50SEnrico Granata 1515548cb50SEnrico Granata bool 1525548cb50SEnrico Granata DataVisualization::AnyMatches (ConstString type_name, 1535548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems items, 1545548cb50SEnrico Granata bool only_enabled, 1555548cb50SEnrico Granata const char** matching_category, 1565548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems* matching_type) 1575548cb50SEnrico Granata { 1585548cb50SEnrico Granata return GetFormatManager().AnyMatches(type_name, 1595548cb50SEnrico Granata items, 1605548cb50SEnrico Granata only_enabled, 1615548cb50SEnrico Granata matching_category, 1625548cb50SEnrico Granata matching_type); 1635548cb50SEnrico Granata } 1645548cb50SEnrico Granata 1655548cb50SEnrico Granata bool 1665548cb50SEnrico Granata DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry, 1675548cb50SEnrico Granata bool allow_create) 1685548cb50SEnrico Granata { 1695548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create); 1705548cb50SEnrico Granata return (entry.get() != NULL); 1715548cb50SEnrico Granata } 1725548cb50SEnrico Granata 1735548cb50SEnrico Granata void 1745548cb50SEnrico Granata DataVisualization::Categories::Add (const ConstString &category) 1755548cb50SEnrico Granata { 1765548cb50SEnrico Granata GetFormatManager().GetCategory(category); 1775548cb50SEnrico Granata } 1785548cb50SEnrico Granata 1795548cb50SEnrico Granata bool 1805548cb50SEnrico Granata DataVisualization::Categories::Delete (const ConstString &category) 1815548cb50SEnrico Granata { 1825548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 1835548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category); 1845548cb50SEnrico Granata } 1855548cb50SEnrico Granata 1865548cb50SEnrico Granata void 1875548cb50SEnrico Granata DataVisualization::Categories::Clear () 1885548cb50SEnrico Granata { 1895548cb50SEnrico Granata GetFormatManager().ClearCategories(); 1905548cb50SEnrico Granata } 1915548cb50SEnrico Granata 1925548cb50SEnrico Granata void 1935548cb50SEnrico Granata DataVisualization::Categories::Clear (const ConstString &category) 1945548cb50SEnrico Granata { 1955548cb50SEnrico Granata GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); 1965548cb50SEnrico Granata } 1975548cb50SEnrico Granata 1985548cb50SEnrico Granata void 1995548cb50SEnrico Granata DataVisualization::Categories::Enable (const ConstString& category, 2005548cb50SEnrico Granata TypeCategoryMap::Position pos) 2015548cb50SEnrico Granata { 2025548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled()) 2035548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 2045548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 2055548cb50SEnrico Granata } 2065548cb50SEnrico Granata 2075548cb50SEnrico Granata void 2085548cb50SEnrico Granata DataVisualization::Categories::Disable (const ConstString& category) 2095548cb50SEnrico Granata { 2105548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled() == true) 2115548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 2125548cb50SEnrico Granata } 2135548cb50SEnrico Granata 2145548cb50SEnrico Granata void 2155548cb50SEnrico Granata DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category, 2165548cb50SEnrico Granata TypeCategoryMap::Position pos) 2175548cb50SEnrico Granata { 2185548cb50SEnrico Granata if (category.get()) 2195548cb50SEnrico Granata { 2205548cb50SEnrico Granata if (category->IsEnabled()) 2215548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 2225548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 2235548cb50SEnrico Granata } 2245548cb50SEnrico Granata } 2255548cb50SEnrico Granata 2265548cb50SEnrico Granata void 2275548cb50SEnrico Granata DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category) 2285548cb50SEnrico Granata { 2295548cb50SEnrico Granata if (category.get() && category->IsEnabled() == true) 2305548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 2315548cb50SEnrico Granata } 2325548cb50SEnrico Granata 2335548cb50SEnrico Granata void 2345548cb50SEnrico Granata DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton) 2355548cb50SEnrico Granata { 2365548cb50SEnrico Granata GetFormatManager().LoopThroughCategories(callback, callback_baton); 2375548cb50SEnrico Granata } 2385548cb50SEnrico Granata 2395548cb50SEnrico Granata uint32_t 2405548cb50SEnrico Granata DataVisualization::Categories::GetCount () 2415548cb50SEnrico Granata { 2425548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 2435548cb50SEnrico Granata } 2445548cb50SEnrico Granata 2455548cb50SEnrico Granata lldb::TypeCategoryImplSP 2465548cb50SEnrico Granata DataVisualization::Categories::GetCategoryAtIndex (size_t index) 2475548cb50SEnrico Granata { 2485548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 2495548cb50SEnrico Granata } 2505548cb50SEnrico Granata 2515548cb50SEnrico Granata bool 2525548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry) 2535548cb50SEnrico Granata { 2545548cb50SEnrico Granata return GetFormatManager().GetNamedSummaryNavigator().Get(type,entry); 2555548cb50SEnrico Granata } 2565548cb50SEnrico Granata 2575548cb50SEnrico Granata void 2585548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry) 2595548cb50SEnrico Granata { 2605548cb50SEnrico Granata GetFormatManager().GetNamedSummaryNavigator().Add(FormatManager::GetValidTypeName(type),entry); 2615548cb50SEnrico Granata } 2625548cb50SEnrico Granata 2635548cb50SEnrico Granata bool 2645548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Delete (const ConstString &type) 2655548cb50SEnrico Granata { 2665548cb50SEnrico Granata return GetFormatManager().GetNamedSummaryNavigator().Delete(type); 2675548cb50SEnrico Granata } 2685548cb50SEnrico Granata 2695548cb50SEnrico Granata void 2705548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Clear () 2715548cb50SEnrico Granata { 2725548cb50SEnrico Granata GetFormatManager().GetNamedSummaryNavigator().Clear(); 2735548cb50SEnrico Granata } 2745548cb50SEnrico Granata 2755548cb50SEnrico Granata void 2765548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton) 2775548cb50SEnrico Granata { 2785548cb50SEnrico Granata GetFormatManager().GetNamedSummaryNavigator().LoopThrough(callback, callback_baton); 2795548cb50SEnrico Granata } 2805548cb50SEnrico Granata 2815548cb50SEnrico Granata uint32_t 2825548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetCount () 2835548cb50SEnrico Granata { 2845548cb50SEnrico Granata return GetFormatManager().GetNamedSummaryNavigator().GetCount(); 2855548cb50SEnrico Granata } 286