180814287SRaphael Isemann //===-- DataVisualization.cpp ---------------------------------------------===//
25548cb50SEnrico Granata //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65548cb50SEnrico Granata //
75548cb50SEnrico Granata //===----------------------------------------------------------------------===//
85548cb50SEnrico Granata
95548cb50SEnrico Granata #include "lldb/DataFormatters/DataVisualization.h"
105548cb50SEnrico Granata
115548cb50SEnrico Granata
125548cb50SEnrico Granata using namespace lldb;
135548cb50SEnrico Granata using namespace lldb_private;
145548cb50SEnrico Granata
GetFormatManager()15b9c1b51eSKate Stone static FormatManager &GetFormatManager() {
165548cb50SEnrico Granata static FormatManager g_format_manager;
175548cb50SEnrico Granata return g_format_manager;
185548cb50SEnrico Granata }
195548cb50SEnrico Granata
ForceUpdate()20b9c1b51eSKate Stone void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
215548cb50SEnrico Granata
GetCurrentRevision()22b9c1b51eSKate Stone uint32_t DataVisualization::GetCurrentRevision() {
235548cb50SEnrico Granata return GetFormatManager().GetCurrentRevision();
245548cb50SEnrico Granata }
255548cb50SEnrico Granata
ShouldPrintAsOneLiner(ValueObject & valobj)26b9c1b51eSKate Stone bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
27a29cb0baSEnrico Granata return GetFormatManager().ShouldPrintAsOneLiner(valobj);
28a29cb0baSEnrico Granata }
29a29cb0baSEnrico Granata
305548cb50SEnrico Granata lldb::TypeFormatImplSP
GetFormat(ValueObject & valobj,lldb::DynamicValueType use_dynamic)31b9c1b51eSKate Stone DataVisualization::GetFormat(ValueObject &valobj,
32b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) {
33852cc954SEnrico Granata return GetFormatManager().GetFormat(valobj, use_dynamic);
345548cb50SEnrico Granata }
355548cb50SEnrico Granata
365548cb50SEnrico Granata lldb::TypeFormatImplSP
GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp)37b9c1b51eSKate Stone DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
38852cc954SEnrico Granata return GetFormatManager().GetFormatForType(type_sp);
395548cb50SEnrico Granata }
405548cb50SEnrico Granata
415548cb50SEnrico Granata lldb::TypeSummaryImplSP
GetSummaryFormat(ValueObject & valobj,lldb::DynamicValueType use_dynamic)42b9c1b51eSKate Stone DataVisualization::GetSummaryFormat(ValueObject &valobj,
43b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) {
445548cb50SEnrico Granata return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
455548cb50SEnrico Granata }
465548cb50SEnrico Granata
475548cb50SEnrico Granata lldb::TypeSummaryImplSP
GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp)48b9c1b51eSKate Stone DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
495548cb50SEnrico Granata return GetFormatManager().GetSummaryForType(type_sp);
505548cb50SEnrico Granata }
515548cb50SEnrico Granata
525548cb50SEnrico Granata lldb::SyntheticChildrenSP
GetSyntheticChildren(ValueObject & valobj,lldb::DynamicValueType use_dynamic)535548cb50SEnrico Granata DataVisualization::GetSyntheticChildren(ValueObject &valobj,
54b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) {
555548cb50SEnrico Granata return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
565548cb50SEnrico Granata }
575548cb50SEnrico Granata
585548cb50SEnrico Granata lldb::TypeFilterImplSP
GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp)59b9c1b51eSKate Stone DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
605548cb50SEnrico Granata return GetFormatManager().GetFilterForType(type_sp);
615548cb50SEnrico Granata }
625548cb50SEnrico Granata
635548cb50SEnrico Granata lldb::ScriptedSyntheticChildrenSP
GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp)64b9c1b51eSKate Stone DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
655548cb50SEnrico Granata return GetFormatManager().GetSyntheticForType(type_sp);
665548cb50SEnrico Granata }
675548cb50SEnrico Granata
AnyMatches(ConstString type_name,TypeCategoryImpl::FormatCategoryItems items,bool only_enabled,const char ** matching_category,TypeCategoryImpl::FormatCategoryItems * matching_type)68b9c1b51eSKate Stone bool DataVisualization::AnyMatches(
69b9c1b51eSKate Stone ConstString type_name, TypeCategoryImpl::FormatCategoryItems items,
70b9c1b51eSKate Stone bool only_enabled, const char **matching_category,
71b9c1b51eSKate Stone TypeCategoryImpl::FormatCategoryItems *matching_type) {
72b9c1b51eSKate Stone return GetFormatManager().AnyMatches(type_name, items, only_enabled,
73b9c1b51eSKate Stone matching_category, matching_type);
745548cb50SEnrico Granata }
755548cb50SEnrico Granata
GetCategory(ConstString category,lldb::TypeCategoryImplSP & entry,bool allow_create)760e4c4821SAdrian Prantl bool DataVisualization::Categories::GetCategory(ConstString category,
77b9c1b51eSKate Stone lldb::TypeCategoryImplSP &entry,
78b9c1b51eSKate Stone bool allow_create) {
795548cb50SEnrico Granata entry = GetFormatManager().GetCategory(category, allow_create);
80248a1305SKonrad Kleine return (entry.get() != nullptr);
815548cb50SEnrico Granata }
825548cb50SEnrico Granata
GetCategory(lldb::LanguageType language,lldb::TypeCategoryImplSP & entry)83b9c1b51eSKate Stone bool DataVisualization::Categories::GetCategory(
84b9c1b51eSKate Stone lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) {
85b9c1b51eSKate Stone if (LanguageCategory *lang_category =
86b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(language))
879eeabff0SEnrico Granata entry = lang_category->GetCategory();
889eeabff0SEnrico Granata return (entry.get() != nullptr);
899eeabff0SEnrico Granata }
909eeabff0SEnrico Granata
Add(ConstString category)910e4c4821SAdrian Prantl void DataVisualization::Categories::Add(ConstString category) {
925548cb50SEnrico Granata GetFormatManager().GetCategory(category);
935548cb50SEnrico Granata }
945548cb50SEnrico Granata
Delete(ConstString category)950e4c4821SAdrian Prantl bool DataVisualization::Categories::Delete(ConstString category) {
965548cb50SEnrico Granata GetFormatManager().DisableCategory(category);
975548cb50SEnrico Granata return GetFormatManager().DeleteCategory(category);
985548cb50SEnrico Granata }
995548cb50SEnrico Granata
Clear()100b9c1b51eSKate Stone void DataVisualization::Categories::Clear() {
1015548cb50SEnrico Granata GetFormatManager().ClearCategories();
1025548cb50SEnrico Granata }
1035548cb50SEnrico Granata
Clear(ConstString category)1040e4c4821SAdrian Prantl void DataVisualization::Categories::Clear(ConstString category) {
105b9c1b51eSKate Stone GetFormatManager().GetCategory(category)->Clear(
106b9c1b51eSKate Stone eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
1075548cb50SEnrico Granata }
1085548cb50SEnrico Granata
Enable(ConstString category,TypeCategoryMap::Position pos)1090e4c4821SAdrian Prantl void DataVisualization::Categories::Enable(ConstString category,
110b9c1b51eSKate Stone TypeCategoryMap::Position pos) {
1115548cb50SEnrico Granata if (GetFormatManager().GetCategory(category)->IsEnabled())
1125548cb50SEnrico Granata GetFormatManager().DisableCategory(category);
11389618a7cSDavide Italiano GetFormatManager().EnableCategory(category, pos, {});
1145548cb50SEnrico Granata }
1155548cb50SEnrico Granata
Enable(lldb::LanguageType lang_type)116b9c1b51eSKate Stone void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
117b9c1b51eSKate Stone if (LanguageCategory *lang_category =
118b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type))
119964211f2SEnrico Granata lang_category->Enable();
120964211f2SEnrico Granata }
121964211f2SEnrico Granata
Disable(ConstString category)1220e4c4821SAdrian Prantl void DataVisualization::Categories::Disable(ConstString category) {
123a6682a41SJonas Devlieghere if (GetFormatManager().GetCategory(category)->IsEnabled())
1245548cb50SEnrico Granata GetFormatManager().DisableCategory(category);
1255548cb50SEnrico Granata }
1265548cb50SEnrico Granata
Disable(lldb::LanguageType lang_type)127b9c1b51eSKate Stone void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
128b9c1b51eSKate Stone if (LanguageCategory *lang_category =
129b9c1b51eSKate Stone GetFormatManager().GetCategoryForLanguage(lang_type))
130964211f2SEnrico Granata lang_category->Disable();
131964211f2SEnrico Granata }
132964211f2SEnrico Granata
Enable(const lldb::TypeCategoryImplSP & category,TypeCategoryMap::Position pos)133b9c1b51eSKate Stone void DataVisualization::Categories::Enable(
134b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) {
135b9c1b51eSKate Stone if (category.get()) {
1365548cb50SEnrico Granata if (category->IsEnabled())
1375548cb50SEnrico Granata GetFormatManager().DisableCategory(category);
1385548cb50SEnrico Granata GetFormatManager().EnableCategory(category, pos);
1395548cb50SEnrico Granata }
1405548cb50SEnrico Granata }
1415548cb50SEnrico Granata
Disable(const lldb::TypeCategoryImplSP & category)142b9c1b51eSKate Stone void DataVisualization::Categories::Disable(
143b9c1b51eSKate Stone const lldb::TypeCategoryImplSP &category) {
144a6682a41SJonas Devlieghere if (category.get() && category->IsEnabled())
1455548cb50SEnrico Granata GetFormatManager().DisableCategory(category);
1465548cb50SEnrico Granata }
1475548cb50SEnrico Granata
EnableStar()148b9c1b51eSKate Stone void DataVisualization::Categories::EnableStar() {
149e7687adcSEnrico Granata GetFormatManager().EnableAllCategories();
150e7687adcSEnrico Granata }
151e7687adcSEnrico Granata
DisableStar()152b9c1b51eSKate Stone void DataVisualization::Categories::DisableStar() {
153e7687adcSEnrico Granata GetFormatManager().DisableAllCategories();
154e7687adcSEnrico Granata }
155e7687adcSEnrico Granata
ForEach(TypeCategoryMap::ForEachCallback callback)156b9c1b51eSKate Stone void DataVisualization::Categories::ForEach(
157b9c1b51eSKate Stone TypeCategoryMap::ForEachCallback callback) {
158b56d0103SEnrico Granata GetFormatManager().ForEachCategory(callback);
159b56d0103SEnrico Granata }
160b56d0103SEnrico Granata
GetCount()161b9c1b51eSKate Stone uint32_t DataVisualization::Categories::GetCount() {
1625548cb50SEnrico Granata return GetFormatManager().GetCategoriesCount();
1635548cb50SEnrico Granata }
1645548cb50SEnrico Granata
1655548cb50SEnrico Granata lldb::TypeCategoryImplSP
GetCategoryAtIndex(size_t index)166b9c1b51eSKate Stone DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
1675548cb50SEnrico Granata return GetFormatManager().GetCategoryAtIndex(index);
1685548cb50SEnrico Granata }
1695548cb50SEnrico Granata
GetSummaryFormat(ConstString type,lldb::TypeSummaryImplSP & entry)170b9c1b51eSKate Stone bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
1710e4c4821SAdrian Prantl ConstString type, lldb::TypeSummaryImplSP &entry) {
172*77ae06b8SRaphael Isemann return GetFormatManager().GetNamedSummaryContainer().GetExact(type, entry);
1735548cb50SEnrico Granata }
1745548cb50SEnrico Granata
Add(ConstString type,const lldb::TypeSummaryImplSP & entry)175b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Add(
1760e4c4821SAdrian Prantl ConstString type, const lldb::TypeSummaryImplSP &entry) {
1774d489e9fSRaphael Isemann GetFormatManager().GetNamedSummaryContainer().Add(type, entry);
1785548cb50SEnrico Granata }
1795548cb50SEnrico Granata
Delete(ConstString type)1800e4c4821SAdrian Prantl bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
181b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().Delete(type);
1825548cb50SEnrico Granata }
1835548cb50SEnrico Granata
Clear()184b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::Clear() {
185b72a501dSEnrico Granata GetFormatManager().GetNamedSummaryContainer().Clear();
1865548cb50SEnrico Granata }
1875548cb50SEnrico Granata
ForEach(std::function<bool (const TypeMatcher &,const lldb::TypeSummaryImplSP &)> callback)188b9c1b51eSKate Stone void DataVisualization::NamedSummaryFormats::ForEach(
1894d489e9fSRaphael Isemann std::function<bool(const TypeMatcher &, const lldb::TypeSummaryImplSP &)>
190b9c1b51eSKate Stone callback) {
1913de08c5fSEnrico Granata GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
1925548cb50SEnrico Granata }
1935548cb50SEnrico Granata
GetCount()194b9c1b51eSKate Stone uint32_t DataVisualization::NamedSummaryFormats::GetCount() {
195b72a501dSEnrico Granata return GetFormatManager().GetNamedSummaryContainer().GetCount();
1965548cb50SEnrico Granata }
197