diff options
author | Enrico Granata <egranata@apple.com> | 2016-04-11 18:46:37 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2016-04-11 18:46:37 +0000 |
commit | c28b3e888307b64cbccb481006a9105ed85f5dab (patch) | |
tree | ba706f09883a60a0a876f7cec37f5008024ce541 /lldb/source/Plugins/Language/ObjC/NSArray.cpp | |
parent | f22325c7aa4fa4dcc54bab09e29dbc2319cc10a0 (diff) | |
download | bcm5719-llvm-c28b3e888307b64cbccb481006a9105ed85f5dab.tar.gz bcm5719-llvm-c28b3e888307b64cbccb481006a9105ed85f5dab.zip |
Add support for additional NSArray formatters
llvm-svn: 265979
Diffstat (limited to 'lldb/source/Plugins/Language/ObjC/NSArray.cpp')
-rw-r--r-- | lldb/source/Plugins/Language/ObjC/NSArray.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Language/ObjC/NSArray.cpp b/lldb/source/Plugins/Language/ObjC/NSArray.cpp index b9b4b9a20e9..7f29c190e27 100644 --- a/lldb/source/Plugins/Language/ObjC/NSArray.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSArray.cpp @@ -35,6 +35,20 @@ using namespace lldb_private::formatters; namespace lldb_private { namespace formatters { + std::map<ConstString, CXXFunctionSummaryFormat::Callback>& + NSArray_Additionals::GetAdditionalSummaries () + { + static std::map<ConstString, CXXFunctionSummaryFormat::Callback> g_map; + return g_map; + } + + std::map<ConstString, CXXSyntheticChildren::CreateFrontEndCallback>& + NSArray_Additionals::GetAdditionalSynthetics () + { + static std::map<ConstString, CXXSyntheticChildren::CreateFrontEndCallback> g_map; + return g_map; + } + class NSArrayMSyntheticFrontEnd : public SyntheticChildrenFrontEnd { public: @@ -322,7 +336,14 @@ lldb_private::formatters::NSArraySummaryProvider (ValueObject& valobj, Stream& s return false; } else - return false; + { + auto& map(NSArray_Additionals::GetAdditionalSummaries()); + auto iter = map.find(class_name), end = map.end(); + if (iter != end) + return iter->second(valobj, stream, options); + else + return false; + } std::string prefix,suffix; if (Language* language = Language::FindPlugin(options.GetLanguage())) @@ -746,7 +767,7 @@ lldb_private::formatters::NSArray1SyntheticFrontEnd::GetChildAtIndex (size_t idx return lldb::ValueObjectSP(); } -SyntheticChildrenFrontEnd* lldb_private::formatters::NSArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP valobj_sp) +SyntheticChildrenFrontEnd* lldb_private::formatters::NSArraySyntheticFrontEndCreator (CXXSyntheticChildren* synth, lldb::ValueObjectSP valobj_sp) { if (!valobj_sp) return nullptr; @@ -803,6 +824,13 @@ SyntheticChildrenFrontEnd* lldb_private::formatters::NSArraySyntheticFrontEndCre else return (new NSArrayMSyntheticFrontEnd_109(valobj_sp)); } + else + { + auto& map(NSArray_Additionals::GetAdditionalSynthetics()); + auto iter = map.find(class_name), end = map.end(); + if (iter != end) + return iter->second(synth, valobj_sp); + } return nullptr; } |