diff options
author | Enrico Granata <egranata@apple.com> | 2012-02-23 23:10:03 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2012-02-23 23:10:03 +0000 |
commit | d3d444f81144d95501b2db82cf7f5f69385a8ab2 (patch) | |
tree | 1782091ecbc6673e640525248d8123ba376cb816 /lldb/source/Core/FormatManager.cpp | |
parent | 8195ad7b87aac00125490c1968d8054dac83a599 (diff) | |
download | bcm5719-llvm-d3d444f81144d95501b2db82cf7f5f69385a8ab2.tar.gz bcm5719-llvm-d3d444f81144d95501b2db82cf7f5f69385a8ab2.zip |
This patch provides a set of formatters for most of the commonly used Cocoa classes.
The formatter for NSString is an improved version of the one previously shipped as an example, the others are new in design and implementation.
A more robust and OO-compliant Objective-C runtime wrapper is provided for runtime versions 1 and 2 on 32 and 64 bit.
The formatters are contained in a category named "AppKit", which is not enabled at startup.
llvm-svn: 151299
Diffstat (limited to 'lldb/source/Core/FormatManager.cpp')
-rw-r--r-- | lldb/source/Core/FormatManager.cpp | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/lldb/source/Core/FormatManager.cpp b/lldb/source/Core/FormatManager.cpp index df2a81243b2..9552f7f5656 100644 --- a/lldb/source/Core/FormatManager.cpp +++ b/lldb/source/Core/FormatManager.cpp @@ -584,7 +584,8 @@ FormatManager::FormatManager() : m_corefoundation_category_name(ConstString("CoreFoundation")), m_coregraphics_category_name(ConstString("CoreGraphics")), m_coreservices_category_name(ConstString("CoreServices")), - m_vectortypes_category_name(ConstString("VectorTypes")) + m_vectortypes_category_name(ConstString("VectorTypes")), + m_appkit_category_name(ConstString("AppKit")) { LoadSystemFormatters(); @@ -595,6 +596,7 @@ FormatManager::FormatManager() : EnableCategory(m_objc_category_name,CategoryMap::Last); //EnableCategory(m_corefoundation_category_name,CategoryMap::Last); + //EnableCategory(m_appkit_category_name,CategoryMap::Last); //EnableCategory(m_coreservices_category_name,CategoryMap::Last); //EnableCategory(m_coregraphics_category_name,CategoryMap::Last); EnableCategory(m_gnu_cpp_category_name,CategoryMap::Last); @@ -686,6 +688,24 @@ AddSummary(TypeCategoryImpl::SharedPointer category_sp, summary_sp); } +static void +AddScriptSummary(TypeCategoryImpl::SharedPointer category_sp, + const char* funct_name, + ConstString type_name, + TypeSummaryImpl::Flags flags) +{ + + std::string code(" "); + code.append(funct_name).append("(valobj,dict)"); + + lldb::TypeSummaryImplSP summary_sp(new ScriptSummaryFormat(flags, + funct_name, + code.c_str())); + category_sp->GetSummaryNavigator()->Add(type_name, + summary_sp); +} + + #ifndef LLDB_DISABLE_PYTHON void FormatManager::LoadObjCFormatters() @@ -784,6 +804,56 @@ FormatManager::LoadObjCFormatters() ConstString("HIRect"), objc_flags); + TypeCategoryImpl::SharedPointer appkit_category_sp = GetCategory(m_appkit_category_name); + + TypeSummaryImpl::Flags appkit_flags; + appkit_flags.SetCascades(true) + .SetSkipPointers(false) + .SetSkipReferences(false) + .SetDontShowChildren(true) + .SetDontShowValue(false) + .SetShowMembersOneLiner(false) + .SetHideItemNames(false); + + AddScriptSummary(appkit_category_sp, "CFArray.CFArray_SummaryProvider", ConstString("NSArray"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFArray.CFArray_SummaryProvider", ConstString("CFArrayRef"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFArray.CFArray_SummaryProvider", ConstString("CFMutableArrayRef"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "CFBag.CFBag_SummaryProvider", ConstString("CFBagRef"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFBag.CFBag_SummaryProvider", ConstString("CFMutableBagRef"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "CFBinaryHeap.CFBinaryHeap_SummaryProvider", ConstString("CFBinaryHeapRef"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "CFDictionary.CFDictionary_SummaryProvider", ConstString("NSDictionary"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFDictionary.CFDictionary_SummaryProvider2", ConstString("CFDictionaryRef"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFDictionary.CFDictionary_SummaryProvider2", ConstString("CFMutableDictionaryRef"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "CFString.CFString_SummaryProvider", ConstString("NSString"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFString.CFString_SummaryProvider", ConstString("CFStringRef"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFString.CFString_SummaryProvider", ConstString("CFMutableStringRef"), appkit_flags); + AddScriptSummary(appkit_category_sp, "CFString.CFAttributedString_SummaryProvider", ConstString("NSAttributedString"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSBundle.NSBundle_SummaryProvider", ConstString("NSBundle"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSData.NSData_SummaryProvider", ConstString("NSData"), appkit_flags); + AddScriptSummary(appkit_category_sp, "NSData.NSData_SummaryProvider", ConstString("CFDataRef"), appkit_flags); + AddScriptSummary(appkit_category_sp, "NSData.NSData_SummaryProvider", ConstString("CFMutableDataRef"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSException.NSException_SummaryProvider", ConstString("NSException"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSMachPort.NSMachPort_SummaryProvider", ConstString("NSMachPort"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSNotification.NSNotification_SummaryProvider", ConstString("NSNotification"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSNumber.NSNumber_SummaryProvider", ConstString("NSNumber"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSSet.NSSet_SummaryProvider", ConstString("NSSet"), appkit_flags); + AddScriptSummary(appkit_category_sp, "NSSet.NSSet_SummaryProvider2", ConstString("CFSetRef"), appkit_flags); + AddScriptSummary(appkit_category_sp, "NSSet.NSSet_SummaryProvider2", ConstString("CFMutableSetRef"), appkit_flags); + + AddScriptSummary(appkit_category_sp, "NSURL.NSURL_SummaryProvider", ConstString("NSURL"), appkit_flags); + AddScriptSummary(appkit_category_sp, "NSURL.NSURL_SummaryProvider", ConstString("CFURLRef"), appkit_flags); + TypeCategoryImpl::SharedPointer vectors_category_sp = GetCategory(m_vectortypes_category_name); TypeSummaryImpl::Flags vector_flags; |