227 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===-- DataVisualization.cpp ---------------------------------------*- C++
 | |
| //-*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #include "lldb/DataFormatters/DataVisualization.h"
 | |
| 
 | |
| // C Includes
 | |
| // C++ Includes
 | |
| // Other libraries and framework includes
 | |
| // Project includes
 | |
| 
 | |
| using namespace lldb;
 | |
| using namespace lldb_private;
 | |
| 
 | |
| static FormatManager &GetFormatManager() {
 | |
|   static FormatManager g_format_manager;
 | |
|   return g_format_manager;
 | |
| }
 | |
| 
 | |
| void DataVisualization::ForceUpdate() { GetFormatManager().Changed(); }
 | |
| 
 | |
| uint32_t DataVisualization::GetCurrentRevision() {
 | |
|   return GetFormatManager().GetCurrentRevision();
 | |
| }
 | |
| 
 | |
| bool DataVisualization::ShouldPrintAsOneLiner(ValueObject &valobj) {
 | |
|   return GetFormatManager().ShouldPrintAsOneLiner(valobj);
 | |
| }
 | |
| 
 | |
| lldb::TypeFormatImplSP
 | |
| DataVisualization::GetFormat(ValueObject &valobj,
 | |
|                              lldb::DynamicValueType use_dynamic) {
 | |
|   return GetFormatManager().GetFormat(valobj, use_dynamic);
 | |
| }
 | |
| 
 | |
| lldb::TypeFormatImplSP
 | |
| DataVisualization::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
 | |
|   return GetFormatManager().GetFormatForType(type_sp);
 | |
| }
 | |
| 
 | |
| lldb::TypeSummaryImplSP
 | |
| DataVisualization::GetSummaryFormat(ValueObject &valobj,
 | |
|                                     lldb::DynamicValueType use_dynamic) {
 | |
|   return GetFormatManager().GetSummaryFormat(valobj, use_dynamic);
 | |
| }
 | |
| 
 | |
| lldb::TypeSummaryImplSP
 | |
| DataVisualization::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
 | |
|   return GetFormatManager().GetSummaryForType(type_sp);
 | |
| }
 | |
| 
 | |
| #ifndef LLDB_DISABLE_PYTHON
 | |
| lldb::SyntheticChildrenSP
 | |
| DataVisualization::GetSyntheticChildren(ValueObject &valobj,
 | |
|                                         lldb::DynamicValueType use_dynamic) {
 | |
|   return GetFormatManager().GetSyntheticChildren(valobj, use_dynamic);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef LLDB_DISABLE_PYTHON
 | |
| lldb::SyntheticChildrenSP DataVisualization::GetSyntheticChildrenForType(
 | |
|     lldb::TypeNameSpecifierImplSP type_sp) {
 | |
|   return GetFormatManager().GetSyntheticChildrenForType(type_sp);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| lldb::TypeFilterImplSP
 | |
| DataVisualization::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
 | |
|   return GetFormatManager().GetFilterForType(type_sp);
 | |
| }
 | |
| 
 | |
| #ifndef LLDB_DISABLE_PYTHON
 | |
| lldb::ScriptedSyntheticChildrenSP
 | |
| DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
 | |
|   return GetFormatManager().GetSyntheticForType(type_sp);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| lldb::TypeValidatorImplSP
 | |
| DataVisualization::GetValidator(ValueObject &valobj,
 | |
|                                 lldb::DynamicValueType use_dynamic) {
 | |
|   return GetFormatManager().GetValidator(valobj, use_dynamic);
 | |
| }
 | |
| 
 | |
| lldb::TypeValidatorImplSP
 | |
| DataVisualization::GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp) {
 | |
|   return GetFormatManager().GetValidatorForType(type_sp);
 | |
| }
 | |
| 
 | |
| bool DataVisualization::AnyMatches(
 | |
|     ConstString type_name, TypeCategoryImpl::FormatCategoryItems items,
 | |
|     bool only_enabled, const char **matching_category,
 | |
|     TypeCategoryImpl::FormatCategoryItems *matching_type) {
 | |
|   return GetFormatManager().AnyMatches(type_name, items, only_enabled,
 | |
|                                        matching_category, matching_type);
 | |
| }
 | |
| 
 | |
| bool DataVisualization::Categories::GetCategory(const ConstString &category,
 | |
|                                                 lldb::TypeCategoryImplSP &entry,
 | |
|                                                 bool allow_create) {
 | |
|   entry = GetFormatManager().GetCategory(category, allow_create);
 | |
|   return (entry.get() != NULL);
 | |
| }
 | |
| 
 | |
| bool DataVisualization::Categories::GetCategory(
 | |
|     lldb::LanguageType language, lldb::TypeCategoryImplSP &entry) {
 | |
|   if (LanguageCategory *lang_category =
 | |
|           GetFormatManager().GetCategoryForLanguage(language))
 | |
|     entry = lang_category->GetCategory();
 | |
|   return (entry.get() != nullptr);
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Add(const ConstString &category) {
 | |
|   GetFormatManager().GetCategory(category);
 | |
| }
 | |
| 
 | |
| bool DataVisualization::Categories::Delete(const ConstString &category) {
 | |
|   GetFormatManager().DisableCategory(category);
 | |
|   return GetFormatManager().DeleteCategory(category);
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Clear() {
 | |
|   GetFormatManager().ClearCategories();
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Clear(const ConstString &category) {
 | |
|   GetFormatManager().GetCategory(category)->Clear(
 | |
|       eFormatCategoryItemSummary | eFormatCategoryItemRegexSummary);
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Enable(const ConstString &category,
 | |
|                                            TypeCategoryMap::Position pos) {
 | |
|   if (GetFormatManager().GetCategory(category)->IsEnabled())
 | |
|     GetFormatManager().DisableCategory(category);
 | |
|   GetFormatManager().EnableCategory(
 | |
|       category, pos, std::initializer_list<lldb::LanguageType>());
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
 | |
|   if (LanguageCategory *lang_category =
 | |
|           GetFormatManager().GetCategoryForLanguage(lang_type))
 | |
|     lang_category->Enable();
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Disable(const ConstString &category) {
 | |
|   if (GetFormatManager().GetCategory(category)->IsEnabled() == true)
 | |
|     GetFormatManager().DisableCategory(category);
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Disable(lldb::LanguageType lang_type) {
 | |
|   if (LanguageCategory *lang_category =
 | |
|           GetFormatManager().GetCategoryForLanguage(lang_type))
 | |
|     lang_category->Disable();
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Enable(
 | |
|     const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position pos) {
 | |
|   if (category.get()) {
 | |
|     if (category->IsEnabled())
 | |
|       GetFormatManager().DisableCategory(category);
 | |
|     GetFormatManager().EnableCategory(category, pos);
 | |
|   }
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::Disable(
 | |
|     const lldb::TypeCategoryImplSP &category) {
 | |
|   if (category.get() && category->IsEnabled() == true)
 | |
|     GetFormatManager().DisableCategory(category);
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::EnableStar() {
 | |
|   GetFormatManager().EnableAllCategories();
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::DisableStar() {
 | |
|   GetFormatManager().DisableAllCategories();
 | |
| }
 | |
| 
 | |
| void DataVisualization::Categories::ForEach(
 | |
|     TypeCategoryMap::ForEachCallback callback) {
 | |
|   GetFormatManager().ForEachCategory(callback);
 | |
| }
 | |
| 
 | |
| uint32_t DataVisualization::Categories::GetCount() {
 | |
|   return GetFormatManager().GetCategoriesCount();
 | |
| }
 | |
| 
 | |
| lldb::TypeCategoryImplSP
 | |
| DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
 | |
|   return GetFormatManager().GetCategoryAtIndex(index);
 | |
| }
 | |
| 
 | |
| bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
 | |
|     const ConstString &type, lldb::TypeSummaryImplSP &entry) {
 | |
|   return GetFormatManager().GetNamedSummaryContainer().Get(type, entry);
 | |
| }
 | |
| 
 | |
| void DataVisualization::NamedSummaryFormats::Add(
 | |
|     const ConstString &type, const lldb::TypeSummaryImplSP &entry) {
 | |
|   GetFormatManager().GetNamedSummaryContainer().Add(
 | |
|       FormatManager::GetValidTypeName(type), entry);
 | |
| }
 | |
| 
 | |
| bool DataVisualization::NamedSummaryFormats::Delete(const ConstString &type) {
 | |
|   return GetFormatManager().GetNamedSummaryContainer().Delete(type);
 | |
| }
 | |
| 
 | |
| void DataVisualization::NamedSummaryFormats::Clear() {
 | |
|   GetFormatManager().GetNamedSummaryContainer().Clear();
 | |
| }
 | |
| 
 | |
| void DataVisualization::NamedSummaryFormats::ForEach(
 | |
|     std::function<bool(ConstString, const lldb::TypeSummaryImplSP &)>
 | |
|         callback) {
 | |
|   GetFormatManager().GetNamedSummaryContainer().ForEach(callback);
 | |
| }
 | |
| 
 | |
| uint32_t DataVisualization::NamedSummaryFormats::GetCount() {
 | |
|   return GetFormatManager().GetNamedSummaryContainer().GetCount();
 | |
| }
 |