Author: enrico Date: Wed Sep 16 13:28:11 2015 New Revision: 247831 URL: http://llvm.org/viewvc/llvm-project?rev=247831&view=rev Log: Move hardcoded formatters from the FormatManager to the Language plugins
Modified: lldb/trunk/include/lldb/DataFormatters/FormatClasses.h lldb/trunk/include/lldb/DataFormatters/FormatManager.h lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h lldb/trunk/include/lldb/Target/Language.h lldb/trunk/source/DataFormatters/FormatManager.cpp lldb/trunk/source/DataFormatters/LanguageCategory.cpp lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h lldb/trunk/source/Target/Language.cpp Modified: lldb/trunk/include/lldb/DataFormatters/FormatClasses.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/DataFormatters/FormatClasses.h?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/include/lldb/DataFormatters/FormatClasses.h (original) +++ lldb/trunk/include/lldb/DataFormatters/FormatClasses.h Wed Sep 16 13:28:11 2015 @@ -19,12 +19,31 @@ // Project includes #include "lldb/lldb-public.h" #include "lldb/lldb-enumerations.h" - +#include "lldb/DataFormatters/TypeFormat.h" +#include "lldb/DataFormatters/TypeSummary.h" +#include "lldb/DataFormatters/TypeSynthetic.h" +#include "lldb/DataFormatters/TypeValidator.h" #include "lldb/Symbol/CompilerType.h" #include "lldb/Symbol/Type.h" namespace lldb_private { +class HardcodedFormatters { +public: + template <typename FormatterType> + using HardcodedFormatterFinder = std::function<typename FormatterType::SharedPointer (lldb_private::ValueObject&, + lldb::DynamicValueType, + FormatManager&)>; + + template <typename FormatterType> + using HardcodedFormatterFinders = std::vector<HardcodedFormatterFinder<FormatterType>>; + + typedef HardcodedFormatterFinders<TypeFormatImpl> HardcodedFormatFinder; + typedef HardcodedFormatterFinders<TypeSummaryImpl> HardcodedSummaryFinder; + typedef HardcodedFormatterFinders<SyntheticChildren> HardcodedSyntheticFinder; + typedef HardcodedFormatterFinders<TypeValidatorImpl> HardcodedValidatorFinder; +}; + class FormattersMatchCandidate { public: Modified: lldb/trunk/include/lldb/DataFormatters/FormatManager.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/DataFormatters/FormatManager.h?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/include/lldb/DataFormatters/FormatManager.h (original) +++ lldb/trunk/include/lldb/DataFormatters/FormatManager.h Wed Sep 16 13:28:11 2015 @@ -44,14 +44,6 @@ class FormatManager : public IFormatChan typedef TypeCategoryMap::MapType::iterator CategoryMapIterator; public: - template <typename FormatterType> - using HardcodedFormatterFinder = std::function<typename FormatterType::SharedPointer (lldb_private::ValueObject&, - lldb::DynamicValueType, - FormatManager&)>; - - template <typename FormatterType> - using HardcodedFormatterFinders = std::vector<HardcodedFormatterFinder<FormatterType>>; - typedef std::map<lldb::LanguageType, LanguageCategory::UniquePointer> LanguageCategories; typedef TypeCategoryMap::CallbackType CategoryCallback; @@ -292,11 +284,6 @@ private: ConstString m_system_category_name; ConstString m_vectortypes_category_name; - HardcodedFormatterFinders<TypeFormatImpl> m_hardcoded_formats; - HardcodedFormatterFinders<TypeSummaryImpl> m_hardcoded_summaries; - HardcodedFormatterFinders<SyntheticChildren> m_hardcoded_synthetics; - HardcodedFormatterFinders<TypeValidatorImpl> m_hardcoded_validators; - lldb::TypeFormatImplSP GetHardcodedFormat (ValueObject&,lldb::DynamicValueType); @@ -325,9 +312,6 @@ private: void LoadVectorFormatters (); - - void - LoadHardcodedFormatters (); }; } // namespace lldb_private Modified: lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h (original) +++ lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h Wed Sep 16 13:28:11 2015 @@ -53,6 +53,30 @@ public: lldb::DynamicValueType dynamic, FormattersMatchVector matches, lldb::TypeValidatorImplSP& format_sp); + + bool + GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::TypeFormatImplSP& format_sp); + + bool + GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::TypeSummaryImplSP& format_sp); + + bool + GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::SyntheticChildrenSP& format_sp); + + bool + GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::TypeValidatorImplSP& format_sp); lldb::TypeCategoryImplSP GetCategory () const; @@ -63,9 +87,20 @@ public: void Disable (); + bool + IsEnabled (); + private: lldb::TypeCategoryImplSP m_category_sp; + + HardcodedFormatters::HardcodedFormatFinder m_hardcoded_formats; + HardcodedFormatters::HardcodedSummaryFinder m_hardcoded_summaries; + HardcodedFormatters::HardcodedSyntheticFinder m_hardcoded_synthetics; + HardcodedFormatters::HardcodedValidatorFinder m_hardcoded_validators; + lldb_private::FormatCache m_format_cache; + + bool m_enabled; }; } // namespace lldb_private Modified: lldb/trunk/include/lldb/Target/Language.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Language.h?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/Language.h (original) +++ lldb/trunk/include/lldb/Target/Language.h Wed Sep 16 13:28:11 2015 @@ -20,6 +20,7 @@ #include "lldb/lldb-public.h" #include "lldb/lldb-private.h" #include "lldb/Core/PluginInterface.h" +#include "lldb/DataFormatters/FormatClasses.h" #include "lldb/DataFormatters/StringPrinter.h" namespace lldb_private { @@ -42,6 +43,18 @@ public: virtual lldb::TypeCategoryImplSP GetFormatters (); + + virtual HardcodedFormatters::HardcodedFormatFinder + GetHardcodedFormats (); + + virtual HardcodedFormatters::HardcodedSummaryFinder + GetHardcodedSummaries (); + + virtual HardcodedFormatters::HardcodedSyntheticFinder + GetHardcodedSynthetics (); + + virtual HardcodedFormatters::HardcodedValidatorFinder + GetHardcodedValidators (); virtual std::vector<ConstString> GetPossibleFormattersMatches (ValueObject& valobj, lldb::DynamicValueType use_dynamic); Modified: lldb/trunk/source/DataFormatters/FormatManager.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/FormatManager.cpp?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/source/DataFormatters/FormatManager.cpp (original) +++ lldb/trunk/source/DataFormatters/FormatManager.cpp Wed Sep 16 13:28:11 2015 @@ -15,8 +15,6 @@ // Project includes #include "lldb/Core/Debugger.h" -#include "lldb/DataFormatters/CXXFunctionPointer.h" -#include "lldb/DataFormatters/VectorType.h" #include "lldb/DataFormatters/FormattersHelpers.h" #include "lldb/DataFormatters/LanguageCategory.h" #include "lldb/Target/ExecutionContext.h" @@ -686,13 +684,18 @@ lldb::TypeFormatImplSP FormatManager::GetHardcodedFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) { - for (const auto& candidate: m_hardcoded_formats) + TypeFormatImplSP retval_sp; + + for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj)) { - auto result = candidate(valobj,use_dynamic,*this); - if (result) - return result; + if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type)) + { + if (lang_category->GetHardcoded(valobj, use_dynamic, *this, retval_sp)) + break; + } } - return nullptr; + + return retval_sp; } lldb::TypeFormatImplSP @@ -766,13 +769,18 @@ lldb::TypeSummaryImplSP FormatManager::GetHardcodedSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) { - for (const auto& candidate: m_hardcoded_summaries) + TypeSummaryImplSP retval_sp; + + for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj)) { - auto result = candidate(valobj,use_dynamic,*this); - if (result) - return result; + if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type)) + { + if (lang_category->GetHardcoded(valobj, use_dynamic, *this, retval_sp)) + break; + } } - return nullptr; + + return retval_sp; } lldb::TypeSummaryImplSP @@ -847,13 +855,18 @@ lldb::SyntheticChildrenSP FormatManager::GetHardcodedSyntheticChildren (ValueObject& valobj, lldb::DynamicValueType use_dynamic) { - for (const auto& candidate: m_hardcoded_synthetics) + SyntheticChildrenSP retval_sp; + + for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj)) { - auto result = candidate(valobj,use_dynamic,*this); - if (result) - return result; + if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type)) + { + if (lang_category->GetHardcoded(valobj, use_dynamic, *this, retval_sp)) + break; + } } - return nullptr; + + return retval_sp; } lldb::SyntheticChildrenSP @@ -995,13 +1008,18 @@ lldb::TypeValidatorImplSP FormatManager::GetHardcodedValidator (ValueObject& valobj, lldb::DynamicValueType use_dynamic) { - for (const auto& candidate: m_hardcoded_validators) + TypeValidatorImplSP retval_sp; + + for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj)) { - auto result = candidate(valobj,use_dynamic,*this); - if (result) - return result; + if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type)) + { + if (lang_category->GetHardcoded(valobj, use_dynamic, *this, retval_sp)) + break; + } } - return nullptr; + + return retval_sp; } FormatManager::FormatManager() : @@ -1013,16 +1031,10 @@ FormatManager::FormatManager() : m_language_categories_mutex(Mutex::eMutexTypeRecursive), m_default_category_name(ConstString("default")), m_system_category_name(ConstString("system")), - m_vectortypes_category_name(ConstString("VectorTypes")), - m_hardcoded_formats(), - m_hardcoded_summaries(), - m_hardcoded_synthetics(), - m_hardcoded_validators() - + m_vectortypes_category_name(ConstString("VectorTypes")) { LoadSystemFormatters(); LoadVectorFormatters(); - LoadHardcodedFormatters(); EnableCategory(m_vectortypes_category_name,TypeCategoryMap::Last); EnableCategory(m_system_category_name,TypeCategoryMap::Last); @@ -1156,65 +1168,3 @@ FormatManager::LoadVectorFormatters() ConstString("vBool32"), vector_flags); } - -void -FormatManager::LoadHardcodedFormatters() -{ - { - // insert code to load formats here - } - { - // insert code to load summaries here - m_hardcoded_summaries.push_back( - [](lldb_private::ValueObject& valobj, - lldb::DynamicValueType, - FormatManager&) -> TypeSummaryImpl::SharedPointer { - static CXXFunctionSummaryFormat::SharedPointer formatter_sp(new CXXFunctionSummaryFormat(TypeSummaryImpl::Flags(), lldb_private::formatters::CXXFunctionPointerSummaryProvider, "Function pointer summary provider")); - if (valobj.GetCompilerType().IsFunctionPointerType()) - { - return formatter_sp; - } - return nullptr; - }); - m_hardcoded_summaries.push_back( - [](lldb_private::ValueObject& valobj, - lldb::DynamicValueType, - FormatManager& fmt_mgr) -> TypeSummaryImpl::SharedPointer { - static CXXFunctionSummaryFormat::SharedPointer formatter_sp(new CXXFunctionSummaryFormat(TypeSummaryImpl::Flags() - .SetCascades(true) - .SetDontShowChildren(true) - .SetHideItemNames(true) - .SetShowMembersOneLiner(true) - .SetSkipPointers(true) - .SetSkipReferences(false), - lldb_private::formatters::VectorTypeSummaryProvider, - "vector_type pointer summary provider")); - if (valobj.GetCompilerType().IsVectorType(nullptr, nullptr)) - { - if (fmt_mgr.GetCategory(fmt_mgr.m_vectortypes_category_name)->IsEnabled()) - return formatter_sp; - } - return nullptr; - }); - } - { - // insert code to load synthetics here - m_hardcoded_synthetics.push_back( - [](lldb_private::ValueObject& valobj, - lldb::DynamicValueType, - FormatManager& fmt_mgr) -> SyntheticChildren::SharedPointer { - static CXXSyntheticChildren::SharedPointer formatter_sp(new CXXSyntheticChildren(SyntheticChildren::Flags().SetCascades(true).SetSkipPointers(true).SetSkipReferences(true).SetNonCacheable(true), - "vector_type synthetic children", - lldb_private::formatters::VectorTypeSyntheticFrontEndCreator)); - if (valobj.GetCompilerType().IsVectorType(nullptr, nullptr)) - { - if (fmt_mgr.GetCategory(fmt_mgr.m_vectortypes_category_name)->IsEnabled()) - return formatter_sp; - } - return nullptr; - }); - } - { - // insert code to load validators here - } -} Modified: lldb/trunk/source/DataFormatters/LanguageCategory.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/LanguageCategory.cpp?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/source/DataFormatters/LanguageCategory.cpp (original) +++ lldb/trunk/source/DataFormatters/LanguageCategory.cpp Wed Sep 16 13:28:11 2015 @@ -26,12 +26,22 @@ using namespace lldb_private; LanguageCategory::LanguageCategory (lldb::LanguageType lang_type) : m_category_sp(), - m_format_cache() + m_hardcoded_formats(), + m_hardcoded_summaries(), + m_hardcoded_synthetics(), + m_hardcoded_validators(), + m_format_cache(), + m_enabled(false) { if (Language* language_plugin = Language::FindPlugin(lang_type)) + { m_category_sp = language_plugin->GetFormatters(); - if (m_category_sp) - m_category_sp->Enable(true, 1); + m_hardcoded_formats = language_plugin->GetHardcodedFormats(); + m_hardcoded_summaries = language_plugin->GetHardcodedSummaries(); + m_hardcoded_synthetics = language_plugin->GetHardcodedSynthetics(); + m_hardcoded_validators = language_plugin->GetHardcodedValidators(); + } + Enable(); } bool @@ -43,7 +53,7 @@ LanguageCategory::Get (ValueObject& valo if (!m_category_sp) return false; - if (!m_category_sp->IsEnabled()) + if (!IsEnabled()) return false; ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic); @@ -69,7 +79,7 @@ LanguageCategory::Get (ValueObject& valo if (!m_category_sp) return false; - if (!m_category_sp->IsEnabled()) + if (!IsEnabled()) return false; ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic); @@ -95,7 +105,7 @@ LanguageCategory::Get (ValueObject& valo if (!m_category_sp) return false; - if (!m_category_sp->IsEnabled()) + if (!IsEnabled()) return false; ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic); @@ -121,7 +131,7 @@ LanguageCategory::Get (ValueObject& valo if (!m_category_sp) return false; - if (!m_category_sp->IsEnabled()) + if (!IsEnabled()) return false; ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic); @@ -138,6 +148,98 @@ LanguageCategory::Get (ValueObject& valo return result; } +bool +LanguageCategory::GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::TypeFormatImplSP& format_sp) +{ + if (!IsEnabled()) + return false; + + ConstString type_name = FormatManager::GetTypeForCache(valobj, use_dynamic); + + for (auto& candidate : m_hardcoded_formats) + { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (type_name && (!format_sp || !format_sp->NonCacheable())) + { + m_format_cache.SetFormat(type_name, format_sp); + } + return format_sp.get() != nullptr; +} + +bool +LanguageCategory::GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::TypeSummaryImplSP& format_sp) +{ + if (!IsEnabled()) + return false; + + ConstString type_name = FormatManager::GetTypeForCache(valobj, use_dynamic); + + for (auto& candidate : m_hardcoded_summaries) + { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (type_name && (!format_sp || !format_sp->NonCacheable())) + { + m_format_cache.SetSummary(type_name, format_sp); + } + return format_sp.get() != nullptr; +} + +bool +LanguageCategory::GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::SyntheticChildrenSP& format_sp) +{ + if (!IsEnabled()) + return false; + + ConstString type_name = FormatManager::GetTypeForCache(valobj, use_dynamic); + + for (auto& candidate : m_hardcoded_synthetics) + { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (type_name && (!format_sp || !format_sp->NonCacheable())) + { + m_format_cache.SetSynthetic(type_name, format_sp); + } + return format_sp.get() != nullptr; +} + +bool +LanguageCategory::GetHardcoded (ValueObject& valobj, + lldb::DynamicValueType use_dynamic, + FormatManager& fmt_mgr, + lldb::TypeValidatorImplSP& format_sp) +{ + if (!IsEnabled()) + return false; + + ConstString type_name = FormatManager::GetTypeForCache(valobj, use_dynamic); + + for (auto& candidate : m_hardcoded_validators) + { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (type_name && (!format_sp || !format_sp->NonCacheable())) + { + m_format_cache.SetValidator(type_name, format_sp); + } + return format_sp.get() != nullptr; +} + lldb::TypeCategoryImplSP LanguageCategory::GetCategory () const { @@ -149,6 +251,7 @@ LanguageCategory::Enable () { if (m_category_sp) m_category_sp->Enable(true, TypeCategoryMap::Default); + m_enabled = true; } void @@ -156,4 +259,11 @@ LanguageCategory::Disable () { if (m_category_sp) m_category_sp->Disable(); + m_enabled = false; +} + +bool +LanguageCategory::IsEnabled () +{ + return m_enabled; } Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp (original) +++ lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp Wed Sep 16 13:28:11 2015 @@ -17,8 +17,10 @@ #include "lldb/Core/PluginManager.h" #include "lldb/Core/RegularExpression.h" #include "lldb/Core/UniqueCStringMap.h" +#include "lldb/DataFormatters/CXXFunctionPointer.h" #include "lldb/DataFormatters/DataVisualization.h" #include "lldb/DataFormatters/FormattersHelpers.h" +#include "lldb/DataFormatters/VectorType.h" #include "CxxStringTypes.h" #include "LibCxx.h" @@ -669,3 +671,74 @@ CPlusPlusLanguage::GetFormatters () return g_category; } +HardcodedFormatters::HardcodedSummaryFinder +CPlusPlusLanguage::GetHardcodedSummaries () +{ + static std::once_flag g_initialize; + static ConstString g_vectortypes("VectorTypes"); + static HardcodedFormatters::HardcodedSummaryFinder g_formatters; + + std::call_once(g_initialize, [] () -> void { + g_formatters.push_back( + [](lldb_private::ValueObject& valobj, + lldb::DynamicValueType, + FormatManager&) -> TypeSummaryImpl::SharedPointer { + static CXXFunctionSummaryFormat::SharedPointer formatter_sp(new CXXFunctionSummaryFormat(TypeSummaryImpl::Flags(), lldb_private::formatters::CXXFunctionPointerSummaryProvider, "Function pointer summary provider")); + if (valobj.GetCompilerType().IsFunctionPointerType()) + { + return formatter_sp; + } + return nullptr; + }); + g_formatters.push_back( + [](lldb_private::ValueObject& valobj, + lldb::DynamicValueType, + FormatManager& fmt_mgr) -> TypeSummaryImpl::SharedPointer { + static CXXFunctionSummaryFormat::SharedPointer formatter_sp(new CXXFunctionSummaryFormat(TypeSummaryImpl::Flags() + .SetCascades(true) + .SetDontShowChildren(true) + .SetHideItemNames(true) + .SetShowMembersOneLiner(true) + .SetSkipPointers(true) + .SetSkipReferences(false), + lldb_private::formatters::VectorTypeSummaryProvider, + "vector_type pointer summary provider")); + if (valobj.GetCompilerType().IsVectorType(nullptr, nullptr)) + { + if (fmt_mgr.GetCategory(g_vectortypes)->IsEnabled()) + return formatter_sp; + } + return nullptr; + }); + }); + + return g_formatters; +} + +HardcodedFormatters::HardcodedSyntheticFinder +CPlusPlusLanguage::GetHardcodedSynthetics () +{ + static std::once_flag g_initialize; + static ConstString g_vectortypes("VectorTypes"); + static HardcodedFormatters::HardcodedSyntheticFinder g_formatters; + + std::call_once(g_initialize, [] () -> void { + g_formatters.push_back( + [](lldb_private::ValueObject& valobj, + lldb::DynamicValueType, + FormatManager& fmt_mgr) -> SyntheticChildren::SharedPointer { + static CXXSyntheticChildren::SharedPointer formatter_sp(new CXXSyntheticChildren(SyntheticChildren::Flags().SetCascades(true).SetSkipPointers(true).SetSkipReferences(true).SetNonCacheable(true), + "vector_type synthetic children", + lldb_private::formatters::VectorTypeSyntheticFrontEndCreator)); + if (valobj.GetCompilerType().IsVectorType(nullptr, nullptr)) + { + if (fmt_mgr.GetCategory(g_vectortypes)->IsEnabled()) + return formatter_sp; + } + return nullptr; + }); + }); + + return g_formatters; +} + Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h (original) +++ lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h Wed Sep 16 13:28:11 2015 @@ -129,6 +129,12 @@ public: lldb::TypeCategoryImplSP GetFormatters () override; + HardcodedFormatters::HardcodedSummaryFinder + GetHardcodedSummaries () override; + + HardcodedFormatters::HardcodedSyntheticFinder + GetHardcodedSynthetics () override; + //------------------------------------------------------------------ // Static Functions //------------------------------------------------------------------ Modified: lldb/trunk/source/Target/Language.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Language.cpp?rev=247831&r1=247830&r2=247831&view=diff ============================================================================== --- lldb/trunk/source/Target/Language.cpp (original) +++ lldb/trunk/source/Target/Language.cpp Wed Sep 16 13:28:11 2015 @@ -95,6 +95,30 @@ Language::GetFormatters () return nullptr; } +HardcodedFormatters::HardcodedFormatFinder +Language::GetHardcodedFormats () +{ + return {}; +} + +HardcodedFormatters::HardcodedSummaryFinder +Language::GetHardcodedSummaries () +{ + return {}; +} + +HardcodedFormatters::HardcodedSyntheticFinder +Language::GetHardcodedSynthetics () +{ + return {}; +} + +HardcodedFormatters::HardcodedValidatorFinder +Language::GetHardcodedValidators () +{ + return {}; +} + std::vector<ConstString> Language::GetPossibleFormattersMatches (ValueObject& valobj, lldb::DynamicValueType use_dynamic) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits