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/DataFormatters/DataVisualization.h"
115548cb50SEnrico Granata 
125548cb50SEnrico Granata // C Includes
135548cb50SEnrico Granata // C++ Includes
145548cb50SEnrico Granata // Other libraries and framework includes
155548cb50SEnrico Granata // Project includes
165548cb50SEnrico Granata 
175548cb50SEnrico Granata using namespace lldb;
185548cb50SEnrico Granata using namespace lldb_private;
195548cb50SEnrico Granata 
205548cb50SEnrico Granata static FormatManager&
215548cb50SEnrico Granata GetFormatManager()
225548cb50SEnrico Granata {
235548cb50SEnrico Granata     static FormatManager g_format_manager;
245548cb50SEnrico Granata     return g_format_manager;
255548cb50SEnrico Granata }
265548cb50SEnrico Granata 
275548cb50SEnrico Granata void
285548cb50SEnrico Granata DataVisualization::ForceUpdate ()
295548cb50SEnrico Granata {
305548cb50SEnrico Granata     GetFormatManager().Changed();
315548cb50SEnrico Granata }
325548cb50SEnrico Granata 
335548cb50SEnrico Granata uint32_t
345548cb50SEnrico Granata DataVisualization::GetCurrentRevision ()
355548cb50SEnrico Granata {
365548cb50SEnrico Granata     return GetFormatManager().GetCurrentRevision();
375548cb50SEnrico Granata }
385548cb50SEnrico Granata 
39a29cb0baSEnrico Granata bool
40a29cb0baSEnrico Granata DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj)
41a29cb0baSEnrico Granata {
42a29cb0baSEnrico Granata     return GetFormatManager().ShouldPrintAsOneLiner(valobj);
43a29cb0baSEnrico Granata }
44a29cb0baSEnrico Granata 
455548cb50SEnrico Granata lldb::TypeFormatImplSP
46852cc954SEnrico Granata DataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
475548cb50SEnrico Granata {
48852cc954SEnrico Granata     return GetFormatManager().GetFormat(valobj, use_dynamic);
495548cb50SEnrico Granata }
505548cb50SEnrico Granata 
515548cb50SEnrico Granata lldb::TypeFormatImplSP
52852cc954SEnrico Granata DataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp)
535548cb50SEnrico Granata {
54852cc954SEnrico Granata     return GetFormatManager().GetFormatForType(type_sp);
555548cb50SEnrico Granata }
565548cb50SEnrico Granata 
575548cb50SEnrico Granata lldb::TypeSummaryImplSP
58852cc954SEnrico Granata DataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
595548cb50SEnrico Granata {
605548cb50SEnrico Granata     return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
615548cb50SEnrico Granata }
625548cb50SEnrico Granata 
635548cb50SEnrico Granata lldb::TypeSummaryImplSP
645548cb50SEnrico Granata DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp)
655548cb50SEnrico Granata {
665548cb50SEnrico Granata     return GetFormatManager().GetSummaryForType(type_sp);
675548cb50SEnrico Granata }
685548cb50SEnrico Granata 
695548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON
705548cb50SEnrico Granata lldb::SyntheticChildrenSP
715548cb50SEnrico Granata DataVisualization::GetSyntheticChildren (ValueObject& valobj,
725548cb50SEnrico Granata                                          lldb::DynamicValueType use_dynamic)
735548cb50SEnrico Granata {
745548cb50SEnrico Granata     return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
755548cb50SEnrico Granata }
765548cb50SEnrico Granata #endif
775548cb50SEnrico Granata 
785548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON
795548cb50SEnrico Granata lldb::SyntheticChildrenSP
805548cb50SEnrico Granata DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp)
815548cb50SEnrico Granata {
825548cb50SEnrico Granata     return GetFormatManager().GetSyntheticChildrenForType(type_sp);
835548cb50SEnrico Granata }
845548cb50SEnrico Granata #endif
855548cb50SEnrico Granata 
865548cb50SEnrico Granata lldb::TypeFilterImplSP
875548cb50SEnrico Granata DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp)
885548cb50SEnrico Granata {
895548cb50SEnrico Granata     return GetFormatManager().GetFilterForType(type_sp);
905548cb50SEnrico Granata }
915548cb50SEnrico Granata 
925548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON
935548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP
945548cb50SEnrico Granata DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp)
955548cb50SEnrico Granata {
965548cb50SEnrico Granata     return GetFormatManager().GetSyntheticForType(type_sp);
975548cb50SEnrico Granata }
985548cb50SEnrico Granata #endif
995548cb50SEnrico Granata 
100c582713cSEnrico Granata lldb::TypeValidatorImplSP
101c582713cSEnrico Granata DataVisualization::GetValidator (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
102c582713cSEnrico Granata {
103c582713cSEnrico Granata     return GetFormatManager().GetValidator(valobj, use_dynamic);
104c582713cSEnrico Granata }
105c582713cSEnrico Granata 
106c582713cSEnrico Granata lldb::TypeValidatorImplSP
107c582713cSEnrico Granata DataVisualization::GetValidatorForType (lldb::TypeNameSpecifierImplSP type_sp)
108c582713cSEnrico Granata {
109c582713cSEnrico Granata     return GetFormatManager().GetValidatorForType(type_sp);
110c582713cSEnrico Granata }
111c582713cSEnrico Granata 
1125548cb50SEnrico Granata bool
1135548cb50SEnrico Granata DataVisualization::AnyMatches (ConstString type_name,
1145548cb50SEnrico Granata                                TypeCategoryImpl::FormatCategoryItems items,
1155548cb50SEnrico Granata                                bool only_enabled,
1165548cb50SEnrico Granata                                const char** matching_category,
1175548cb50SEnrico Granata                                TypeCategoryImpl::FormatCategoryItems* matching_type)
1185548cb50SEnrico Granata {
1195548cb50SEnrico Granata     return GetFormatManager().AnyMatches(type_name,
1205548cb50SEnrico Granata                                          items,
1215548cb50SEnrico Granata                                          only_enabled,
1225548cb50SEnrico Granata                                          matching_category,
1235548cb50SEnrico Granata                                          matching_type);
1245548cb50SEnrico Granata }
1255548cb50SEnrico Granata 
1265548cb50SEnrico Granata bool
1275548cb50SEnrico Granata DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry,
1285548cb50SEnrico Granata                                             bool allow_create)
1295548cb50SEnrico Granata {
1305548cb50SEnrico Granata     entry = GetFormatManager().GetCategory(category, allow_create);
1315548cb50SEnrico Granata     return (entry.get() != NULL);
1325548cb50SEnrico Granata }
1335548cb50SEnrico Granata 
134*9eeabff0SEnrico Granata bool
135*9eeabff0SEnrico Granata DataVisualization::Categories::GetCategory (lldb::LanguageType language, lldb::TypeCategoryImplSP &entry)
136*9eeabff0SEnrico Granata {
137*9eeabff0SEnrico Granata     if (LanguageCategory *lang_category = GetFormatManager().GetCategoryForLanguage(language))
138*9eeabff0SEnrico Granata         entry = lang_category->GetCategory();
139*9eeabff0SEnrico Granata     return (entry.get() != nullptr);
140*9eeabff0SEnrico Granata }
141*9eeabff0SEnrico Granata 
1425548cb50SEnrico Granata void
1435548cb50SEnrico Granata DataVisualization::Categories::Add (const ConstString &category)
1445548cb50SEnrico Granata {
1455548cb50SEnrico Granata     GetFormatManager().GetCategory(category);
1465548cb50SEnrico Granata }
1475548cb50SEnrico Granata 
1485548cb50SEnrico Granata bool
1495548cb50SEnrico Granata DataVisualization::Categories::Delete (const ConstString &category)
1505548cb50SEnrico Granata {
1515548cb50SEnrico Granata     GetFormatManager().DisableCategory(category);
1525548cb50SEnrico Granata     return GetFormatManager().DeleteCategory(category);
1535548cb50SEnrico Granata }
1545548cb50SEnrico Granata 
1555548cb50SEnrico Granata void
1565548cb50SEnrico Granata DataVisualization::Categories::Clear ()
1575548cb50SEnrico Granata {
1585548cb50SEnrico Granata     GetFormatManager().ClearCategories();
1595548cb50SEnrico Granata }
1605548cb50SEnrico Granata 
1615548cb50SEnrico Granata void
1625548cb50SEnrico Granata DataVisualization::Categories::Clear (const ConstString &category)
1635548cb50SEnrico Granata {
1645548cb50SEnrico Granata     GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
1655548cb50SEnrico Granata }
1665548cb50SEnrico Granata 
1675548cb50SEnrico Granata void
1685548cb50SEnrico Granata DataVisualization::Categories::Enable (const ConstString& category,
1695548cb50SEnrico Granata                                        TypeCategoryMap::Position pos)
1705548cb50SEnrico Granata {
1715548cb50SEnrico Granata     if (GetFormatManager().GetCategory(category)->IsEnabled())
1725548cb50SEnrico Granata         GetFormatManager().DisableCategory(category);
173fa6b278fSEnrico Granata     GetFormatManager().EnableCategory(category, pos, std::initializer_list<lldb::LanguageType>());
1745548cb50SEnrico Granata }
1755548cb50SEnrico Granata 
1765548cb50SEnrico Granata void
177964211f2SEnrico Granata DataVisualization::Categories::Enable (lldb::LanguageType lang_type)
178964211f2SEnrico Granata {
179964211f2SEnrico Granata     if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type))
180964211f2SEnrico Granata         lang_category->Enable();
181964211f2SEnrico Granata }
182964211f2SEnrico Granata 
183964211f2SEnrico Granata void
1845548cb50SEnrico Granata DataVisualization::Categories::Disable (const ConstString& category)
1855548cb50SEnrico Granata {
1865548cb50SEnrico Granata     if (GetFormatManager().GetCategory(category)->IsEnabled() == true)
1875548cb50SEnrico Granata         GetFormatManager().DisableCategory(category);
1885548cb50SEnrico Granata }
1895548cb50SEnrico Granata 
1905548cb50SEnrico Granata void
191964211f2SEnrico Granata DataVisualization::Categories::Disable (lldb::LanguageType lang_type)
192964211f2SEnrico Granata {
193964211f2SEnrico Granata     if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type))
194964211f2SEnrico Granata         lang_category->Disable();
195964211f2SEnrico Granata }
196964211f2SEnrico Granata 
197964211f2SEnrico Granata void
1985548cb50SEnrico Granata DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category,
1995548cb50SEnrico Granata                                        TypeCategoryMap::Position pos)
2005548cb50SEnrico Granata {
2015548cb50SEnrico Granata     if (category.get())
2025548cb50SEnrico Granata     {
2035548cb50SEnrico Granata         if (category->IsEnabled())
2045548cb50SEnrico Granata             GetFormatManager().DisableCategory(category);
2055548cb50SEnrico Granata         GetFormatManager().EnableCategory(category, pos);
2065548cb50SEnrico Granata     }
2075548cb50SEnrico Granata }
2085548cb50SEnrico Granata 
2095548cb50SEnrico Granata void
2105548cb50SEnrico Granata DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category)
2115548cb50SEnrico Granata {
2125548cb50SEnrico Granata     if (category.get() && category->IsEnabled() == true)
2135548cb50SEnrico Granata         GetFormatManager().DisableCategory(category);
2145548cb50SEnrico Granata }
2155548cb50SEnrico Granata 
2165548cb50SEnrico Granata void
217e7687adcSEnrico Granata DataVisualization::Categories::EnableStar ()
218e7687adcSEnrico Granata {
219e7687adcSEnrico Granata     GetFormatManager().EnableAllCategories ();
220e7687adcSEnrico Granata }
221e7687adcSEnrico Granata 
222e7687adcSEnrico Granata void
223e7687adcSEnrico Granata DataVisualization::Categories::DisableStar ()
224e7687adcSEnrico Granata {
225e7687adcSEnrico Granata     GetFormatManager().DisableAllCategories();
226e7687adcSEnrico Granata }
227e7687adcSEnrico Granata 
228e7687adcSEnrico Granata void
2295548cb50SEnrico Granata DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton)
2305548cb50SEnrico Granata {
2315548cb50SEnrico Granata     GetFormatManager().LoopThroughCategories(callback, callback_baton);
2325548cb50SEnrico Granata }
2335548cb50SEnrico Granata 
2345548cb50SEnrico Granata uint32_t
2355548cb50SEnrico Granata DataVisualization::Categories::GetCount ()
2365548cb50SEnrico Granata {
2375548cb50SEnrico Granata     return GetFormatManager().GetCategoriesCount();
2385548cb50SEnrico Granata }
2395548cb50SEnrico Granata 
2405548cb50SEnrico Granata lldb::TypeCategoryImplSP
2415548cb50SEnrico Granata DataVisualization::Categories::GetCategoryAtIndex (size_t index)
2425548cb50SEnrico Granata {
2435548cb50SEnrico Granata     return GetFormatManager().GetCategoryAtIndex(index);
2445548cb50SEnrico Granata }
2455548cb50SEnrico Granata 
2465548cb50SEnrico Granata bool
2475548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry)
2485548cb50SEnrico Granata {
249b72a501dSEnrico Granata     return GetFormatManager().GetNamedSummaryContainer().Get(type,entry);
2505548cb50SEnrico Granata }
2515548cb50SEnrico Granata 
2525548cb50SEnrico Granata void
2535548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry)
2545548cb50SEnrico Granata {
255b72a501dSEnrico Granata     GetFormatManager().GetNamedSummaryContainer().Add(FormatManager::GetValidTypeName(type),entry);
2565548cb50SEnrico Granata }
2575548cb50SEnrico Granata 
2585548cb50SEnrico Granata bool
2595548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Delete (const ConstString &type)
2605548cb50SEnrico Granata {
261b72a501dSEnrico Granata     return GetFormatManager().GetNamedSummaryContainer().Delete(type);
2625548cb50SEnrico Granata }
2635548cb50SEnrico Granata 
2645548cb50SEnrico Granata void
2655548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Clear ()
2665548cb50SEnrico Granata {
267b72a501dSEnrico Granata     GetFormatManager().GetNamedSummaryContainer().Clear();
2685548cb50SEnrico Granata }
2695548cb50SEnrico Granata 
2705548cb50SEnrico Granata void
2715548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton)
2725548cb50SEnrico Granata {
273b72a501dSEnrico Granata     GetFormatManager().GetNamedSummaryContainer().LoopThrough(callback, callback_baton);
2745548cb50SEnrico Granata }
2755548cb50SEnrico Granata 
2765548cb50SEnrico Granata uint32_t
2775548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetCount ()
2785548cb50SEnrico Granata {
279b72a501dSEnrico Granata     return GetFormatManager().GetNamedSummaryContainer().GetCount();
2805548cb50SEnrico Granata }
281