1314564Sdim//===-- DataVisualization.cpp ---------------------------------------*- C++
2314564Sdim//-*-===//
3254721Semaste//
4353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5353358Sdim// See https://llvm.org/LICENSE.txt for license information.
6353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#include "lldb/DataFormatters/DataVisualization.h"
11254721Semaste
12254721Semaste
13254721Semasteusing namespace lldb;
14254721Semasteusing namespace lldb_private;
15254721Semaste
16314564Sdimstatic FormatManager &GetFormatManager() {
17314564Sdim  static FormatManager g_format_manager;
18314564Sdim  return g_format_manager;
19254721Semaste}
20254721Semaste
21314564Sdimvoid DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
22254721Semaste
23314564Sdimuint32_t DataVisualization::GetCurrentRevision() {
24314564Sdim  return GetFormatManager().GetCurrentRevision();
25254721Semaste}
26254721Semaste
27314564Sdimbool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
28314564Sdim  return GetFormatManager().ShouldPrintAsOneLiner(valobj);
29254721Semaste}
30254721Semaste
31254721Semastelldb::TypeFormatImplSP
32314564SdimDataVisualization::GetFormat(ValueObject &valobj,
33314564Sdim                             lldb::DynamicValueType use_dynamic) {
34314564Sdim  return GetFormatManager().GetFormat(valobj, use_dynamic);
35254721Semaste}
36254721Semaste
37254721Semastelldb::TypeFormatImplSP
38314564SdimDataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
39314564Sdim  return GetFormatManager().GetFormatForType(type_sp);
40254721Semaste}
41254721Semaste
42254721Semastelldb::TypeSummaryImplSP
43314564SdimDataVisualization::GetSummaryFormat(ValueObject &valobj,
44314564Sdim                                    lldb::DynamicValueType use_dynamic) {
45314564Sdim  return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
46254721Semaste}
47254721Semaste
48254721Semastelldb::TypeSummaryImplSP
49314564SdimDataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
50314564Sdim  return GetFormatManager().GetSummaryForType(type_sp);
51254721Semaste}
52254721Semaste
53254721Semastelldb::SyntheticChildrenSP
54314564SdimDataVisualization::GetSyntheticChildren(ValueObject &valobj,
55314564Sdim                                        lldb::DynamicValueType use_dynamic) {
56314564Sdim  return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
57254721Semaste}
58254721Semaste
59254721Semastelldb::TypeFilterImplSP
60314564SdimDataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
61314564Sdim  return GetFormatManager().GetFilterForType(type_sp);
62254721Semaste}
63254721Semaste
64254721Semastelldb::ScriptedSyntheticChildrenSP
65314564SdimDataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
66314564Sdim  return GetFormatManager().GetSyntheticForType(type_sp);
67254721Semaste}
68254721Semaste
69314564Sdimbool DataVisualization::AnyMatches(
70314564Sdim    ConstString type_name, TypeCategoryImpl::FormatCategoryItems items,
71314564Sdim    bool only_enabled, const char **matching_category,
72314564Sdim    TypeCategoryImpl::FormatCategoryItems *matching_type) {
73314564Sdim  return GetFormatManager().AnyMatches(type_name, items, only_enabled,
74314564Sdim                                       matching_category, matching_type);
75254721Semaste}
76254721Semaste
77353358Sdimbool DataVisualization::Categories::GetCategory(ConstString category,
78314564Sdim                                                lldb::TypeCategoryImplSP &entry,
79314564Sdim                                                bool allow_create) {
80314564Sdim  entry = GetFormatManager().GetCategory(category, allow_create);
81353358Sdim  return (entry.get() != nullptr);
82254721Semaste}
83254721Semaste
84314564Sdimbool DataVisualization::Categories::GetCategory(
85314564Sdim    lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) {
86314564Sdim  if (LanguageCategory *lang_category =
87314564Sdim          GetFormatManager().GetCategoryForLanguage(language))
88314564Sdim    entry = lang_category->GetCategory();
89314564Sdim  return (entry.get() != nullptr);
90296417Sdim}
91296417Sdim
92353358Sdimvoid DataVisualization::Categories::Add(ConstString category) {
93314564Sdim  GetFormatManager().GetCategory(category);
94254721Semaste}
95254721Semaste
96353358Sdimbool DataVisualization::Categories::Delete(ConstString category) {
97314564Sdim  GetFormatManager().DisableCategory(category);
98314564Sdim  return GetFormatManager().DeleteCategory(category);
99254721Semaste}
100254721Semaste
101314564Sdimvoid DataVisualization::Categories::Clear() {
102314564Sdim  GetFormatManager().ClearCategories();
103254721Semaste}
104254721Semaste
105353358Sdimvoid DataVisualization::Categories::Clear(ConstString category) {
106314564Sdim  GetFormatManager().GetCategory(category)->Clear(
107314564Sdim      eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
108254721Semaste}
109254721Semaste
110353358Sdimvoid DataVisualization::Categories::Enable(ConstString category,
111314564Sdim                                           TypeCategoryMap::Position pos) {
112314564Sdim  if (GetFormatManager().GetCategory(category)->IsEnabled())
113314564Sdim    GetFormatManager().DisableCategory(category);
114360784Sdim  GetFormatManager().EnableCategory(category, pos, {});
115254721Semaste}
116254721Semaste
117314564Sdimvoid DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
118314564Sdim  if (LanguageCategory *lang_category =
119314564Sdim          GetFormatManager().GetCategoryForLanguage(lang_type))
120314564Sdim    lang_category->Enable();
121296417Sdim}
122296417Sdim
123353358Sdimvoid DataVisualization::Categories::Disable(ConstString category) {
124344779Sdim  if (GetFormatManager().GetCategory(category)->IsEnabled())
125314564Sdim    GetFormatManager().DisableCategory(category);
126254721Semaste}
127254721Semaste
128314564Sdimvoid DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
129314564Sdim  if (LanguageCategory *lang_category =
130314564Sdim          GetFormatManager().GetCategoryForLanguage(lang_type))
131314564Sdim    lang_category->Disable();
132296417Sdim}
133296417Sdim
134314564Sdimvoid DataVisualization::Categories::Enable(
135314564Sdim    const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) {
136314564Sdim  if (category.get()) {
137314564Sdim    if (category->IsEnabled())
138314564Sdim      GetFormatManager().DisableCategory(category);
139314564Sdim    GetFormatManager().EnableCategory(category, pos);
140314564Sdim  }
141254721Semaste}
142254721Semaste
143314564Sdimvoid DataVisualization::Categories::Disable(
144314564Sdim    const lldb::TypeCategoryImplSP &category) {
145344779Sdim  if (category.get() && category->IsEnabled())
146314564Sdim    GetFormatManager().DisableCategory(category);
147254721Semaste}
148254721Semaste
149314564Sdimvoid DataVisualization::Categories::EnableStar() {
150314564Sdim  GetFormatManager().EnableAllCategories();
151280031Sdim}
152280031Sdim
153314564Sdimvoid DataVisualization::Categories::DisableStar() {
154314564Sdim  GetFormatManager().DisableAllCategories();
155280031Sdim}
156280031Sdim
157314564Sdimvoid DataVisualization::Categories::ForEach(
158314564Sdim    TypeCategoryMap::ForEachCallback callback) {
159314564Sdim  GetFormatManager().ForEachCategory(callback);
160254721Semaste}
161254721Semaste
162314564Sdimuint32_t DataVisualization::Categories::GetCount() {
163314564Sdim  return GetFormatManager().GetCategoriesCount();
164254721Semaste}
165254721Semaste
166254721Semastelldb::TypeCategoryImplSP
167314564SdimDataVisualization::Categories::GetCategoryAtIndex(size_t index) {
168314564Sdim  return GetFormatManager().GetCategoryAtIndex(index);
169254721Semaste}
170254721Semaste
171314564Sdimbool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
172353358Sdim    ConstString type, lldb::TypeSummaryImplSP &entry) {
173314564Sdim  return GetFormatManager().GetNamedSummaryContainer().Get(type, entry);
174254721Semaste}
175254721Semaste
176314564Sdimvoid DataVisualization::NamedSummaryFormats::Add(
177353358Sdim    ConstString type, const lldb::TypeSummaryImplSP &entry) {
178314564Sdim  GetFormatManager().GetNamedSummaryContainer().Add(
179314564Sdim      FormatManager::GetValidTypeName(type), entry);
180254721Semaste}
181254721Semaste
182353358Sdimbool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
183314564Sdim  return GetFormatManager().GetNamedSummaryContainer().Delete(type);
184254721Semaste}
185254721Semaste
186314564Sdimvoid DataVisualization::NamedSummaryFormats::Clear() {
187314564Sdim  GetFormatManager().GetNamedSummaryContainer().Clear();
188254721Semaste}
189254721Semaste
190314564Sdimvoid DataVisualization::NamedSummaryFormats::ForEach(
191314564Sdim    std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)>
192314564Sdim        callback) {
193314564Sdim  GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
194254721Semaste}
195254721Semaste
196314564Sdimuint32_t DataVisualization::NamedSummaryFormats::GetCount() {
197314564Sdim  return GetFormatManager().GetNamedSummaryContainer().GetCount();
198254721Semaste}
199