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