diff options
Diffstat (limited to 'source/DataFormatters/LanguageCategory.cpp')
-rw-r--r-- | source/DataFormatters/LanguageCategory.cpp | 403 |
1 files changed, 182 insertions, 221 deletions
diff --git a/source/DataFormatters/LanguageCategory.cpp b/source/DataFormatters/LanguageCategory.cpp index 261c3e6302e1..251f0c368e08 100644 --- a/source/DataFormatters/LanguageCategory.cpp +++ b/source/DataFormatters/LanguageCategory.cpp @@ -1,4 +1,5 @@ -//===-- LanguageCategory.cpp ---------------------------------------*- C++ -*-===// +//===-- LanguageCategory.cpp ---------------------------------------*- C++ +//-*-===// // // The LLVM Compiler Infrastructure // @@ -24,248 +25,208 @@ using namespace lldb; using namespace lldb_private; -LanguageCategory::LanguageCategory (lldb::LanguageType lang_type) : - m_category_sp(), - 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(); - 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(); +LanguageCategory::LanguageCategory(lldb::LanguageType lang_type) + : m_category_sp(), 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(); + 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 -LanguageCategory::Get (FormattersMatchData& match_data, - lldb::TypeFormatImplSP& format_sp) -{ - if (!m_category_sp) - return false; - - if (!IsEnabled()) - return false; - - if (match_data.GetTypeForCache()) - { - if (m_format_cache.GetFormat(match_data.GetTypeForCache(), format_sp)) - return format_sp.get() != nullptr; - } - - ValueObject& valobj(match_data.GetValueObject()); - bool result = m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetFormat(match_data.GetTypeForCache(), format_sp); - } - return result; +bool LanguageCategory::Get(FormattersMatchData &match_data, + lldb::TypeFormatImplSP &format_sp) { + if (!m_category_sp) + return false; + + if (!IsEnabled()) + return false; + + if (match_data.GetTypeForCache()) { + if (m_format_cache.GetFormat(match_data.GetTypeForCache(), format_sp)) + return format_sp.get() != nullptr; + } + + ValueObject &valobj(match_data.GetValueObject()); + bool result = + m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetFormat(match_data.GetTypeForCache(), format_sp); + } + return result; } -bool -LanguageCategory::Get (FormattersMatchData& match_data, - lldb::TypeSummaryImplSP& format_sp) -{ - if (!m_category_sp) - return false; - - if (!IsEnabled()) - return false; - - if (match_data.GetTypeForCache()) - { - if (m_format_cache.GetSummary(match_data.GetTypeForCache(), format_sp)) - return format_sp.get() != nullptr; - } - - ValueObject& valobj(match_data.GetValueObject()); - bool result = m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetSummary(match_data.GetTypeForCache(), format_sp); - } - return result; +bool LanguageCategory::Get(FormattersMatchData &match_data, + lldb::TypeSummaryImplSP &format_sp) { + if (!m_category_sp) + return false; + + if (!IsEnabled()) + return false; + + if (match_data.GetTypeForCache()) { + if (m_format_cache.GetSummary(match_data.GetTypeForCache(), format_sp)) + return format_sp.get() != nullptr; + } + + ValueObject &valobj(match_data.GetValueObject()); + bool result = + m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetSummary(match_data.GetTypeForCache(), format_sp); + } + return result; } -bool -LanguageCategory::Get (FormattersMatchData& match_data, - lldb::SyntheticChildrenSP& format_sp) -{ - if (!m_category_sp) - return false; - - if (!IsEnabled()) - return false; - - if (match_data.GetTypeForCache()) - { - if (m_format_cache.GetSynthetic(match_data.GetTypeForCache(), format_sp)) - return format_sp.get() != nullptr; - } - - ValueObject& valobj(match_data.GetValueObject()); - bool result = m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetSynthetic(match_data.GetTypeForCache(), format_sp); - } - return result; +bool LanguageCategory::Get(FormattersMatchData &match_data, + lldb::SyntheticChildrenSP &format_sp) { + if (!m_category_sp) + return false; + + if (!IsEnabled()) + return false; + + if (match_data.GetTypeForCache()) { + if (m_format_cache.GetSynthetic(match_data.GetTypeForCache(), format_sp)) + return format_sp.get() != nullptr; + } + + ValueObject &valobj(match_data.GetValueObject()); + bool result = + m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetSynthetic(match_data.GetTypeForCache(), format_sp); + } + return result; } -bool -LanguageCategory::Get (FormattersMatchData& match_data, - lldb::TypeValidatorImplSP& format_sp) -{ - if (!m_category_sp) - return false; - - if (!IsEnabled()) - return false; - - if (match_data.GetTypeForCache()) - { - if (m_format_cache.GetValidator(match_data.GetTypeForCache(), format_sp)) - return format_sp.get() != nullptr; - } - - ValueObject& valobj(match_data.GetValueObject()); - bool result = m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetValidator(match_data.GetTypeForCache(), format_sp); - } - return result; +bool LanguageCategory::Get(FormattersMatchData &match_data, + lldb::TypeValidatorImplSP &format_sp) { + if (!m_category_sp) + return false; + + if (!IsEnabled()) + return false; + + if (match_data.GetTypeForCache()) { + if (m_format_cache.GetValidator(match_data.GetTypeForCache(), format_sp)) + return format_sp.get() != nullptr; + } + + ValueObject &valobj(match_data.GetValueObject()); + bool result = + m_category_sp->Get(valobj, match_data.GetMatchesVector(), format_sp); + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetValidator(match_data.GetTypeForCache(), format_sp); + } + return result; } -bool -LanguageCategory::GetHardcoded (FormatManager& fmt_mgr, - FormattersMatchData& match_data, - lldb::TypeFormatImplSP& format_sp) -{ - if (!IsEnabled()) - return false; - - ValueObject& valobj(match_data.GetValueObject()); - lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); - - for (auto& candidate : m_hardcoded_formats) - { - if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) - break; - } - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetFormat(match_data.GetTypeForCache(), format_sp); - } - return format_sp.get() != nullptr; +bool LanguageCategory::GetHardcoded(FormatManager &fmt_mgr, + FormattersMatchData &match_data, + lldb::TypeFormatImplSP &format_sp) { + if (!IsEnabled()) + return false; + + ValueObject &valobj(match_data.GetValueObject()); + lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); + + for (auto &candidate : m_hardcoded_formats) { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetFormat(match_data.GetTypeForCache(), format_sp); + } + return format_sp.get() != nullptr; } -bool -LanguageCategory::GetHardcoded (FormatManager& fmt_mgr, - FormattersMatchData& match_data, - lldb::TypeSummaryImplSP& format_sp) -{ - if (!IsEnabled()) - return false; - - ValueObject& valobj(match_data.GetValueObject()); - lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); - - for (auto& candidate : m_hardcoded_summaries) - { - if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) - break; - } - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetSummary(match_data.GetTypeForCache(), format_sp); - } - return format_sp.get() != nullptr; +bool LanguageCategory::GetHardcoded(FormatManager &fmt_mgr, + FormattersMatchData &match_data, + lldb::TypeSummaryImplSP &format_sp) { + if (!IsEnabled()) + return false; + + ValueObject &valobj(match_data.GetValueObject()); + lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); + + for (auto &candidate : m_hardcoded_summaries) { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetSummary(match_data.GetTypeForCache(), format_sp); + } + return format_sp.get() != nullptr; } -bool -LanguageCategory::GetHardcoded (FormatManager& fmt_mgr, - FormattersMatchData& match_data, - lldb::SyntheticChildrenSP& format_sp) -{ - if (!IsEnabled()) - return false; - - ValueObject& valobj(match_data.GetValueObject()); - lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); - - for (auto& candidate : m_hardcoded_synthetics) - { - if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) - break; - } - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetSynthetic(match_data.GetTypeForCache(), format_sp); - } - return format_sp.get() != nullptr; +bool LanguageCategory::GetHardcoded(FormatManager &fmt_mgr, + FormattersMatchData &match_data, + lldb::SyntheticChildrenSP &format_sp) { + if (!IsEnabled()) + return false; + + ValueObject &valobj(match_data.GetValueObject()); + lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); + + for (auto &candidate : m_hardcoded_synthetics) { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetSynthetic(match_data.GetTypeForCache(), format_sp); + } + return format_sp.get() != nullptr; } -bool -LanguageCategory::GetHardcoded (FormatManager& fmt_mgr, - FormattersMatchData& match_data, - lldb::TypeValidatorImplSP& format_sp) -{ - if (!IsEnabled()) - return false; - - ValueObject& valobj(match_data.GetValueObject()); - lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); - - for (auto& candidate : m_hardcoded_validators) - { - if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) - break; - } - if (match_data.GetTypeForCache() && (!format_sp || !format_sp->NonCacheable())) - { - m_format_cache.SetValidator(match_data.GetTypeForCache(), format_sp); - } - return format_sp.get() != nullptr; +bool LanguageCategory::GetHardcoded(FormatManager &fmt_mgr, + FormattersMatchData &match_data, + lldb::TypeValidatorImplSP &format_sp) { + if (!IsEnabled()) + return false; + + ValueObject &valobj(match_data.GetValueObject()); + lldb::DynamicValueType use_dynamic(match_data.GetDynamicValueType()); + + for (auto &candidate : m_hardcoded_validators) { + if ((format_sp = candidate(valobj, use_dynamic, fmt_mgr))) + break; + } + if (match_data.GetTypeForCache() && + (!format_sp || !format_sp->NonCacheable())) { + m_format_cache.SetValidator(match_data.GetTypeForCache(), format_sp); + } + return format_sp.get() != nullptr; } -lldb::TypeCategoryImplSP -LanguageCategory::GetCategory () const -{ - return m_category_sp; +lldb::TypeCategoryImplSP LanguageCategory::GetCategory() const { + return m_category_sp; } -FormatCache& -LanguageCategory::GetFormatCache () -{ - return m_format_cache; -} +FormatCache &LanguageCategory::GetFormatCache() { return m_format_cache; } -void -LanguageCategory::Enable () -{ - if (m_category_sp) - m_category_sp->Enable(true, TypeCategoryMap::Default); - m_enabled = true; +void LanguageCategory::Enable() { + if (m_category_sp) + m_category_sp->Enable(true, TypeCategoryMap::Default); + m_enabled = true; } -void -LanguageCategory::Disable () -{ - if (m_category_sp) - m_category_sp->Disable(); - m_enabled = false; +void LanguageCategory::Disable() { + if (m_category_sp) + m_category_sp->Disable(); + m_enabled = false; } -bool -LanguageCategory::IsEnabled () -{ - return m_enabled; -} +bool LanguageCategory::IsEnabled() { return m_enabled; } |