<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