]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/DataFormatters/DataVisualization.cpp
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / DataFormatters / DataVisualization.cpp
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
13 using namespace lldb;
14 using namespace lldb_private;
15
16 static FormatManager &GetFormatManager() {
17   static FormatManager g_format_manager;
18   return g_format_manager;
19 }
20
21 void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
22
23 uint32_t DataVisualization::GetCurrentRevision() {
24   return GetFormatManager().GetCurrentRevision();
25 }
26
27 bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
28   return GetFormatManager().ShouldPrintAsOneLiner(valobj);
29 }
30
31 lldb::TypeFormatImplSP
32 DataVisualization::GetFormat(ValueObject &valobj,
33                              lldb::DynamicValueType use_dynamic) {
34   return GetFormatManager().GetFormat(valobj, use_dynamic);
35 }
36
37 lldb::TypeFormatImplSP
38 DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
39   return GetFormatManager().GetFormatForType(type_sp);
40 }
41
42 lldb::TypeSummaryImplSP
43 DataVisualization::GetSummaryFormat(ValueObject &valobj,
44                                     lldb::DynamicValueType use_dynamic) {
45   return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
46 }
47
48 lldb::TypeSummaryImplSP
49 DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
50   return GetFormatManager().GetSummaryForType(type_sp);
51 }
52
53 lldb::SyntheticChildrenSP
54 DataVisualization::GetSyntheticChildren(ValueObject &valobj,
55                                         lldb::DynamicValueType use_dynamic) {
56   return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
57 }
58
59 lldb::TypeFilterImplSP
60 DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
61   return GetFormatManager().GetFilterForType(type_sp);
62 }
63
64 lldb::ScriptedSyntheticChildrenSP
65 DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
66   return GetFormatManager().GetSyntheticForType(type_sp);
67 }
68
69 lldb::TypeValidatorImplSP
70 DataVisualization::GetValidator(ValueObject &valobj,
71                                 lldb::DynamicValueType use_dynamic) {
72   return GetFormatManager().GetValidator(valobj, use_dynamic);
73 }
74
75 lldb::TypeValidatorImplSP
76 DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) {
77   return GetFormatManager().GetValidatorForType(type_sp);
78 }
79
80 bool 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
88 bool 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
95 bool 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
103 void DataVisualization::Categories::Add(ConstString category) {
104   GetFormatManager().GetCategory(category);
105 }
106
107 bool DataVisualization::Categories::Delete(ConstString category) {
108   GetFormatManager().DisableCategory(category);
109   return GetFormatManager().DeleteCategory(category);
110 }
111
112 void DataVisualization::Categories::Clear() {
113   GetFormatManager().ClearCategories();
114 }
115
116 void DataVisualization::Categories::Clear(ConstString category) {
117   GetFormatManager().GetCategory(category)->Clear(
118       eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
119 }
120
121 void 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
129 void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
130   if (LanguageCategory *lang_category =
131           GetFormatManager().GetCategoryForLanguage(lang_type))
132     lang_category->Enable();
133 }
134
135 void DataVisualization::Categories::Disable(ConstString category) {
136   if (GetFormatManager().GetCategory(category)->IsEnabled())
137     GetFormatManager().DisableCategory(category);
138 }
139
140 void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
141   if (LanguageCategory *lang_category =
142           GetFormatManager().GetCategoryForLanguage(lang_type))
143     lang_category->Disable();
144 }
145
146 void 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
155 void DataVisualization::Categories::Disable(
156     const lldb::TypeCategoryImplSP &category) {
157   if (category.get() && category->IsEnabled())
158     GetFormatManager().DisableCategory(category);
159 }
160
161 void DataVisualization::Categories::EnableStar() {
162   GetFormatManager().EnableAllCategories();
163 }
164
165 void DataVisualization::Categories::DisableStar() {
166   GetFormatManager().DisableAllCategories();
167 }
168
169 void DataVisualization::Categories::ForEach(
170     TypeCategoryMap::ForEachCallback callback) {
171   GetFormatManager().ForEachCategory(callback);
172 }
173
174 uint32_t DataVisualization::Categories::GetCount() {
175   return GetFormatManager().GetCategoriesCount();
176 }
177
178 lldb::TypeCategoryImplSP
179 DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
180   return GetFormatManager().GetCategoryAtIndex(index);
181 }
182
183 bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
184     ConstString type, lldb::TypeSummaryImplSP &entry) {
185   return GetFormatManager().GetNamedSummaryContainer().Get(type, entry);
186 }
187
188 void DataVisualization::NamedSummaryFormats::Add(
189     ConstString type, const lldb::TypeSummaryImplSP &entry) {
190   GetFormatManager().GetNamedSummaryContainer().Add(
191       FormatManager::GetValidTypeName(type), entry);
192 }
193
194 bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
195   return GetFormatManager().GetNamedSummaryContainer().Delete(type);
196 }
197
198 void DataVisualization::NamedSummaryFormats::Clear() {
199   GetFormatManager().GetNamedSummaryContainer().Clear();
200 }
201
202 void DataVisualization::NamedSummaryFormats::ForEach(
203     std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)>
204         callback) {
205   GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
206 }
207
208 uint32_t DataVisualization::NamedSummaryFormats::GetCount() {
209   return GetFormatManager().GetNamedSummaryContainer().GetCount();
210 }