evgeny777 updated this revision to Diff 37339.
evgeny777 added a comment.
Looks like can be done much easier
http://reviews.llvm.org/D13657
Files:
include/lldb/API/SBTypeSummary.h
source/API/SBTypeSummary.cpp
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)
{
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)
{
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);
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits