<rdar://problem/11338654> Fixing a bug where having a summary for a bitfield without a format specified would in certain cases crash LLDB - This has also led to refactoring the by-type accessors for the data formatter subsystem. These now belong in our internal layer, and are just invoked by the public API stratum
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@156429 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/API/SBDebugger.cpp b/source/API/SBDebugger.cpp
index 8eea87a..be5190d 100644
--- a/source/API/SBDebugger.cpp
+++ b/source/API/SBDebugger.cpp
@@ -1146,75 +1146,27 @@
SBTypeSummary
SBDebugger::GetSummaryForType (SBTypeNameSpecifier type_name)
{
- SBTypeSummary summary_chosen;
- uint32_t num_categories = GetNumCategories();
- SBTypeCategory category_sb;
- uint32_t prio_category = UINT32_MAX;
- for (uint32_t category_id = 0;
- category_id < num_categories;
- category_id++)
- {
- category_sb = GetCategoryAtIndex(category_id);
- if (category_sb.GetEnabled() == false)
- continue;
- SBTypeSummary summary_current = category_sb.GetSummaryForType(type_name);
- if (summary_current.IsValid() && (summary_chosen.IsValid() == false || (prio_category > category_sb.m_opaque_sp->GetEnabledPosition())))
- {
- prio_category = category_sb.m_opaque_sp->GetEnabledPosition();
- summary_chosen = summary_current;
- }
- }
- return summary_chosen;
+ if (type_name.IsValid() == false)
+ return SBTypeSummary();
+ return SBTypeSummary(DataVisualization::GetSummaryForType(type_name.GetSP()));
}
#endif // LLDB_DISABLE_PYTHON
SBTypeFilter
SBDebugger::GetFilterForType (SBTypeNameSpecifier type_name)
{
- SBTypeFilter filter_chosen;
- uint32_t num_categories = GetNumCategories();
- SBTypeCategory category_sb;
- uint32_t prio_category = UINT32_MAX;
- for (uint32_t category_id = 0;
- category_id < num_categories;
- category_id++)
- {
- category_sb = GetCategoryAtIndex(category_id);
- if (category_sb.GetEnabled() == false)
- continue;
- SBTypeFilter filter_current = category_sb.GetFilterForType(type_name);
- if (filter_current.IsValid() && (filter_chosen.IsValid() == false || (prio_category > category_sb.m_opaque_sp->GetEnabledPosition())))
- {
- prio_category = category_sb.m_opaque_sp->GetEnabledPosition();
- filter_chosen = filter_current;
- }
- }
- return filter_chosen;
+ if (type_name.IsValid() == false)
+ return SBTypeFilter();
+ return SBTypeFilter(DataVisualization::GetFilterForType(type_name.GetSP()));
}
#ifndef LLDB_DISABLE_PYTHON
SBTypeSynthetic
SBDebugger::GetSyntheticForType (SBTypeNameSpecifier type_name)
{
- SBTypeSynthetic synth_chosen;
- uint32_t num_categories = GetNumCategories();
- SBTypeCategory category_sb;
- uint32_t prio_category = UINT32_MAX;
- for (uint32_t category_id = 0;
- category_id < num_categories;
- category_id++)
- {
- category_sb = GetCategoryAtIndex(category_id);
- if (category_sb.GetEnabled() == false)
- continue;
- SBTypeSynthetic synth_current = category_sb.GetSyntheticForType(type_name);
- if (synth_current.IsValid() && (synth_chosen.IsValid() == false || (prio_category > category_sb.m_opaque_sp->GetEnabledPosition())))
- {
- prio_category = category_sb.m_opaque_sp->GetEnabledPosition();
- synth_chosen = synth_current;
- }
- }
- return synth_chosen;
+ if (type_name.IsValid() == false)
+ return SBTypeSynthetic();
+ return SBTypeSynthetic(DataVisualization::GetSyntheticForType(type_name.GetSP()));
}
#endif // LLDB_DISABLE_PYTHON