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