blob: 48d3517750aac0ea510320016e15597df6a9a950 [file] [log] [blame]
Enrico Granata0a976142011-08-22 22:03:47 +00001//===-- 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
Daniel Malea93a64302012-12-05 00:20:57 +000010#include "lldb/lldb-python.h"
11
Enrico Granata5548cb52013-01-28 23:47:25 +000012#include "lldb/DataFormatters/DataVisualization.h"
Enrico Granata0a976142011-08-22 22:03:47 +000013
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
Enrico Granata4b49acc2011-08-22 23:45:15 +000032DataVisualization::ForceUpdate ()
Enrico Granata0a976142011-08-22 22:03:47 +000033{
34 GetFormatManager().Changed();
35}
36
37uint32_t
38DataVisualization::GetCurrentRevision ()
39{
40 return GetFormatManager().GetCurrentRevision();
41}
42
Enrico Granataa29cb0b2013-10-04 23:14:13 +000043bool
44DataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj)
45{
46 return GetFormatManager().ShouldPrintAsOneLiner(valobj);
47}
48
Enrico Granata061858c2012-02-15 02:34:21 +000049lldb::TypeFormatImplSP
Enrico Granata852cc952013-10-08 19:03:22 +000050DataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
Enrico Granata0a976142011-08-22 22:03:47 +000051{
Enrico Granata852cc952013-10-08 19:03:22 +000052 return GetFormatManager().GetFormat(valobj, use_dynamic);
Enrico Granata0a976142011-08-22 22:03:47 +000053}
54
Enrico Granata061858c2012-02-15 02:34:21 +000055lldb::TypeFormatImplSP
Enrico Granata852cc952013-10-08 19:03:22 +000056DataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp)
Enrico Granata061858c2012-02-15 02:34:21 +000057{
Enrico Granata852cc952013-10-08 19:03:22 +000058 return GetFormatManager().GetFormatForType(type_sp);
Enrico Granata061858c2012-02-15 02:34:21 +000059}
60
61lldb::TypeSummaryImplSP
Enrico Granata852cc952013-10-08 19:03:22 +000062DataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
Enrico Granata0a976142011-08-22 22:03:47 +000063{
Enrico Granata855cd902011-09-06 22:59:55 +000064 return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
Enrico Granata0a976142011-08-22 22:03:47 +000065}
Enrico Granata855cd902011-09-06 22:59:55 +000066
Enrico Granataa777dc22012-05-08 21:49:57 +000067lldb::TypeSummaryImplSP
68DataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp)
69{
70 return GetFormatManager().GetSummaryForType(type_sp);
71}
72
Jason Molenda7a9a72b2012-05-16 00:38:08 +000073#ifndef LLDB_DISABLE_PYTHON
Enrico Granata855cd902011-09-06 22:59:55 +000074lldb::SyntheticChildrenSP
Enrico Granata4b49acc2011-08-22 23:45:15 +000075DataVisualization::GetSyntheticChildren (ValueObject& valobj,
Enrico Granata855cd902011-09-06 22:59:55 +000076 lldb::DynamicValueType use_dynamic)
Enrico Granata0a976142011-08-22 22:03:47 +000077{
Enrico Granata855cd902011-09-06 22:59:55 +000078 return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
Enrico Granata0a976142011-08-22 22:03:47 +000079}
Jason Molenda7a9a72b2012-05-16 00:38:08 +000080#endif
Enrico Granata0a976142011-08-22 22:03:47 +000081
Jason Molenda7a9a72b2012-05-16 00:38:08 +000082#ifndef LLDB_DISABLE_PYTHON
Enrico Granataa777dc22012-05-08 21:49:57 +000083lldb::SyntheticChildrenSP
84DataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp)
85{
86 return GetFormatManager().GetSyntheticChildrenForType(type_sp);
87}
Jason Molenda7a9a72b2012-05-16 00:38:08 +000088#endif
Enrico Granataa777dc22012-05-08 21:49:57 +000089
90lldb::TypeFilterImplSP
91DataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp)
92{
93 return GetFormatManager().GetFilterForType(type_sp);
94}
95
Jason Molenda7a9a72b2012-05-16 00:38:08 +000096#ifndef LLDB_DISABLE_PYTHON
Enrico Granata5548cb52013-01-28 23:47:25 +000097lldb::ScriptedSyntheticChildrenSP
Enrico Granataa777dc22012-05-08 21:49:57 +000098DataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp)
99{
100 return GetFormatManager().GetSyntheticForType(type_sp);
101}
Jason Molenda7a9a72b2012-05-16 00:38:08 +0000102#endif
Enrico Granataa777dc22012-05-08 21:49:57 +0000103
Enrico Granata0a976142011-08-22 22:03:47 +0000104bool
Enrico Granata4b49acc2011-08-22 23:45:15 +0000105DataVisualization::AnyMatches (ConstString type_name,
Enrico Granata061858c2012-02-15 02:34:21 +0000106 TypeCategoryImpl::FormatCategoryItems items,
Enrico Granata4b49acc2011-08-22 23:45:15 +0000107 bool only_enabled,
108 const char** matching_category,
Enrico Granata061858c2012-02-15 02:34:21 +0000109 TypeCategoryImpl::FormatCategoryItems* matching_type)
Enrico Granata0a976142011-08-22 22:03:47 +0000110{
111 return GetFormatManager().AnyMatches(type_name,
112 items,
113 only_enabled,
114 matching_category,
115 matching_type);
116}
117
118bool
Enrico Granata061858c2012-02-15 02:34:21 +0000119DataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry,
120 bool allow_create)
Enrico Granata0a976142011-08-22 22:03:47 +0000121{
Enrico Granata061858c2012-02-15 02:34:21 +0000122 entry = GetFormatManager().GetCategory(category, allow_create);
123 return (entry.get() != NULL);
Enrico Granata0a976142011-08-22 22:03:47 +0000124}
125
126void
Enrico Granata4b49acc2011-08-22 23:45:15 +0000127DataVisualization::Categories::Add (const ConstString &category)
Enrico Granata0a976142011-08-22 22:03:47 +0000128{
Enrico Granata9128ee22011-09-06 19:20:51 +0000129 GetFormatManager().GetCategory(category);
Enrico Granata0a976142011-08-22 22:03:47 +0000130}
131
132bool
Enrico Granata4b49acc2011-08-22 23:45:15 +0000133DataVisualization::Categories::Delete (const ConstString &category)
Enrico Granata0a976142011-08-22 22:03:47 +0000134{
135 GetFormatManager().DisableCategory(category);
Enrico Granata4b49acc2011-08-22 23:45:15 +0000136 return GetFormatManager().DeleteCategory(category);
Enrico Granata0a976142011-08-22 22:03:47 +0000137}
138
139void
Enrico Granata4b49acc2011-08-22 23:45:15 +0000140DataVisualization::Categories::Clear ()
Enrico Granata0a976142011-08-22 22:03:47 +0000141{
Enrico Granata4b49acc2011-08-22 23:45:15 +0000142 GetFormatManager().ClearCategories();
Enrico Granata0a976142011-08-22 22:03:47 +0000143}
144
145void
Enrico Granata061858c2012-02-15 02:34:21 +0000146DataVisualization::Categories::Clear (const ConstString &category)
Enrico Granata0a976142011-08-22 22:03:47 +0000147{
Enrico Granata9128ee22011-09-06 19:20:51 +0000148 GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
Enrico Granata0a976142011-08-22 22:03:47 +0000149}
150
151void
Enrico Granata061858c2012-02-15 02:34:21 +0000152DataVisualization::Categories::Enable (const ConstString& category,
Enrico Granata5548cb52013-01-28 23:47:25 +0000153 TypeCategoryMap::Position pos)
Enrico Granata0a976142011-08-22 22:03:47 +0000154{
Enrico Granata061858c2012-02-15 02:34:21 +0000155 if (GetFormatManager().GetCategory(category)->IsEnabled())
Enrico Granata0a976142011-08-22 22:03:47 +0000156 GetFormatManager().DisableCategory(category);
Enrico Granata061858c2012-02-15 02:34:21 +0000157 GetFormatManager().EnableCategory(category, pos);
158}
159
160void
161DataVisualization::Categories::Disable (const ConstString& category)
162{
163 if (GetFormatManager().GetCategory(category)->IsEnabled() == true)
164 GetFormatManager().DisableCategory(category);
165}
166
167void
168DataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category,
Enrico Granata5548cb52013-01-28 23:47:25 +0000169 TypeCategoryMap::Position pos)
Enrico Granata061858c2012-02-15 02:34:21 +0000170{
171 if (category.get())
172 {
173 if (category->IsEnabled())
174 GetFormatManager().DisableCategory(category);
175 GetFormatManager().EnableCategory(category, pos);
Enrico Granata0a976142011-08-22 22:03:47 +0000176 }
177}
178
179void
Enrico Granata061858c2012-02-15 02:34:21 +0000180DataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category)
Enrico Granata0a976142011-08-22 22:03:47 +0000181{
Enrico Granata061858c2012-02-15 02:34:21 +0000182 if (category.get() && category->IsEnabled() == true)
Enrico Granata0a976142011-08-22 22:03:47 +0000183 GetFormatManager().DisableCategory(category);
184}
185
186void
Enrico Granata4b49acc2011-08-22 23:45:15 +0000187DataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton)
Enrico Granata0a976142011-08-22 22:03:47 +0000188{
189 GetFormatManager().LoopThroughCategories(callback, callback_baton);
190}
191
192uint32_t
Enrico Granata4b49acc2011-08-22 23:45:15 +0000193DataVisualization::Categories::GetCount ()
Enrico Granata0a976142011-08-22 22:03:47 +0000194{
Enrico Granata4b49acc2011-08-22 23:45:15 +0000195 return GetFormatManager().GetCategoriesCount();
Enrico Granata0a976142011-08-22 22:03:47 +0000196}
197
Enrico Granata061858c2012-02-15 02:34:21 +0000198lldb::TypeCategoryImplSP
Enrico Granata5548cb52013-01-28 23:47:25 +0000199DataVisualization::Categories::GetCategoryAtIndex (size_t index)
Enrico Granata061858c2012-02-15 02:34:21 +0000200{
201 return GetFormatManager().GetCategoryAtIndex(index);
202}
203
Enrico Granata0a976142011-08-22 22:03:47 +0000204bool
Enrico Granata061858c2012-02-15 02:34:21 +0000205DataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry)
Enrico Granata0a976142011-08-22 22:03:47 +0000206{
207 return GetFormatManager().GetNamedSummaryNavigator().Get(type,entry);
208}
209
210void
Enrico Granata061858c2012-02-15 02:34:21 +0000211DataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry)
Enrico Granata0a976142011-08-22 22:03:47 +0000212{
213 GetFormatManager().GetNamedSummaryNavigator().Add(FormatManager::GetValidTypeName(type),entry);
214}
215
216bool
Enrico Granata4b49acc2011-08-22 23:45:15 +0000217DataVisualization::NamedSummaryFormats::Delete (const ConstString &type)
Enrico Granata0a976142011-08-22 22:03:47 +0000218{
219 return GetFormatManager().GetNamedSummaryNavigator().Delete(type);
220}
221
222void
Enrico Granata4b49acc2011-08-22 23:45:15 +0000223DataVisualization::NamedSummaryFormats::Clear ()
Enrico Granata0a976142011-08-22 22:03:47 +0000224{
225 GetFormatManager().GetNamedSummaryNavigator().Clear();
226}
227
228void
Enrico Granata061858c2012-02-15 02:34:21 +0000229DataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton)
Enrico Granata0a976142011-08-22 22:03:47 +0000230{
231 GetFormatManager().GetNamedSummaryNavigator().LoopThrough(callback, callback_baton);
232}
233
234uint32_t
Enrico Granata4b49acc2011-08-22 23:45:15 +0000235DataVisualization::NamedSummaryFormats::GetCount ()
Enrico Granata0a976142011-08-22 22:03:47 +0000236{
237 return GetFormatManager().GetNamedSummaryNavigator().GetCount();
Enrico Granata4b49acc2011-08-22 23:45:15 +0000238}