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 #include "lldb/Core/Debugger.h"
185548cb50SEnrico Granata 
195548cb50SEnrico Granata using namespace lldb;
205548cb50SEnrico Granata using namespace lldb_private;
215548cb50SEnrico Granata 
225548cb50SEnrico Granata static FormatManager&
235548cb50SEnrico Granata GetFormatManager()
245548cb50SEnrico Granata {
255548cb50SEnrico Granata     static FormatManager g_format_manager;
265548cb50SEnrico Granata     return g_format_manager;
275548cb50SEnrico Granata }
285548cb50SEnrico Granata 
295548cb50SEnrico Granata void
305548cb50SEnrico Granata DataVisualization::ForceUpdate ()
315548cb50SEnrico Granata {
325548cb50SEnrico Granata     GetFormatManager().Changed();
335548cb50SEnrico Granata }
345548cb50SEnrico Granata 
355548cb50SEnrico Granata uint32_t
365548cb50SEnrico Granata DataVisualization::GetCurrentRevision ()
375548cb50SEnrico Granata {
385548cb50SEnrico Granata     return GetFormatManager().GetCurrentRevision();
395548cb50SEnrico Granata }
405548cb50SEnrico Granata 
41a29cb0baSEnrico Granata bool
42a29cb0baSEnrico Granata DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj)
43a29cb0baSEnrico Granata {
44a29cb0baSEnrico Granata     return GetFormatManager().ShouldPrintAsOneLiner(valobj);
45a29cb0baSEnrico Granata }
46a29cb0baSEnrico Granata 
475548cb50SEnrico Granata lldb::TypeFormatImplSP
48852cc954SEnrico Granata DataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
495548cb50SEnrico Granata {
50852cc954SEnrico Granata     return GetFormatManager().GetFormat(valobj, use_dynamic);
515548cb50SEnrico Granata }
525548cb50SEnrico Granata 
535548cb50SEnrico Granata lldb::TypeFormatImplSP
54852cc954SEnrico Granata DataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp)
555548cb50SEnrico Granata {
56852cc954SEnrico Granata     return GetFormatManager().GetFormatForType(type_sp);
575548cb50SEnrico Granata }
585548cb50SEnrico Granata 
595548cb50SEnrico Granata lldb::TypeSummaryImplSP
60852cc954SEnrico Granata DataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
615548cb50SEnrico Granata {
625548cb50SEnrico Granata     return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
635548cb50SEnrico Granata }
645548cb50SEnrico Granata 
655548cb50SEnrico Granata lldb::TypeSummaryImplSP
665548cb50SEnrico Granata DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp)
675548cb50SEnrico Granata {
685548cb50SEnrico Granata     return GetFormatManager().GetSummaryForType(type_sp);
695548cb50SEnrico Granata }
705548cb50SEnrico Granata 
715548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON
725548cb50SEnrico Granata lldb::SyntheticChildrenSP
735548cb50SEnrico Granata DataVisualization::GetSyntheticChildren (ValueObject& valobj,
745548cb50SEnrico Granata                                          lldb::DynamicValueType use_dynamic)
755548cb50SEnrico Granata {
765548cb50SEnrico Granata     return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
775548cb50SEnrico Granata }
785548cb50SEnrico Granata #endif
795548cb50SEnrico Granata 
805548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON
815548cb50SEnrico Granata lldb::SyntheticChildrenSP
825548cb50SEnrico Granata DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp)
835548cb50SEnrico Granata {
845548cb50SEnrico Granata     return GetFormatManager().GetSyntheticChildrenForType(type_sp);
855548cb50SEnrico Granata }
865548cb50SEnrico Granata #endif
875548cb50SEnrico Granata 
885548cb50SEnrico Granata lldb::TypeFilterImplSP
895548cb50SEnrico Granata DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp)
905548cb50SEnrico Granata {
915548cb50SEnrico Granata     return GetFormatManager().GetFilterForType(type_sp);
925548cb50SEnrico Granata }
935548cb50SEnrico Granata 
945548cb50SEnrico Granata #ifndef LLDB_DISABLE_PYTHON
955548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP
965548cb50SEnrico Granata DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp)
975548cb50SEnrico Granata {
985548cb50SEnrico Granata     return GetFormatManager().GetSyntheticForType(type_sp);
995548cb50SEnrico Granata }
1005548cb50SEnrico Granata #endif
1015548cb50SEnrico Granata 
102c582713cSEnrico Granata lldb::TypeValidatorImplSP
103c582713cSEnrico Granata DataVisualization::GetValidator (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
104c582713cSEnrico Granata {
105c582713cSEnrico Granata     return GetFormatManager().GetValidator(valobj, use_dynamic);
106c582713cSEnrico Granata }
107c582713cSEnrico Granata 
108c582713cSEnrico Granata lldb::TypeValidatorImplSP
109c582713cSEnrico Granata DataVisualization::GetValidatorForType (lldb::TypeNameSpecifierImplSP type_sp)
110c582713cSEnrico Granata {
111c582713cSEnrico Granata     return GetFormatManager().GetValidatorForType(type_sp);
112c582713cSEnrico Granata }
113c582713cSEnrico Granata 
1145548cb50SEnrico Granata bool
1155548cb50SEnrico Granata DataVisualization::AnyMatches (ConstString type_name,
1165548cb50SEnrico Granata                                TypeCategoryImpl::FormatCategoryItems items,
1175548cb50SEnrico Granata                                bool only_enabled,
1185548cb50SEnrico Granata                                const char** matching_category,
1195548cb50SEnrico Granata                                TypeCategoryImpl::FormatCategoryItems* matching_type)
1205548cb50SEnrico Granata {
1215548cb50SEnrico Granata     return GetFormatManager().AnyMatches(type_name,
1225548cb50SEnrico Granata                                          items,
1235548cb50SEnrico Granata                                          only_enabled,
1245548cb50SEnrico Granata                                          matching_category,
1255548cb50SEnrico Granata                                          matching_type);
1265548cb50SEnrico Granata }
1275548cb50SEnrico Granata 
1285548cb50SEnrico Granata bool
1295548cb50SEnrico Granata DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry,
1305548cb50SEnrico Granata                                             bool allow_create)
1315548cb50SEnrico Granata {
1325548cb50SEnrico Granata     entry = GetFormatManager().GetCategory(category, allow_create);
1335548cb50SEnrico Granata     return (entry.get() != NULL);
1345548cb50SEnrico Granata }
1355548cb50SEnrico Granata 
1365548cb50SEnrico Granata void
1375548cb50SEnrico Granata DataVisualization::Categories::Add (const ConstString &category)
1385548cb50SEnrico Granata {
1395548cb50SEnrico Granata     GetFormatManager().GetCategory(category);
1405548cb50SEnrico Granata }
1415548cb50SEnrico Granata 
1425548cb50SEnrico Granata bool
1435548cb50SEnrico Granata DataVisualization::Categories::Delete (const ConstString &category)
1445548cb50SEnrico Granata {
1455548cb50SEnrico Granata     GetFormatManager().DisableCategory(category);
1465548cb50SEnrico Granata     return GetFormatManager().DeleteCategory(category);
1475548cb50SEnrico Granata }
1485548cb50SEnrico Granata 
1495548cb50SEnrico Granata void
1505548cb50SEnrico Granata DataVisualization::Categories::Clear ()
1515548cb50SEnrico Granata {
1525548cb50SEnrico Granata     GetFormatManager().ClearCategories();
1535548cb50SEnrico Granata }
1545548cb50SEnrico Granata 
1555548cb50SEnrico Granata void
1565548cb50SEnrico Granata DataVisualization::Categories::Clear (const ConstString &category)
1575548cb50SEnrico Granata {
1585548cb50SEnrico Granata     GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
1595548cb50SEnrico Granata }
1605548cb50SEnrico Granata 
1615548cb50SEnrico Granata void
1625548cb50SEnrico Granata DataVisualization::Categories::Enable (const ConstString& category,
1635548cb50SEnrico Granata                                        TypeCategoryMap::Position pos)
1645548cb50SEnrico Granata {
1655548cb50SEnrico Granata     if (GetFormatManager().GetCategory(category)->IsEnabled())
1665548cb50SEnrico Granata         GetFormatManager().DisableCategory(category);
167*fa6b278fSEnrico Granata     GetFormatManager().EnableCategory(category, pos, std::initializer_list<lldb::LanguageType>());
1685548cb50SEnrico Granata }
1695548cb50SEnrico Granata 
1705548cb50SEnrico Granata void
171964211f2SEnrico Granata DataVisualization::Categories::Enable (lldb::LanguageType lang_type)
172964211f2SEnrico Granata {
173964211f2SEnrico Granata     if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type))
174964211f2SEnrico Granata         lang_category->Enable();
175964211f2SEnrico Granata }
176964211f2SEnrico Granata 
177964211f2SEnrico Granata void
1785548cb50SEnrico Granata DataVisualization::Categories::Disable (const ConstString& category)
1795548cb50SEnrico Granata {
1805548cb50SEnrico Granata     if (GetFormatManager().GetCategory(category)->IsEnabled() == true)
1815548cb50SEnrico Granata         GetFormatManager().DisableCategory(category);
1825548cb50SEnrico Granata }
1835548cb50SEnrico Granata 
1845548cb50SEnrico Granata void
185964211f2SEnrico Granata DataVisualization::Categories::Disable (lldb::LanguageType lang_type)
186964211f2SEnrico Granata {
187964211f2SEnrico Granata     if (LanguageCategory* lang_category = GetFormatManager().GetCategoryForLanguage(lang_type))
188964211f2SEnrico Granata         lang_category->Disable();
189964211f2SEnrico Granata }
190964211f2SEnrico Granata 
191964211f2SEnrico Granata void
1925548cb50SEnrico Granata DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category,
1935548cb50SEnrico Granata                                        TypeCategoryMap::Position pos)
1945548cb50SEnrico Granata {
1955548cb50SEnrico Granata     if (category.get())
1965548cb50SEnrico Granata     {
1975548cb50SEnrico Granata         if (category->IsEnabled())
1985548cb50SEnrico Granata             GetFormatManager().DisableCategory(category);
1995548cb50SEnrico Granata         GetFormatManager().EnableCategory(category, pos);
2005548cb50SEnrico Granata     }
2015548cb50SEnrico Granata }
2025548cb50SEnrico Granata 
2035548cb50SEnrico Granata void
2045548cb50SEnrico Granata DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category)
2055548cb50SEnrico Granata {
2065548cb50SEnrico Granata     if (category.get() && category->IsEnabled() == true)
2075548cb50SEnrico Granata         GetFormatManager().DisableCategory(category);
2085548cb50SEnrico Granata }
2095548cb50SEnrico Granata 
2105548cb50SEnrico Granata void
211e7687adcSEnrico Granata DataVisualization::Categories::EnableStar ()
212e7687adcSEnrico Granata {
213e7687adcSEnrico Granata     GetFormatManager().EnableAllCategories ();
214e7687adcSEnrico Granata }
215e7687adcSEnrico Granata 
216e7687adcSEnrico Granata void
217e7687adcSEnrico Granata DataVisualization::Categories::DisableStar ()
218e7687adcSEnrico Granata {
219e7687adcSEnrico Granata     GetFormatManager().DisableAllCategories();
220e7687adcSEnrico Granata }
221e7687adcSEnrico Granata 
222e7687adcSEnrico Granata void
2235548cb50SEnrico Granata DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton)
2245548cb50SEnrico Granata {
2255548cb50SEnrico Granata     GetFormatManager().LoopThroughCategories(callback, callback_baton);
2265548cb50SEnrico Granata }
2275548cb50SEnrico Granata 
2285548cb50SEnrico Granata uint32_t
2295548cb50SEnrico Granata DataVisualization::Categories::GetCount ()
2305548cb50SEnrico Granata {
2315548cb50SEnrico Granata     return GetFormatManager().GetCategoriesCount();
2325548cb50SEnrico Granata }
2335548cb50SEnrico Granata 
2345548cb50SEnrico Granata lldb::TypeCategoryImplSP
2355548cb50SEnrico Granata DataVisualization::Categories::GetCategoryAtIndex (size_t index)
2365548cb50SEnrico Granata {
2375548cb50SEnrico Granata     return GetFormatManager().GetCategoryAtIndex(index);
2385548cb50SEnrico Granata }
2395548cb50SEnrico Granata 
2405548cb50SEnrico Granata bool
2415548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry)
2425548cb50SEnrico Granata {
243b72a501dSEnrico Granata     return GetFormatManager().GetNamedSummaryContainer().Get(type,entry);
2445548cb50SEnrico Granata }
2455548cb50SEnrico Granata 
2465548cb50SEnrico Granata void
2475548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry)
2485548cb50SEnrico Granata {
249b72a501dSEnrico Granata     GetFormatManager().GetNamedSummaryContainer().Add(FormatManager::GetValidTypeName(type),entry);
2505548cb50SEnrico Granata }
2515548cb50SEnrico Granata 
2525548cb50SEnrico Granata bool
2535548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Delete (const ConstString &type)
2545548cb50SEnrico Granata {
255b72a501dSEnrico Granata     return GetFormatManager().GetNamedSummaryContainer().Delete(type);
2565548cb50SEnrico Granata }
2575548cb50SEnrico Granata 
2585548cb50SEnrico Granata void
2595548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::Clear ()
2605548cb50SEnrico Granata {
261b72a501dSEnrico Granata     GetFormatManager().GetNamedSummaryContainer().Clear();
2625548cb50SEnrico Granata }
2635548cb50SEnrico Granata 
2645548cb50SEnrico Granata void
2655548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton)
2665548cb50SEnrico Granata {
267b72a501dSEnrico Granata     GetFormatManager().GetNamedSummaryContainer().LoopThrough(callback, callback_baton);
2685548cb50SEnrico Granata }
2695548cb50SEnrico Granata 
2705548cb50SEnrico Granata uint32_t
2715548cb50SEnrico Granata DataVisualization::NamedSummaryFormats::GetCount ()
2725548cb50SEnrico Granata {
273b72a501dSEnrico Granata     return GetFormatManager().GetNamedSummaryContainer().GetCount();
2745548cb50SEnrico Granata }
275