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