diff options
| -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);  | 

