diff options
Diffstat (limited to 'source/DataFormatters/TypeCategoryMap.cpp')
-rw-r--r-- | source/DataFormatters/TypeCategoryMap.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/DataFormatters/TypeCategoryMap.cpp b/source/DataFormatters/TypeCategoryMap.cpp index 4b7222adbec7..621258806def 100644 --- a/source/DataFormatters/TypeCategoryMap.cpp +++ b/source/DataFormatters/TypeCategoryMap.cpp @@ -176,6 +176,32 @@ TypeCategoryMap::AnyMatches (ConstString type_name, return false; } +lldb::TypeFormatImplSP +TypeCategoryMap::GetFormat (ValueObject& valobj, + lldb::DynamicValueType use_dynamic) +{ + Mutex::Locker locker(m_map_mutex); + + uint32_t reason_why; + ActiveCategoriesIterator begin, end = m_active_categories.end(); + + Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); + + for (begin = m_active_categories.begin(); begin != end; begin++) + { + lldb::TypeCategoryImplSP category_sp = *begin; + lldb::TypeFormatImplSP current_format; + if (log) + log->Printf("\n[TypeCategoryMap::GetFormat] Trying to use category %s", category_sp->GetName()); + if (!category_sp->Get(valobj, current_format, use_dynamic, &reason_why)) + continue; + return current_format; + } + if (log) + log->Printf("[TypeCategoryMap::GetFormat] nothing found - returning empty SP"); + return lldb::TypeFormatImplSP(); +} + lldb::TypeSummaryImplSP TypeCategoryMap::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) |