DataVisualization.cpp revision 280031
1//===-- DataVisualization.cpp ---------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/lldb-python.h"
11
12#include "lldb/DataFormatters/DataVisualization.h"
13
14// C Includes
15// C++ Includes
16// Other libraries and framework includes
17// Project includes
18
19#include "lldb/Core/Debugger.h"
20
21using namespace lldb;
22using namespace lldb_private;
23
24static FormatManager&
25GetFormatManager()
26{
27    static FormatManager g_format_manager;
28    return g_format_manager;
29}
30
31void
32DataVisualization::ForceUpdate ()
33{
34    GetFormatManager().Changed();
35}
36
37uint32_t
38DataVisualization::GetCurrentRevision ()
39{
40    return GetFormatManager().GetCurrentRevision();
41}
42
43bool
44DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj)
45{
46    return GetFormatManager().ShouldPrintAsOneLiner(valobj);
47}
48
49lldb::TypeFormatImplSP
50DataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
51{
52    return GetFormatManager().GetFormat(valobj, use_dynamic);
53}
54
55lldb::TypeFormatImplSP
56DataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp)
57{
58    return GetFormatManager().GetFormatForType(type_sp);
59}
60
61lldb::TypeSummaryImplSP
62DataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
63{
64    return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
65}
66
67lldb::TypeSummaryImplSP
68DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp)
69{
70    return GetFormatManager().GetSummaryForType(type_sp);
71}
72
73#ifndef LLDB_DISABLE_PYTHON
74lldb::SyntheticChildrenSP
75DataVisualization::GetSyntheticChildren (ValueObject& valobj,
76                                         lldb::DynamicValueType use_dynamic)
77{
78    return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
79}
80#endif
81
82#ifndef LLDB_DISABLE_PYTHON
83lldb::SyntheticChildrenSP
84DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp)
85{
86    return GetFormatManager().GetSyntheticChildrenForType(type_sp);
87}
88#endif
89
90lldb::TypeFilterImplSP
91DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp)
92{
93    return GetFormatManager().GetFilterForType(type_sp);
94}
95
96#ifndef LLDB_DISABLE_PYTHON
97lldb::ScriptedSyntheticChildrenSP
98DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp)
99{
100    return GetFormatManager().GetSyntheticForType(type_sp);
101}
102#endif
103
104lldb::TypeValidatorImplSP
105DataVisualization::GetValidator (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
106{
107    return GetFormatManager().GetValidator(valobj, use_dynamic);
108}
109
110lldb::TypeValidatorImplSP
111DataVisualization::GetValidatorForType (lldb::TypeNameSpecifierImplSP type_sp)
112{
113    return GetFormatManager().GetValidatorForType(type_sp);
114}
115
116bool
117DataVisualization::AnyMatches (ConstString type_name,
118                               TypeCategoryImpl::FormatCategoryItems items,
119                               bool only_enabled,
120                               const char** matching_category,
121                               TypeCategoryImpl::FormatCategoryItems* matching_type)
122{
123    return GetFormatManager().AnyMatches(type_name,
124                                         items,
125                                         only_enabled,
126                                         matching_category,
127                                         matching_type);
128}
129
130bool
131DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry,
132                                            bool allow_create)
133{
134    entry = GetFormatManager().GetCategory(category, allow_create);
135    return (entry.get() != NULL);
136}
137
138void
139DataVisualization::Categories::Add (const ConstString &category)
140{
141    GetFormatManager().GetCategory(category);
142}
143
144bool
145DataVisualization::Categories::Delete (const ConstString &category)
146{
147    GetFormatManager().DisableCategory(category);
148    return GetFormatManager().DeleteCategory(category);
149}
150
151void
152DataVisualization::Categories::Clear ()
153{
154    GetFormatManager().ClearCategories();
155}
156
157void
158DataVisualization::Categories::Clear (const ConstString &category)
159{
160    GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
161}
162
163void
164DataVisualization::Categories::Enable (const ConstString& category,
165                                       TypeCategoryMap::Position pos)
166{
167    if (GetFormatManager().GetCategory(category)->IsEnabled())
168        GetFormatManager().DisableCategory(category);
169    GetFormatManager().EnableCategory(category, pos);
170}
171
172void
173DataVisualization::Categories::Disable (const ConstString& category)
174{
175    if (GetFormatManager().GetCategory(category)->IsEnabled() == true)
176        GetFormatManager().DisableCategory(category);
177}
178
179void
180DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category,
181                                       TypeCategoryMap::Position pos)
182{
183    if (category.get())
184    {
185        if (category->IsEnabled())
186            GetFormatManager().DisableCategory(category);
187        GetFormatManager().EnableCategory(category, pos);
188    }
189}
190
191void
192DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category)
193{
194    if (category.get() && category->IsEnabled() == true)
195        GetFormatManager().DisableCategory(category);
196}
197
198void
199DataVisualization::Categories::EnableStar ()
200{
201    GetFormatManager().EnableAllCategories ();
202}
203
204void
205DataVisualization::Categories::DisableStar ()
206{
207    GetFormatManager().DisableAllCategories();
208}
209
210void
211DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton)
212{
213    GetFormatManager().LoopThroughCategories(callback, callback_baton);
214}
215
216uint32_t
217DataVisualization::Categories::GetCount ()
218{
219    return GetFormatManager().GetCategoriesCount();
220}
221
222lldb::TypeCategoryImplSP
223DataVisualization::Categories::GetCategoryAtIndex (size_t index)
224{
225    return GetFormatManager().GetCategoryAtIndex(index);
226}
227
228bool
229DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry)
230{
231    return GetFormatManager().GetNamedSummaryContainer().Get(type,entry);
232}
233
234void
235DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry)
236{
237    GetFormatManager().GetNamedSummaryContainer().Add(FormatManager::GetValidTypeName(type),entry);
238}
239
240bool
241DataVisualization::NamedSummaryFormats::Delete (const ConstString &type)
242{
243    return GetFormatManager().GetNamedSummaryContainer().Delete(type);
244}
245
246void
247DataVisualization::NamedSummaryFormats::Clear ()
248{
249    GetFormatManager().GetNamedSummaryContainer().Clear();
250}
251
252void
253DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton)
254{
255    GetFormatManager().GetNamedSummaryContainer().LoopThrough(callback, callback_baton);
256}
257
258uint32_t
259DataVisualization::NamedSummaryFormats::GetCount ()
260{
261    return GetFormatManager().GetNamedSummaryContainer().GetCount();
262}
263