xref: /openbsd-src/gnu/llvm/lldb/source/DataFormatters/DataVisualization.cpp (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
1dda28197Spatrick //===-- DataVisualization.cpp ---------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick #include "lldb/DataFormatters/DataVisualization.h"
10061da546Spatrick 
11061da546Spatrick 
12061da546Spatrick using namespace lldb;
13061da546Spatrick using namespace lldb_private;
14061da546Spatrick 
15061da546Spatrick static FormatManager &GetFormatManager() {
16061da546Spatrick   static FormatManager g_format_manager;
17061da546Spatrick   return g_format_manager;
18061da546Spatrick }
19061da546Spatrick 
20061da546Spatrick void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
21061da546Spatrick 
22061da546Spatrick uint32_t DataVisualization::GetCurrentRevision() {
23061da546Spatrick   return GetFormatManager().GetCurrentRevision();
24061da546Spatrick }
25061da546Spatrick 
26061da546Spatrick bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
27061da546Spatrick   return GetFormatManager().ShouldPrintAsOneLiner(valobj);
28061da546Spatrick }
29061da546Spatrick 
30061da546Spatrick lldb::TypeFormatImplSP
31061da546Spatrick DataVisualization::GetFormat(ValueObject &valobj,
32061da546Spatrick                              lldb::DynamicValueType use_dynamic) {
33061da546Spatrick   return GetFormatManager().GetFormat(valobj, use_dynamic);
34061da546Spatrick }
35061da546Spatrick 
36061da546Spatrick lldb::TypeFormatImplSP
37061da546Spatrick DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
38061da546Spatrick   return GetFormatManager().GetFormatForType(type_sp);
39061da546Spatrick }
40061da546Spatrick 
41061da546Spatrick lldb::TypeSummaryImplSP
42061da546Spatrick DataVisualization::GetSummaryFormat(ValueObject &valobj,
43061da546Spatrick                                     lldb::DynamicValueType use_dynamic) {
44061da546Spatrick   return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
45061da546Spatrick }
46061da546Spatrick 
47061da546Spatrick lldb::TypeSummaryImplSP
48061da546Spatrick DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
49061da546Spatrick   return GetFormatManager().GetSummaryForType(type_sp);
50061da546Spatrick }
51061da546Spatrick 
52061da546Spatrick lldb::SyntheticChildrenSP
53061da546Spatrick DataVisualization::GetSyntheticChildren(ValueObject &valobj,
54061da546Spatrick                                         lldb::DynamicValueType use_dynamic) {
55061da546Spatrick   return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
56061da546Spatrick }
57061da546Spatrick 
58061da546Spatrick lldb::TypeFilterImplSP
59061da546Spatrick DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
60061da546Spatrick   return GetFormatManager().GetFilterForType(type_sp);
61061da546Spatrick }
62061da546Spatrick 
63061da546Spatrick lldb::ScriptedSyntheticChildrenSP
64061da546Spatrick DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
65061da546Spatrick   return GetFormatManager().GetSyntheticForType(type_sp);
66061da546Spatrick }
67061da546Spatrick 
68061da546Spatrick bool DataVisualization::AnyMatches(
69061da546Spatrick     ConstString type_name, TypeCategoryImpl::FormatCategoryItems items,
70061da546Spatrick     bool only_enabled, const char **matching_category,
71061da546Spatrick     TypeCategoryImpl::FormatCategoryItems *matching_type) {
72061da546Spatrick   return GetFormatManager().AnyMatches(type_name, items, only_enabled,
73061da546Spatrick                                        matching_category, matching_type);
74061da546Spatrick }
75061da546Spatrick 
76061da546Spatrick bool DataVisualization::Categories::GetCategory(ConstString category,
77061da546Spatrick                                                 lldb::TypeCategoryImplSP &entry,
78061da546Spatrick                                                 bool allow_create) {
79061da546Spatrick   entry = GetFormatManager().GetCategory(category, allow_create);
80061da546Spatrick   return (entry.get() != nullptr);
81061da546Spatrick }
82061da546Spatrick 
83061da546Spatrick bool DataVisualization::Categories::GetCategory(
84061da546Spatrick     lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) {
85061da546Spatrick   if (LanguageCategory *lang_category =
86061da546Spatrick           GetFormatManager().GetCategoryForLanguage(language))
87061da546Spatrick     entry = lang_category->GetCategory();
88061da546Spatrick   return (entry.get() != nullptr);
89061da546Spatrick }
90061da546Spatrick 
91061da546Spatrick void DataVisualization::Categories::Add(ConstString category) {
92061da546Spatrick   GetFormatManager().GetCategory(category);
93061da546Spatrick }
94061da546Spatrick 
95061da546Spatrick bool DataVisualization::Categories::Delete(ConstString category) {
96061da546Spatrick   GetFormatManager().DisableCategory(category);
97061da546Spatrick   return GetFormatManager().DeleteCategory(category);
98061da546Spatrick }
99061da546Spatrick 
100061da546Spatrick void DataVisualization::Categories::Clear() {
101061da546Spatrick   GetFormatManager().ClearCategories();
102061da546Spatrick }
103061da546Spatrick 
104061da546Spatrick void DataVisualization::Categories::Clear(ConstString category) {
105061da546Spatrick   GetFormatManager().GetCategory(category)->Clear(
106061da546Spatrick       eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
107061da546Spatrick }
108061da546Spatrick 
109061da546Spatrick void DataVisualization::Categories::Enable(ConstString category,
110061da546Spatrick                                            TypeCategoryMap::Position pos) {
111061da546Spatrick   if (GetFormatManager().GetCategory(category)->IsEnabled())
112061da546Spatrick     GetFormatManager().DisableCategory(category);
113061da546Spatrick   GetFormatManager().EnableCategory(category, pos, {});
114061da546Spatrick }
115061da546Spatrick 
116061da546Spatrick void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
117061da546Spatrick   if (LanguageCategory *lang_category =
118061da546Spatrick           GetFormatManager().GetCategoryForLanguage(lang_type))
119061da546Spatrick     lang_category->Enable();
120061da546Spatrick }
121061da546Spatrick 
122061da546Spatrick void DataVisualization::Categories::Disable(ConstString category) {
123061da546Spatrick   if (GetFormatManager().GetCategory(category)->IsEnabled())
124061da546Spatrick     GetFormatManager().DisableCategory(category);
125061da546Spatrick }
126061da546Spatrick 
127061da546Spatrick void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
128061da546Spatrick   if (LanguageCategory *lang_category =
129061da546Spatrick           GetFormatManager().GetCategoryForLanguage(lang_type))
130061da546Spatrick     lang_category->Disable();
131061da546Spatrick }
132061da546Spatrick 
133061da546Spatrick void DataVisualization::Categories::Enable(
134061da546Spatrick     const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) {
135061da546Spatrick   if (category.get()) {
136061da546Spatrick     if (category->IsEnabled())
137061da546Spatrick       GetFormatManager().DisableCategory(category);
138061da546Spatrick     GetFormatManager().EnableCategory(category, pos);
139061da546Spatrick   }
140061da546Spatrick }
141061da546Spatrick 
142061da546Spatrick void DataVisualization::Categories::Disable(
143061da546Spatrick     const lldb::TypeCategoryImplSP &category) {
144061da546Spatrick   if (category.get() && category->IsEnabled())
145061da546Spatrick     GetFormatManager().DisableCategory(category);
146061da546Spatrick }
147061da546Spatrick 
148061da546Spatrick void DataVisualization::Categories::EnableStar() {
149061da546Spatrick   GetFormatManager().EnableAllCategories();
150061da546Spatrick }
151061da546Spatrick 
152061da546Spatrick void DataVisualization::Categories::DisableStar() {
153061da546Spatrick   GetFormatManager().DisableAllCategories();
154061da546Spatrick }
155061da546Spatrick 
156061da546Spatrick void DataVisualization::Categories::ForEach(
157061da546Spatrick     TypeCategoryMap::ForEachCallback callback) {
158061da546Spatrick   GetFormatManager().ForEachCategory(callback);
159061da546Spatrick }
160061da546Spatrick 
161061da546Spatrick uint32_t DataVisualization::Categories::GetCount() {
162061da546Spatrick   return GetFormatManager().GetCategoriesCount();
163061da546Spatrick }
164061da546Spatrick 
165061da546Spatrick lldb::TypeCategoryImplSP
166061da546Spatrick DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
167061da546Spatrick   return GetFormatManager().GetCategoryAtIndex(index);
168061da546Spatrick }
169061da546Spatrick 
170061da546Spatrick bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
171061da546Spatrick     ConstString type, lldb::TypeSummaryImplSP &entry) {
172*be691f3bSpatrick   return GetFormatManager().GetNamedSummaryContainer().GetExact(type, entry);
173061da546Spatrick }
174061da546Spatrick 
175061da546Spatrick void DataVisualization::NamedSummaryFormats::Add(
176061da546Spatrick     ConstString type, const lldb::TypeSummaryImplSP &entry) {
177*be691f3bSpatrick   GetFormatManager().GetNamedSummaryContainer().Add(type, entry);
178061da546Spatrick }
179061da546Spatrick 
180061da546Spatrick bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
181061da546Spatrick   return GetFormatManager().GetNamedSummaryContainer().Delete(type);
182061da546Spatrick }
183061da546Spatrick 
184061da546Spatrick void DataVisualization::NamedSummaryFormats::Clear() {
185061da546Spatrick   GetFormatManager().GetNamedSummaryContainer().Clear();
186061da546Spatrick }
187061da546Spatrick 
188061da546Spatrick void DataVisualization::NamedSummaryFormats::ForEach(
189*be691f3bSpatrick     std::function<bool(const TypeMatcher &, const lldb::TypeSummaryImplSP &)>
190061da546Spatrick         callback) {
191061da546Spatrick   GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
192061da546Spatrick }
193061da546Spatrick 
194061da546Spatrick uint32_t DataVisualization::NamedSummaryFormats::GetCount() {
195061da546Spatrick   return GetFormatManager().GetNamedSummaryContainer().GetCount();
196061da546Spatrick }
197