1*5548cb50SEnrico Granata //===-- DataVisualization.cpp ---------------------------------------*- C++ -*-===// 2*5548cb50SEnrico Granata // 3*5548cb50SEnrico Granata // The LLVM Compiler Infrastructure 4*5548cb50SEnrico Granata // 5*5548cb50SEnrico Granata // This file is distributed under the University of Illinois Open Source 6*5548cb50SEnrico Granata // License. See LICENSE.TXT for details. 7*5548cb50SEnrico Granata // 8*5548cb50SEnrico Granata //===----------------------------------------------------------------------===// 9*5548cb50SEnrico Granata 10*5548cb50SEnrico Granata #include "lldb/lldb-python.h" 11*5548cb50SEnrico Granata 12*5548cb50SEnrico Granata #include "lldb/DataFormatters/DataVisualization.h" 13*5548cb50SEnrico Granata 14*5548cb50SEnrico Granata // C Includes 15*5548cb50SEnrico Granata // C++ Includes 16*5548cb50SEnrico Granata // Other libraries and framework includes 17*5548cb50SEnrico Granata // Project includes 18*5548cb50SEnrico Granata 19*5548cb50SEnrico Granata #include "lldb/Core/Debugger.h" 20*5548cb50SEnrico Granata 21*5548cb50SEnrico Granata using namespace lldb; 22*5548cb50SEnrico Granata using namespace lldb_private; 23*5548cb50SEnrico Granata 24*5548cb50SEnrico Granata static FormatManager& 25*5548cb50SEnrico Granata GetFormatManager() 26*5548cb50SEnrico Granata { 27*5548cb50SEnrico Granata static FormatManager g_format_manager; 28*5548cb50SEnrico Granata return g_format_manager; 29*5548cb50SEnrico Granata } 30*5548cb50SEnrico Granata 31*5548cb50SEnrico Granata void 32*5548cb50SEnrico Granata DataVisualization::ForceUpdate () 33*5548cb50SEnrico Granata { 34*5548cb50SEnrico Granata GetFormatManager().Changed(); 35*5548cb50SEnrico Granata } 36*5548cb50SEnrico Granata 37*5548cb50SEnrico Granata uint32_t 38*5548cb50SEnrico Granata DataVisualization::GetCurrentRevision () 39*5548cb50SEnrico Granata { 40*5548cb50SEnrico Granata return GetFormatManager().GetCurrentRevision(); 41*5548cb50SEnrico Granata } 42*5548cb50SEnrico Granata 43*5548cb50SEnrico Granata lldb::TypeFormatImplSP 44*5548cb50SEnrico Granata DataVisualization::ValueFormats::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) 45*5548cb50SEnrico Granata { 46*5548cb50SEnrico Granata lldb::TypeFormatImplSP entry; 47*5548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Get(valobj, entry, use_dynamic); 48*5548cb50SEnrico Granata return entry; 49*5548cb50SEnrico Granata } 50*5548cb50SEnrico Granata 51*5548cb50SEnrico Granata lldb::TypeFormatImplSP 52*5548cb50SEnrico Granata DataVisualization::ValueFormats::GetFormat (const ConstString &type) 53*5548cb50SEnrico Granata { 54*5548cb50SEnrico Granata lldb::TypeFormatImplSP entry; 55*5548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Get(type, entry); 56*5548cb50SEnrico Granata return entry; 57*5548cb50SEnrico Granata } 58*5548cb50SEnrico Granata 59*5548cb50SEnrico Granata void 60*5548cb50SEnrico Granata DataVisualization::ValueFormats::Add (const ConstString &type, const lldb::TypeFormatImplSP &entry) 61*5548cb50SEnrico Granata { 62*5548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Add(FormatManager::GetValidTypeName(type),entry); 63*5548cb50SEnrico Granata } 64*5548cb50SEnrico Granata 65*5548cb50SEnrico Granata bool 66*5548cb50SEnrico Granata DataVisualization::ValueFormats::Delete (const ConstString &type) 67*5548cb50SEnrico Granata { 68*5548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().Delete(type); 69*5548cb50SEnrico Granata } 70*5548cb50SEnrico Granata 71*5548cb50SEnrico Granata void 72*5548cb50SEnrico Granata DataVisualization::ValueFormats::Clear () 73*5548cb50SEnrico Granata { 74*5548cb50SEnrico Granata GetFormatManager().GetValueNavigator().Clear(); 75*5548cb50SEnrico Granata } 76*5548cb50SEnrico Granata 77*5548cb50SEnrico Granata void 78*5548cb50SEnrico Granata DataVisualization::ValueFormats::LoopThrough (TypeFormatImpl::ValueCallback callback, void* callback_baton) 79*5548cb50SEnrico Granata { 80*5548cb50SEnrico Granata GetFormatManager().GetValueNavigator().LoopThrough(callback, callback_baton); 81*5548cb50SEnrico Granata } 82*5548cb50SEnrico Granata 83*5548cb50SEnrico Granata size_t 84*5548cb50SEnrico Granata DataVisualization::ValueFormats::GetCount () 85*5548cb50SEnrico Granata { 86*5548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().GetCount(); 87*5548cb50SEnrico Granata } 88*5548cb50SEnrico Granata 89*5548cb50SEnrico Granata lldb::TypeNameSpecifierImplSP 90*5548cb50SEnrico Granata DataVisualization::ValueFormats::GetTypeNameSpecifierForFormatAtIndex (size_t index) 91*5548cb50SEnrico Granata { 92*5548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().GetTypeNameSpecifierAtIndex(index); 93*5548cb50SEnrico Granata } 94*5548cb50SEnrico Granata 95*5548cb50SEnrico Granata lldb::TypeFormatImplSP 96*5548cb50SEnrico Granata DataVisualization::ValueFormats::GetFormatAtIndex (size_t index) 97*5548cb50SEnrico Granata { 98*5548cb50SEnrico Granata return GetFormatManager().GetValueNavigator().GetAtIndex(index); 99*5548cb50SEnrico Granata } 100*5548cb50SEnrico Granata 101*5548cb50SEnrico Granata lldb::TypeSummaryImplSP 102*5548cb50SEnrico Granata DataVisualization::GetSummaryFormat (ValueObject& valobj, 103*5548cb50SEnrico Granata lldb::DynamicValueType use_dynamic) 104*5548cb50SEnrico Granata { 105*5548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic); 106*5548cb50SEnrico Granata } 107*5548cb50SEnrico Granata 108*5548cb50SEnrico Granata lldb::TypeSummaryImplSP 109*5548cb50SEnrico Granata DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp) 110*5548cb50SEnrico Granata { 111*5548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp); 112*5548cb50SEnrico Granata } 113*5548cb50SEnrico Granata 114*5548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 115*5548cb50SEnrico Granata lldb::SyntheticChildrenSP 116*5548cb50SEnrico Granata DataVisualization::GetSyntheticChildren (ValueObject& valobj, 117*5548cb50SEnrico Granata lldb::DynamicValueType use_dynamic) 118*5548cb50SEnrico Granata { 119*5548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic); 120*5548cb50SEnrico Granata } 121*5548cb50SEnrico Granata #endif 122*5548cb50SEnrico Granata 123*5548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 124*5548cb50SEnrico Granata lldb::SyntheticChildrenSP 125*5548cb50SEnrico Granata DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp) 126*5548cb50SEnrico Granata { 127*5548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildrenForType(type_sp); 128*5548cb50SEnrico Granata } 129*5548cb50SEnrico Granata #endif 130*5548cb50SEnrico Granata 131*5548cb50SEnrico Granata lldb::TypeFilterImplSP 132*5548cb50SEnrico Granata DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp) 133*5548cb50SEnrico Granata { 134*5548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp); 135*5548cb50SEnrico Granata } 136*5548cb50SEnrico Granata 137*5548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON 138*5548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP 139*5548cb50SEnrico Granata DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp) 140*5548cb50SEnrico Granata { 141*5548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp); 142*5548cb50SEnrico Granata } 143*5548cb50SEnrico Granata #endif 144*5548cb50SEnrico Granata 145*5548cb50SEnrico Granata bool 146*5548cb50SEnrico Granata DataVisualization::AnyMatches (ConstString type_name, 147*5548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems items, 148*5548cb50SEnrico Granata bool only_enabled, 149*5548cb50SEnrico Granata const char** matching_category, 150*5548cb50SEnrico Granata TypeCategoryImpl::FormatCategoryItems* matching_type) 151*5548cb50SEnrico Granata { 152*5548cb50SEnrico Granata return GetFormatManager().AnyMatches(type_name, 153*5548cb50SEnrico Granata items, 154*5548cb50SEnrico Granata only_enabled, 155*5548cb50SEnrico Granata matching_category, 156*5548cb50SEnrico Granata matching_type); 157*5548cb50SEnrico Granata } 158*5548cb50SEnrico Granata 159*5548cb50SEnrico Granata bool 160*5548cb50SEnrico Granata DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry, 161*5548cb50SEnrico Granata bool allow_create) 162*5548cb50SEnrico Granata { 163*5548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create); 164*5548cb50SEnrico Granata return (entry.get() != NULL); 165*5548cb50SEnrico Granata } 166*5548cb50SEnrico Granata 167*5548cb50SEnrico Granata void 168*5548cb50SEnrico Granata DataVisualization::Categories::Add (const ConstString &category) 169*5548cb50SEnrico Granata { 170*5548cb50SEnrico Granata GetFormatManager().GetCategory(category); 171*5548cb50SEnrico Granata } 172*5548cb50SEnrico Granata 173*5548cb50SEnrico Granata bool 174*5548cb50SEnrico Granata DataVisualization::Categories::Delete (const ConstString &category) 175*5548cb50SEnrico Granata { 176*5548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 177*5548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category); 178*5548cb50SEnrico Granata } 179*5548cb50SEnrico Granata 180*5548cb50SEnrico Granata void 181*5548cb50SEnrico Granata DataVisualization::Categories::Clear () 182*5548cb50SEnrico Granata { 183*5548cb50SEnrico Granata GetFormatManager().ClearCategories(); 184*5548cb50SEnrico Granata } 185*5548cb50SEnrico Granata 186*5548cb50SEnrico Granata void 187*5548cb50SEnrico Granata DataVisualization::Categories::Clear (const ConstString &category) 188*5548cb50SEnrico Granata { 189*5548cb50SEnrico Granata GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary); 190*5548cb50SEnrico Granata } 191*5548cb50SEnrico Granata 192*5548cb50SEnrico Granata void 193*5548cb50SEnrico Granata DataVisualization::Categories::Enable (const ConstString& category, 194*5548cb50SEnrico Granata TypeCategoryMap::Position pos) 195*5548cb50SEnrico Granata { 196*5548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled()) 197*5548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 198*5548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 199*5548cb50SEnrico Granata } 200*5548cb50SEnrico Granata 201*5548cb50SEnrico Granata void 202*5548cb50SEnrico Granata DataVisualization::Categories::Disable (const ConstString& category) 203*5548cb50SEnrico Granata { 204*5548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled() == true) 205*5548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 206*5548cb50SEnrico Granata } 207*5548cb50SEnrico Granata 208*5548cb50SEnrico Granata void 209*5548cb50SEnrico Granata DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category, 210*5548cb50SEnrico Granata TypeCategoryMap::Position pos) 211*5548cb50SEnrico Granata { 212*5548cb50SEnrico Granata if (category.get()) 213*5548cb50SEnrico Granata { 214*5548cb50SEnrico Granata if (category->IsEnabled()) 215*5548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 216*5548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos); 217*5548cb50SEnrico Granata } 218*5548cb50SEnrico Granata } 219*5548cb50SEnrico Granata 220*5548cb50SEnrico Granata void 221*5548cb50SEnrico Granata DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category) 222*5548cb50SEnrico Granata { 223*5548cb50SEnrico Granata if (category.get() && category->IsEnabled() == true) 224*5548cb50SEnrico Granata GetFormatManager().DisableCategory(category); 225*5548cb50SEnrico Granata } 226*5548cb50SEnrico Granata 227*5548cb50SEnrico Granata void 228*5548cb50SEnrico Granata DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton) 229*5548cb50SEnrico Granata { 230*5548cb50SEnrico Granata GetFormatManager().LoopThroughCategories(callback, callback_baton); 231*5548cb50SEnrico Granata } 232*5548cb50SEnrico Granata 233*5548cb50SEnrico Granata uint32_t 234*5548cb50SEnrico Granata DataVisualization::Categories::GetCount () 235*5548cb50SEnrico Granata { 236*5548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount(); 237*5548cb50SEnrico Granata } 238*5548cb50SEnrico Granata 239*5548cb50SEnrico Granata lldb::TypeCategoryImplSP 240*5548cb50SEnrico Granata DataVisualization::Categories::GetCategoryAtIndex (size_t index) 241*5548cb50SEnrico Granata { 242*5548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index); 243*5548cb50SEnrico Granata } 244*5548cb50SEnrico Granata 245*5548cb50SEnrico Granata bool 246*5548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry) 247*5548cb50SEnrico Granata { 248*5548cb50SEnrico Granata return GetFormatManager().GetNamedSummaryNavigator().Get(type,entry); 249*5548cb50SEnrico Granata } 250*5548cb50SEnrico Granata 251*5548cb50SEnrico Granata void 252*5548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry) 253*5548cb50SEnrico Granata { 254*5548cb50SEnrico Granata GetFormatManager().GetNamedSummaryNavigator().Add(FormatManager::GetValidTypeName(type),entry); 255*5548cb50SEnrico Granata } 256*5548cb50SEnrico Granata 257*5548cb50SEnrico Granata bool 258*5548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Delete (const ConstString &type) 259*5548cb50SEnrico Granata { 260*5548cb50SEnrico Granata return GetFormatManager().GetNamedSummaryNavigator().Delete(type); 261*5548cb50SEnrico Granata } 262*5548cb50SEnrico Granata 263*5548cb50SEnrico Granata void 264*5548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Clear () 265*5548cb50SEnrico Granata { 266*5548cb50SEnrico Granata GetFormatManager().GetNamedSummaryNavigator().Clear(); 267*5548cb50SEnrico Granata } 268*5548cb50SEnrico Granata 269*5548cb50SEnrico Granata void 270*5548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton) 271*5548cb50SEnrico Granata { 272*5548cb50SEnrico Granata GetFormatManager().GetNamedSummaryNavigator().LoopThrough(callback, callback_baton); 273*5548cb50SEnrico Granata } 274*5548cb50SEnrico Granata 275*5548cb50SEnrico Granata uint32_t 276*5548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetCount () 277*5548cb50SEnrico Granata { 278*5548cb50SEnrico Granata return GetFormatManager().GetNamedSummaryNavigator().GetCount(); 279*5548cb50SEnrico Granata } 280