Index: include/lldb/API/SBTypeSummary.h =================================================================== --- include/lldb/API/SBTypeSummary.h +++ include/lldb/API/SBTypeSummary.h @@ -69,6 +69,8 @@ class SBTypeSummary { public: + // Native function summary formatter callback + typedef bool (*FormatCallback) (SBValue, SBTypeSummaryOptions, SBStream&); SBTypeSummary(); @@ -83,6 +85,9 @@ static SBTypeSummary CreateWithScriptCode (const char* data, uint32_t options = 0); // see lldb::eTypeOption values + static SBTypeSummary + CreateWithCallback (FormatCallback cb, + uint32_t options = 0); SBTypeSummary (const lldb::SBTypeSummary &rhs); Index: source/API/SBTypeSummary.cpp =================================================================== --- source/API/SBTypeSummary.cpp +++ source/API/SBTypeSummary.cpp @@ -146,6 +146,25 @@ return SBTypeSummary(TypeSummaryImplSP(new ScriptSummaryFormat(options, "", data))); } +SBTypeSummary +SBTypeSummary::CreateWithCallback (FormatCallback cb, uint32_t options) +{ + return SBTypeSummary( + TypeSummaryImplSP( + new CXXFunctionSummaryFormat(options, + [cb] (ValueObject& valobj, Stream& stm, const TypeSummaryOptions& opt) -> bool { + SBStream stream; + if (!cb(valobj.GetSP(), &opt, stream)) + return false; + stm.Write(stream.GetData(), stream.GetSize()); + return true; + }, + "SBTypeSummary formatter callbacxk" + ) + ) + ); +} + SBTypeSummary::SBTypeSummary (const lldb::SBTypeSummary &rhs) : m_opaque_sp(rhs.m_opaque_sp) {