1b9c1b51eSKate Stone //===-- DataVisualization.cpp ---------------------------------------*- C++
2b9c1b51eSKate Stone //-*-===//
35548cb50SEnrico Granata //
42946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
52946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
62946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
75548cb50SEnrico Granata //
85548cb50SEnrico Granata //===----------------------------------------------------------------------===//
95548cb50SEnrico Granata 
105548cb50SEnrico Granata #include "lldb/DataFormatters/DataVisualization.h"
115548cb50SEnrico Granata 
125548cb50SEnrico Granata 
135548cb50SEnrico Granata using namespace lldb;
145548cb50SEnrico Granata using namespace lldb_private;
155548cb50SEnrico Granata 
16b9c1b51eSKate Stone static FormatManager &GetFormatManager() {
175548cb50SEnrico Granata   static FormatManager g_format_manager;
185548cb50SEnrico Granata   return g_format_manager;
195548cb50SEnrico Granata }
205548cb50SEnrico Granata 
21b9c1b51eSKate Stone void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
225548cb50SEnrico Granata 
23b9c1b51eSKate Stone uint32_t DataVisualization::GetCurrentRevision() {
245548cb50SEnrico Granata   return GetFormatManager().GetCurrentRevision();
255548cb50SEnrico Granata }
265548cb50SEnrico Granata 
27b9c1b51eSKate Stone bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
28a29cb0baSEnrico Granata   return GetFormatManager().ShouldPrintAsOneLiner(valobj);
29a29cb0baSEnrico Granata }
30a29cb0baSEnrico Granata 
315548cb50SEnrico Granata lldb::TypeFormatImplSP
32b9c1b51eSKate Stone DataVisualization::GetFormat(ValueObject &valobj,
33b9c1b51eSKate Stone                              lldb::DynamicValueType use_dynamic) {
34852cc954SEnrico Granata   return GetFormatManager().GetFormat(valobj, use_dynamic);
355548cb50SEnrico Granata }
365548cb50SEnrico Granata 
375548cb50SEnrico Granata lldb::TypeFormatImplSP
38b9c1b51eSKate Stone DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
39852cc954SEnrico Granata   return GetFormatManager().GetFormatForType(type_sp);
405548cb50SEnrico Granata }
415548cb50SEnrico Granata 
425548cb50SEnrico Granata lldb::TypeSummaryImplSP
43b9c1b51eSKate Stone DataVisualization::GetSummaryFormat(ValueObject &valobj,
44b9c1b51eSKate Stone                                     lldb::DynamicValueType use_dynamic) {
455548cb50SEnrico Granata   return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
465548cb50SEnrico Granata }
475548cb50SEnrico Granata 
485548cb50SEnrico Granata lldb::TypeSummaryImplSP
49b9c1b51eSKate Stone DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
505548cb50SEnrico Granata   return GetFormatManager().GetSummaryForType(type_sp);
515548cb50SEnrico Granata }
525548cb50SEnrico Granata 
535548cb50SEnrico Granata lldb::SyntheticChildrenSP
545548cb50SEnrico Granata DataVisualization::GetSyntheticChildren(ValueObject &valobj,
55b9c1b51eSKate Stone                                         lldb::DynamicValueType use_dynamic) {
565548cb50SEnrico Granata   return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
575548cb50SEnrico Granata }
585548cb50SEnrico Granata 
595548cb50SEnrico Granata lldb::TypeFilterImplSP
60b9c1b51eSKate Stone DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
615548cb50SEnrico Granata   return GetFormatManager().GetFilterForType(type_sp);
625548cb50SEnrico Granata }
635548cb50SEnrico Granata 
645548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP
65b9c1b51eSKate Stone DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
665548cb50SEnrico Granata   return GetFormatManager().GetSyntheticForType(type_sp);
675548cb50SEnrico Granata }
685548cb50SEnrico Granata 
69c582713cSEnrico Granata lldb::TypeValidatorImplSP
70b9c1b51eSKate Stone DataVisualization::GetValidator(ValueObject &valobj,
71b9c1b51eSKate Stone                                 lldb::DynamicValueType use_dynamic) {
72c582713cSEnrico Granata   return GetFormatManager().GetValidator(valobj, use_dynamic);
73c582713cSEnrico Granata }
74c582713cSEnrico Granata 
75c582713cSEnrico Granata lldb::TypeValidatorImplSP
76b9c1b51eSKate Stone DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) {
77c582713cSEnrico Granata   return GetFormatManager().GetValidatorForType(type_sp);
78c582713cSEnrico Granata }
79c582713cSEnrico Granata 
80b9c1b51eSKate Stone bool DataVisualization::AnyMatches(
81b9c1b51eSKate Stone     ConstString type_name, TypeCategoryImpl::FormatCategoryItems items,
82b9c1b51eSKate Stone     bool only_enabled, const char **matching_category,
83b9c1b51eSKate Stone     TypeCategoryImpl::FormatCategoryItems *matching_type) {
84b9c1b51eSKate Stone   return GetFormatManager().AnyMatches(type_name, items, only_enabled,
85b9c1b51eSKate Stone                                        matching_category, matching_type);
865548cb50SEnrico Granata }
875548cb50SEnrico Granata 
880e4c4821SAdrian Prantl bool DataVisualization::Categories::GetCategory(ConstString category,
89b9c1b51eSKate Stone                                                 lldb::TypeCategoryImplSP &entry,
90b9c1b51eSKate Stone                                                 bool allow_create) {
915548cb50SEnrico Granata   entry = GetFormatManager().GetCategory(category, allow_create);
92*248a1305SKonrad Kleine   return (entry.get() != nullptr);
935548cb50SEnrico Granata }
945548cb50SEnrico Granata 
95b9c1b51eSKate Stone bool DataVisualization::Categories::GetCategory(
96b9c1b51eSKate Stone     lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) {
97b9c1b51eSKate Stone   if (LanguageCategory *lang_category =
98b9c1b51eSKate Stone           GetFormatManager().GetCategoryForLanguage(language))
999eeabff0SEnrico Granata     entry = lang_category->GetCategory();
1009eeabff0SEnrico Granata   return (entry.get() != nullptr);
1019eeabff0SEnrico Granata }
1029eeabff0SEnrico Granata 
1030e4c4821SAdrian Prantl void DataVisualization::Categories::Add(ConstString category) {
1045548cb50SEnrico Granata   GetFormatManager().GetCategory(category);
1055548cb50SEnrico Granata }
1065548cb50SEnrico Granata 
1070e4c4821SAdrian Prantl bool DataVisualization::Categories::Delete(ConstString category) {
1085548cb50SEnrico Granata   GetFormatManager().DisableCategory(category);
1095548cb50SEnrico Granata   return GetFormatManager().DeleteCategory(category);
1105548cb50SEnrico Granata }
1115548cb50SEnrico Granata 
112b9c1b51eSKate Stone void DataVisualization::Categories::Clear() {
1135548cb50SEnrico Granata   GetFormatManager().ClearCategories();
1145548cb50SEnrico Granata }
1155548cb50SEnrico Granata 
1160e4c4821SAdrian Prantl void DataVisualization::Categories::Clear(ConstString category) {
117b9c1b51eSKate Stone   GetFormatManager().GetCategory(category)->Clear(
118b9c1b51eSKate Stone       eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
1195548cb50SEnrico Granata }
1205548cb50SEnrico Granata 
1210e4c4821SAdrian Prantl void DataVisualization::Categories::Enable(ConstString category,
122b9c1b51eSKate Stone                                            TypeCategoryMap::Position pos) {
1235548cb50SEnrico Granata   if (GetFormatManager().GetCategory(category)->IsEnabled())
1245548cb50SEnrico Granata     GetFormatManager().DisableCategory(category);
125b9c1b51eSKate Stone   GetFormatManager().EnableCategory(
126b9c1b51eSKate Stone       category, pos, std::initializer_list<lldb::LanguageType>());
1275548cb50SEnrico Granata }
1285548cb50SEnrico Granata 
129b9c1b51eSKate Stone void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
130b9c1b51eSKate Stone   if (LanguageCategory *lang_category =
131b9c1b51eSKate Stone           GetFormatManager().GetCategoryForLanguage(lang_type))
132964211f2SEnrico Granata     lang_category->Enable();
133964211f2SEnrico Granata }
134964211f2SEnrico Granata 
1350e4c4821SAdrian Prantl void DataVisualization::Categories::Disable(ConstString category) {
136a6682a41SJonas Devlieghere   if (GetFormatManager().GetCategory(category)->IsEnabled())
1375548cb50SEnrico Granata     GetFormatManager().DisableCategory(category);
1385548cb50SEnrico Granata }
1395548cb50SEnrico Granata 
140b9c1b51eSKate Stone void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
141b9c1b51eSKate Stone   if (LanguageCategory *lang_category =
142b9c1b51eSKate Stone           GetFormatManager().GetCategoryForLanguage(lang_type))
143964211f2SEnrico Granata     lang_category->Disable();
144964211f2SEnrico Granata }
145964211f2SEnrico Granata 
146b9c1b51eSKate Stone void DataVisualization::Categories::Enable(
147b9c1b51eSKate Stone     const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) {
148b9c1b51eSKate Stone   if (category.get()) {
1495548cb50SEnrico Granata     if (category->IsEnabled())
1505548cb50SEnrico Granata       GetFormatManager().DisableCategory(category);
1515548cb50SEnrico Granata     GetFormatManager().EnableCategory(category, pos);
1525548cb50SEnrico Granata   }
1535548cb50SEnrico Granata }
1545548cb50SEnrico Granata 
155b9c1b51eSKate Stone void DataVisualization::Categories::Disable(
156b9c1b51eSKate Stone     const lldb::TypeCategoryImplSP &category) {
157a6682a41SJonas Devlieghere   if (category.get() && category->IsEnabled())
1585548cb50SEnrico Granata     GetFormatManager().DisableCategory(category);
1595548cb50SEnrico Granata }
1605548cb50SEnrico Granata 
161b9c1b51eSKate Stone void DataVisualization::Categories::EnableStar() {
162e7687adcSEnrico Granata   GetFormatManager().EnableAllCategories();
163e7687adcSEnrico Granata }
164e7687adcSEnrico Granata 
165b9c1b51eSKate Stone void DataVisualization::Categories::DisableStar() {
166e7687adcSEnrico Granata   GetFormatManager().DisableAllCategories();
167e7687adcSEnrico Granata }
168e7687adcSEnrico Granata 
169b9c1b51eSKate Stone void DataVisualization::Categories::ForEach(
170b9c1b51eSKate Stone     TypeCategoryMap::ForEachCallback callback) {
171b56d0103SEnrico Granata   GetFormatManager().ForEachCategory(callback);
172b56d0103SEnrico Granata }
173b56d0103SEnrico Granata 
174b9c1b51eSKate Stone uint32_t DataVisualization::Categories::GetCount() {
1755548cb50SEnrico Granata   return GetFormatManager().GetCategoriesCount();
1765548cb50SEnrico Granata }
1775548cb50SEnrico Granata 
1785548cb50SEnrico Granata lldb::TypeCategoryImplSP
179b9c1b51eSKate Stone DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
1805548cb50SEnrico Granata   return GetFormatManager().GetCategoryAtIndex(index);
1815548cb50SEnrico Granata }
1825548cb50SEnrico Granata 
183b9c1b51eSKate Stone bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
1840e4c4821SAdrian Prantl     ConstString type, lldb::TypeSummaryImplSP &entry) {
185b72a501dSEnrico Granata   return GetFormatManager().GetNamedSummaryContainer().Get(type, entry);
1865548cb50SEnrico Granata }
1875548cb50SEnrico Granata 
188b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Add(
1890e4c4821SAdrian Prantl     ConstString type, const lldb::TypeSummaryImplSP &entry) {
190b9c1b51eSKate Stone   GetFormatManager().GetNamedSummaryContainer().Add(
191b9c1b51eSKate Stone       FormatManager::GetValidTypeName(type), entry);
1925548cb50SEnrico Granata }
1935548cb50SEnrico Granata 
1940e4c4821SAdrian Prantl bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
195b72a501dSEnrico Granata   return GetFormatManager().GetNamedSummaryContainer().Delete(type);
1965548cb50SEnrico Granata }
1975548cb50SEnrico Granata 
198b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Clear() {
199b72a501dSEnrico Granata   GetFormatManager().GetNamedSummaryContainer().Clear();
2005548cb50SEnrico Granata }
2015548cb50SEnrico Granata 
202b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::ForEach(
203b9c1b51eSKate Stone     std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)>
204b9c1b51eSKate Stone         callback) {
2053de08c5fSEnrico Granata   GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
2065548cb50SEnrico Granata }
2075548cb50SEnrico Granata 
208b9c1b51eSKate Stone uint32_t DataVisualization::NamedSummaryFormats::GetCount() {
209b72a501dSEnrico Granata   return GetFormatManager().GetNamedSummaryContainer().GetCount();
2105548cb50SEnrico Granata }
211