1 //===-- DataVisualization.cpp ---------------------------------------*- C++
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
8 //===----------------------------------------------------------------------===//
10 #include "lldb/DataFormatters/DataVisualization.h"
14 using namespace lldb_private;
16 static FormatManager &GetFormatManager() {
17 static FormatManager g_format_manager;
18 return g_format_manager;
21 void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
23 uint32_t DataVisualization::GetCurrentRevision() {
24 return GetFormatManager().GetCurrentRevision();
27 bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
28 return GetFormatManager().ShouldPrintAsOneLiner(valobj);
31 lldb::TypeFormatImplSP
32 DataVisualization::GetFormat(ValueObject &valobj,
33 lldb::DynamicValueType use_dynamic) {
34 return GetFormatManager().GetFormat(valobj, use_dynamic);
37 lldb::TypeFormatImplSP
38 DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
39 return GetFormatManager().GetFormatForType(type_sp);
42 lldb::TypeSummaryImplSP
43 DataVisualization::GetSummaryFormat(ValueObject &valobj,
44 lldb::DynamicValueType use_dynamic) {
45 return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
48 lldb::TypeSummaryImplSP
49 DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
50 return GetFormatManager().GetSummaryForType(type_sp);
53 lldb::SyntheticChildrenSP
54 DataVisualization::GetSyntheticChildren(ValueObject &valobj,
55 lldb::DynamicValueType use_dynamic) {
56 return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
59 lldb::TypeFilterImplSP
60 DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
61 return GetFormatManager().GetFilterForType(type_sp);
64 lldb::ScriptedSyntheticChildrenSP
65 DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
66 return GetFormatManager().GetSyntheticForType(type_sp);
69 lldb::TypeValidatorImplSP
70 DataVisualization::GetValidator(ValueObject &valobj,
71 lldb::DynamicValueType use_dynamic) {
72 return GetFormatManager().GetValidator(valobj, use_dynamic);
75 lldb::TypeValidatorImplSP
76 DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) {
77 return GetFormatManager().GetValidatorForType(type_sp);
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);
88 bool DataVisualization::Categories::GetCategory(ConstString category,
89 lldb::TypeCategoryImplSP &entry,
91 entry = GetFormatManager().GetCategory(category, allow_create);
92 return (entry.get() != nullptr);
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);
103 void DataVisualization::Categories::Add(ConstString category) {
104 GetFormatManager().GetCategory(category);
107 bool DataVisualization::Categories::Delete(ConstString category) {
108 GetFormatManager().DisableCategory(category);
109 return GetFormatManager().DeleteCategory(category);
112 void DataVisualization::Categories::Clear() {
113 GetFormatManager().ClearCategories();
116 void DataVisualization::Categories::Clear(ConstString category) {
117 GetFormatManager().GetCategory(category)->Clear(
118 eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
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>());
129 void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
130 if (LanguageCategory *lang_category =
131 GetFormatManager().GetCategoryForLanguage(lang_type))
132 lang_category->Enable();
135 void DataVisualization::Categories::Disable(ConstString category) {
136 if (GetFormatManager().GetCategory(category)->IsEnabled())
137 GetFormatManager().DisableCategory(category);
140 void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
141 if (LanguageCategory *lang_category =
142 GetFormatManager().GetCategoryForLanguage(lang_type))
143 lang_category->Disable();
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);
155 void DataVisualization::Categories::Disable(
156 const lldb::TypeCategoryImplSP &category) {
157 if (category.get() && category->IsEnabled())
158 GetFormatManager().DisableCategory(category);
161 void DataVisualization::Categories::EnableStar() {
162 GetFormatManager().EnableAllCategories();
165 void DataVisualization::Categories::DisableStar() {
166 GetFormatManager().DisableAllCategories();
169 void DataVisualization::Categories::ForEach(
170 TypeCategoryMap::ForEachCallback callback) {
171 GetFormatManager().ForEachCategory(callback);
174 uint32_t DataVisualization::Categories::GetCount() {
175 return GetFormatManager().GetCategoriesCount();
178 lldb::TypeCategoryImplSP
179 DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
180 return GetFormatManager().GetCategoryAtIndex(index);
183 bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
184 ConstString type, lldb::TypeSummaryImplSP &entry) {
185 return GetFormatManager().GetNamedSummaryContainer().Get(type, entry);
188 void DataVisualization::NamedSummaryFormats::Add(
189 ConstString type, const lldb::TypeSummaryImplSP &entry) {
190 GetFormatManager().GetNamedSummaryContainer().Add(
191 FormatManager::GetValidTypeName(type), entry);
194 bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
195 return GetFormatManager().GetNamedSummaryContainer().Delete(type);
198 void DataVisualization::NamedSummaryFormats::Clear() {
199 GetFormatManager().GetNamedSummaryContainer().Clear();
202 void DataVisualization::NamedSummaryFormats::ForEach(
203 std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)>
205 GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
208 uint32_t DataVisualization::NamedSummaryFormats::GetCount() {
209 return GetFormatManager().GetNamedSummaryContainer().GetCount();