DataVisualization.cpp revision 353358
1//===-- DataVisualization.cpp ---------------------------------------*- C++
2//-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/DataFormatters/DataVisualization.h"
11
12
13using namespace lldb;
14using namespace lldb_private;
15
16static FormatManager &GetFormatManager() {
17  static FormatManager g_format_manager;
18  return g_format_manager;
19}
20
21void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
22
23uint32_t DataVisualization::GetCurrentRevision() {
24  return GetFormatManager().GetCurrentRevision();
25}
26
27bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
28  return GetFormatManager().ShouldPrintAsOneLiner(valobj);
29}
30
31lldb::TypeFormatImplSP
32DataVisualization::GetFormat(ValueObject &valobj,
33                             lldb::DynamicValueType use_dynamic) {
34  return GetFormatManager().GetFormat(valobj, use_dynamic);
35}
36
37lldb::TypeFormatImplSP
38DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
39  return GetFormatManager().GetFormatForType(type_sp);
40}
41
42lldb::TypeSummaryImplSP
43DataVisualization::GetSummaryFormat(ValueObject &valobj,
44                                    lldb::DynamicValueType use_dynamic) {
45  return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
46}
47
48lldb::TypeSummaryImplSP
49DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
50  return GetFormatManager().GetSummaryForType(type_sp);
51}
52
53lldb::SyntheticChildrenSP
54DataVisualization::GetSyntheticChildren(ValueObject &valobj,
55                                        lldb::DynamicValueType use_dynamic) {
56  return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
57}
58
59lldb::TypeFilterImplSP
60DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
61  return GetFormatManager().GetFilterForType(type_sp);
62}
63
64lldb::ScriptedSyntheticChildrenSP
65DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
66  return GetFormatManager().GetSyntheticForType(type_sp);
67}
68
69lldb::TypeValidatorImplSP
70DataVisualization::GetValidator(ValueObject &valobj,
71                                lldb::DynamicValueType use_dynamic) {
72  return GetFormatManager().GetValidator(valobj, use_dynamic);
73}
74
75lldb::TypeValidatorImplSP
76DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) {
77  return GetFormatManager().GetValidatorForType(type_sp);
78}
79
80bool DataVisualization::AnyMatches(
81    ConstString type_name, TypeCategoryImpl::FormatCategoryItems items,
82    bool only_enabled, const char **matching_category,
83    TypeCategoryImpl::FormatCategoryItems *matching_type) {
84  return GetFormatManager().AnyMatches(type_name, items, only_enabled,
85                                       matching_category, matching_type);
86}
87
88bool DataVisualization::Categories::GetCategory(ConstString category,
89                                                lldb::TypeCategoryImplSP &entry,
90                                                bool allow_create) {
91  entry = GetFormatManager().GetCategory(category, allow_create);
92  return (entry.get() != nullptr);
93}
94
95bool DataVisualization::Categories::GetCategory(
96    lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) {
97  if (LanguageCategory *lang_category =
98          GetFormatManager().GetCategoryForLanguage(language))
99    entry = lang_category->GetCategory();
100  return (entry.get() != nullptr);
101}
102
103void DataVisualization::Categories::Add(ConstString category) {
104  GetFormatManager().GetCategory(category);
105}
106
107bool DataVisualization::Categories::Delete(ConstString category) {
108  GetFormatManager().DisableCategory(category);
109  return GetFormatManager().DeleteCategory(category);
110}
111
112void DataVisualization::Categories::Clear() {
113  GetFormatManager().ClearCategories();
114}
115
116void DataVisualization::Categories::Clear(ConstString category) {
117  GetFormatManager().GetCategory(category)->Clear(
118      eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
119}
120
121void DataVisualization::Categories::Enable(ConstString category,
122                                           TypeCategoryMap::Position pos) {
123  if (GetFormatManager().GetCategory(category)->IsEnabled())
124    GetFormatManager().DisableCategory(category);
125  GetFormatManager().EnableCategory(
126      category, pos, std::initializer_list<lldb::LanguageType>());
127}
128
129void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
130  if (LanguageCategory *lang_category =
131          GetFormatManager().GetCategoryForLanguage(lang_type))
132    lang_category->Enable();
133}
134
135void DataVisualization::Categories::Disable(ConstString category) {
136  if (GetFormatManager().GetCategory(category)->IsEnabled())
137    GetFormatManager().DisableCategory(category);
138}
139
140void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
141  if (LanguageCategory *lang_category =
142          GetFormatManager().GetCategoryForLanguage(lang_type))
143    lang_category->Disable();
144}
145
146void DataVisualization::Categories::Enable(
147    const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) {
148  if (category.get()) {
149    if (category->IsEnabled())
150      GetFormatManager().DisableCategory(category);
151    GetFormatManager().EnableCategory(category, pos);
152  }
153}
154
155void DataVisualization::Categories::Disable(
156    const lldb::TypeCategoryImplSP &category) {
157  if (category.get() && category->IsEnabled())
158    GetFormatManager().DisableCategory(category);
159}
160
161void DataVisualization::Categories::EnableStar() {
162  GetFormatManager().EnableAllCategories();
163}
164
165void DataVisualization::Categories::DisableStar() {
166  GetFormatManager().DisableAllCategories();
167}
168
169void DataVisualization::Categories::ForEach(
170    TypeCategoryMap::ForEachCallback callback) {
171  GetFormatManager().ForEachCategory(callback);
172}
173
174uint32_t DataVisualization::Categories::GetCount() {
175  return GetFormatManager().GetCategoriesCount();
176}
177
178lldb::TypeCategoryImplSP
179DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
180  return GetFormatManager().GetCategoryAtIndex(index);
181}
182
183bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
184    ConstString type, lldb::TypeSummaryImplSP &entry) {
185  return GetFormatManager().GetNamedSummaryContainer().Get(type, entry);
186}
187
188void DataVisualization::NamedSummaryFormats::Add(
189    ConstString type, const lldb::TypeSummaryImplSP &entry) {
190  GetFormatManager().GetNamedSummaryContainer().Add(
191      FormatManager::GetValidTypeName(type), entry);
192}
193
194bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
195  return GetFormatManager().GetNamedSummaryContainer().Delete(type);
196}
197
198void DataVisualization::NamedSummaryFormats::Clear() {
199  GetFormatManager().GetNamedSummaryContainer().Clear();
200}
201
202void DataVisualization::NamedSummaryFormats::ForEach(
203    std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)>
204        callback) {
205  GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
206}
207
208uint32_t DataVisualization::NamedSummaryFormats::GetCount() {
209  return GetFormatManager().GetNamedSummaryContainer().GetCount();
210}
211