diff options
| author | Enrico Granata <egranata@apple.com> | 2013-04-26 00:59:02 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2013-04-26 00:59:02 +0000 |
| commit | c76b97bccee90727a419724d57fb270f08dc6f5f (patch) | |
| tree | 159e6a22acaadaaff14fd42460ff52b37ca84d57 | |
| parent | d813420816e0093d8498b2ede257ee358ba0a230 (diff) | |
| download | bcm5719-llvm-c76b97bccee90727a419724d57fb270f08dc6f5f.tar.gz bcm5719-llvm-c76b97bccee90727a419724d57fb270f08dc6f5f.zip | |
Make a synthetic children provider for the ObjC Class type
llvm-svn: 180588
| -rw-r--r-- | lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h | 2 | ||||
| -rw-r--r-- | lldb/source/DataFormatters/CXXFormatterFunctions.cpp | 50 | ||||
| -rw-r--r-- | lldb/source/DataFormatters/FormatManager.cpp | 5 |
3 files changed, 57 insertions, 0 deletions
diff --git a/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h b/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h index 00f2be0ae3a..fe5d69cc7b6 100644 --- a/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h +++ b/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h @@ -81,6 +81,8 @@ namespace lldb_private { bool ObjCClassSummaryProvider (ValueObject& valobj, Stream& stream); + SyntheticChildrenFrontEnd* ObjCClassSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP); + template<bool name_entries> bool NSDictionarySummaryProvider (ValueObject& valobj, Stream& stream); diff --git a/lldb/source/DataFormatters/CXXFormatterFunctions.cpp b/lldb/source/DataFormatters/CXXFormatterFunctions.cpp index 8f3c0ef0258..69e2f6a04da 100644 --- a/lldb/source/DataFormatters/CXXFormatterFunctions.cpp +++ b/lldb/source/DataFormatters/CXXFormatterFunctions.cpp @@ -761,6 +761,56 @@ lldb_private::formatters::ObjCClassSummaryProvider (ValueObject& valobj, Stream& return true; } +class ObjCClassSyntheticChildrenFrontEnd : public SyntheticChildrenFrontEnd +{ +public: + ObjCClassSyntheticChildrenFrontEnd (lldb::ValueObjectSP valobj_sp) : + SyntheticChildrenFrontEnd(*valobj_sp.get()) + { + } + + virtual size_t + CalculateNumChildren () + { + return 0; + } + + virtual lldb::ValueObjectSP + GetChildAtIndex (size_t idx) + { + return lldb::ValueObjectSP(); + } + + virtual bool + Update() + { + return false; + } + + virtual bool + MightHaveChildren () + { + return false; + } + + virtual size_t + GetIndexOfChildWithName (const ConstString &name) + { + return UINT32_MAX; + } + + virtual + ~ObjCClassSyntheticChildrenFrontEnd () + { + } +}; + +SyntheticChildrenFrontEnd* +lldb_private::formatters::ObjCClassSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP valobj_sp) +{ + return new ObjCClassSyntheticChildrenFrontEnd(valobj_sp); +} + template<bool needs_at> bool lldb_private::formatters::NSDataSummaryProvider (ValueObject& valobj, Stream& stream) diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp index adc3a9c31c4..ab10d96ad95 100644 --- a/lldb/source/DataFormatters/FormatManager.cpp +++ b/lldb/source/DataFormatters/FormatManager.cpp @@ -770,6 +770,11 @@ FormatManager::LoadObjCFormatters() AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary provider", ConstString("SEL *"), objc_flags); AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCClassSummaryProvider, "Class summary provider", ConstString("Class"), objc_flags); + + SyntheticChildren::Flags class_synth_flags; + class_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false); + + AddCXXSynthetic(objc_category_sp, lldb_private::formatters::ObjCClassSyntheticFrontEndCreator, "Class synthetic children", ConstString("Class"), class_synth_flags); #endif // LLDB_DISABLE_PYTHON objc_flags.SetSkipPointers(false); |

