DataVisualization.cpp revision 258054
155714Skris//===-- DataVisualization.cpp ---------------------------------------*- C++ -*-===//
255714Skris//
355714Skris//                     The LLVM Compiler Infrastructure
455714Skris//
555714Skris// This file is distributed under the University of Illinois Open Source
655714Skris// License. See LICENSE.TXT for details.
755714Skris//
8280304Sjkim//===----------------------------------------------------------------------===//
955714Skris
1055714Skris#include "lldb/lldb-python.h"
1155714Skris
1255714Skris#include "lldb/DataFormatters/DataVisualization.h"
1355714Skris
1455714Skris// C Includes
15280304Sjkim// C++ Includes
1655714Skris// Other libraries and framework includes
1755714Skris// Project includes
1855714Skris
1955714Skris#include "lldb/Core/Debugger.h"
2055714Skris
2155714Skrisusing namespace lldb;
22280304Sjkimusing namespace lldb_private;
2355714Skris
2455714Skrisstatic FormatManager&
2555714SkrisGetFormatManager()
2655714Skris{
2755714Skris    static FormatManager g_format_manager;
2855714Skris    return g_format_manager;
2955714Skris}
3055714Skris
3155714Skrisvoid
3255714SkrisDataVisualization::ForceUpdate ()
3355714Skris{
3455714Skris    GetFormatManager().Changed();
3555714Skris}
3655714Skris
37280304Sjkimuint32_t
3855714SkrisDataVisualization::GetCurrentRevision ()
3955714Skris{
40280304Sjkim    return GetFormatManager().GetCurrentRevision();
4155714Skris}
4255714Skris
4355714Skrisbool
4455714SkrisDataVisualization::ShouldPrintAsOneLiner (ValueObject& valobj)
4555714Skris{
4655714Skris    return GetFormatManager().ShouldPrintAsOneLiner(valobj);
4755714Skris}
4855714Skris
4955714Skrislldb::TypeFormatImplSP
5055714SkrisDataVisualization::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
5155714Skris{
52280304Sjkim    return GetFormatManager().GetFormat(valobj, use_dynamic);
5355714Skris}
5455714Skris
5555714Skrislldb::TypeFormatImplSP
5655714SkrisDataVisualization::GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp)
5755714Skris{
5855714Skris    return GetFormatManager().GetFormatForType(type_sp);
5955714Skris}
6055714Skris
6155714Skrislldb::TypeSummaryImplSP
6255714SkrisDataVisualization::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic)
6355714Skris{
64238405Sjkim    return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
6555714Skris}
6655714Skris
6755714Skrislldb::TypeSummaryImplSP
6855714SkrisDataVisualization::GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp)
6955714Skris{
7059191Skris    return GetFormatManager().GetSummaryForType(type_sp);
71280304Sjkim}
72280304Sjkim
73280304Sjkim#ifndef LLDB_DISABLE_PYTHON
74280304Sjkimlldb::SyntheticChildrenSP
75280304SjkimDataVisualization::GetSyntheticChildren (ValueObject& valobj,
7655714Skris                                         lldb::DynamicValueType use_dynamic)
77280304Sjkim{
78280304Sjkim    return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
79280304Sjkim}
80280304Sjkim#endif
81280304Sjkim
8255714Skris#ifndef LLDB_DISABLE_PYTHON
83280304Sjkimlldb::SyntheticChildrenSP
8455714SkrisDataVisualization::GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp)
85280304Sjkim{
86280304Sjkim    return GetFormatManager().GetSyntheticChildrenForType(type_sp);
87280304Sjkim}
88280304Sjkim#endif
89280304Sjkim
9055714Skrislldb::TypeFilterImplSP
91280304SjkimDataVisualization::GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp)
92280304Sjkim{
9355714Skris    return GetFormatManager().GetFilterForType(type_sp);
94280304Sjkim}
95280304Sjkim
96280304Sjkim#ifndef LLDB_DISABLE_PYTHON
97280304Sjkimlldb::ScriptedSyntheticChildrenSP
98280304SjkimDataVisualization::GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp)
99280304Sjkim{
100280304Sjkim    return GetFormatManager().GetSyntheticForType(type_sp);
10155714Skris}
102280304Sjkim#endif
103280304Sjkim
104280304Sjkimbool
105280304SjkimDataVisualization::AnyMatches (ConstString type_name,
106280304Sjkim                               TypeCategoryImpl::FormatCategoryItems items,
107280304Sjkim                               bool only_enabled,
108280304Sjkim                               const char** matching_category,
109280304Sjkim                               TypeCategoryImpl::FormatCategoryItems* matching_type)
110280304Sjkim{
11155714Skris    return GetFormatManager().AnyMatches(type_name,
11255714Skris                                         items,
113280304Sjkim                                         only_enabled,
114280304Sjkim                                         matching_category,
115280304Sjkim                                         matching_type);
116280304Sjkim}
117280304Sjkim
11855714Skrisbool
119160814SsimonDataVisualization::Categories::GetCategory (const ConstString &category, lldb::TypeCategoryImplSP &entry,
120280304Sjkim                                            bool allow_create)
121280304Sjkim{
122280304Sjkim    entry = GetFormatManager().GetCategory(category, allow_create);
123160814Ssimon    return (entry.get() != NULL);
124280304Sjkim}
125280304Sjkim
126280304Sjkimvoid
127280304SjkimDataVisualization::Categories::Add (const ConstString &category)
128280304Sjkim{
129280304Sjkim    GetFormatManager().GetCategory(category);
130280304Sjkim}
131280304Sjkim
132280304Sjkimbool
133280304SjkimDataVisualization::Categories::Delete (const ConstString &category)
134280304Sjkim{
135280304Sjkim    GetFormatManager().DisableCategory(category);
136280304Sjkim    return GetFormatManager().DeleteCategory(category);
137160814Ssimon}
138280304Sjkim
139280304Sjkimvoid
140280304SjkimDataVisualization::Categories::Clear ()
141280304Sjkim{
142160814Ssimon    GetFormatManager().ClearCategories();
143160814Ssimon}
144280304Sjkim
145280304Sjkimvoid
146280304SjkimDataVisualization::Categories::Clear (const ConstString &category)
147280304Sjkim{
148280304Sjkim    GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
149280304Sjkim}
150160814Ssimon
151280304Sjkimvoid
152280304SjkimDataVisualization::Categories::Enable (const ConstString& category,
153160814Ssimon                                       TypeCategoryMap::Position pos)
154280304Sjkim{
155280304Sjkim    if (GetFormatManager().GetCategory(category)->IsEnabled())
156280304Sjkim        GetFormatManager().DisableCategory(category);
157160814Ssimon    GetFormatManager().EnableCategory(category, pos);
158280304Sjkim}
159280304Sjkim
16059191Skrisvoid
16159191SkrisDataVisualization::Categories::Disable (const ConstString& category)
16259191Skris{
16359191Skris    if (GetFormatManager().GetCategory(category)->IsEnabled() == true)
164280304Sjkim        GetFormatManager().DisableCategory(category);
16559191Skris}
16659191Skris
16759191Skrisvoid
16859191SkrisDataVisualization::Categories::Enable (const lldb::TypeCategoryImplSP& category,
16959191Skris                                       TypeCategoryMap::Position pos)
170280304Sjkim{
171280304Sjkim    if (category.get())
172280304Sjkim    {
173280304Sjkim        if (category->IsEnabled())
174280304Sjkim            GetFormatManager().DisableCategory(category);
175280304Sjkim        GetFormatManager().EnableCategory(category, pos);
176280304Sjkim    }
177280304Sjkim}
17859191Skris
17959191Skrisvoid
18059191SkrisDataVisualization::Categories::Disable (const lldb::TypeCategoryImplSP& category)
18159191Skris{
182280304Sjkim    if (category.get() && category->IsEnabled() == true)
18359191Skris        GetFormatManager().DisableCategory(category);
184280304Sjkim}
18559191Skris
18659191Skrisvoid
187280304SjkimDataVisualization::Categories::LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton)
18859191Skris{
18959191Skris    GetFormatManager().LoopThroughCategories(callback, callback_baton);
19059191Skris}
191280304Sjkim
192280304Sjkimuint32_t
193280304SjkimDataVisualization::Categories::GetCount ()
194280304Sjkim{
195280304Sjkim    return GetFormatManager().GetCategoriesCount();
196142425Snectar}
197280304Sjkim
198280304Sjkimlldb::TypeCategoryImplSP
199280304SjkimDataVisualization::Categories::GetCategoryAtIndex (size_t index)
200280304Sjkim{
201280304Sjkim    return GetFormatManager().GetCategoryAtIndex(index);
202280304Sjkim}
203280304Sjkim
204280304Sjkimbool
205280304SjkimDataVisualization::NamedSummaryFormats::GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry)
206280304Sjkim{
207280304Sjkim    return GetFormatManager().GetNamedSummaryNavigator().Get(type,entry);
208280304Sjkim}
209280304Sjkim
210280304Sjkimvoid
211280304SjkimDataVisualization::NamedSummaryFormats::Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry)
212280304Sjkim{
213280304Sjkim    GetFormatManager().GetNamedSummaryNavigator().Add(FormatManager::GetValidTypeName(type),entry);
214280304Sjkim}
215280304Sjkim
216160814Ssimonbool
21759191SkrisDataVisualization::NamedSummaryFormats::Delete (const ConstString &type)
218280304Sjkim{
219280304Sjkim    return GetFormatManager().GetNamedSummaryNavigator().Delete(type);
22059191Skris}
22159191Skris
22259191Skrisvoid
22359191SkrisDataVisualization::NamedSummaryFormats::Clear ()
224280304Sjkim{
22559191Skris    GetFormatManager().GetNamedSummaryNavigator().Clear();
226280304Sjkim}
227280304Sjkim
228280304Sjkimvoid
229280304SjkimDataVisualization::NamedSummaryFormats::LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton)
23059191Skris{
231280304Sjkim    GetFormatManager().GetNamedSummaryNavigator().LoopThrough(callback, callback_baton);
232280304Sjkim}
233280304Sjkim
234280304Sjkimuint32_t
235280304SjkimDataVisualization::NamedSummaryFormats::GetCount ()
236280304Sjkim{
237280304Sjkim    return GetFormatManager().GetNamedSummaryNavigator().GetCount();
238280304Sjkim}
239280304Sjkim