import lldb
def foo_SummaryProvider(valobj, dict):
a = valobj.GetChildMemberWithName("a")
a_ptr = valobj.GetChildMemberWithName("a_ptr")
bar = valobj.GetChildMemberWithName("b")
i = bar.GetChildMemberWithName("i")
i_ptr = bar.GetChildMemberWithName("i_ptr")
b_ref = bar.GetChildMemberWithName("b_ref")
b_ref_ptr = b_ref.AddressOf()
b_ref = b_ref_ptr.Dereference()
h = b_ref.GetChildMemberWithName("h")
k = b_ref.GetChildMemberWithName("k")
return (
"a = "
+ str(a.GetValueAsUnsigned(0))
+ ", a_ptr = "
+ str(a_ptr.GetValueAsUnsigned(0))
+ " -> "
+ str(a_ptr.Dereference().GetValueAsUnsigned(0))
+ ", i = "
+ str(i.GetValueAsUnsigned(0))
+ ", i_ptr = "
+ str(i_ptr.GetValueAsUnsigned(0))
+ " -> "
+ str(i_ptr.Dereference().GetValueAsUnsigned(0))
+ ", b_ref = "
+ str(b_ref.GetValueAsUnsigned(0))
+ ", h = "
+ str(h.GetValueAsUnsigned(0))
+ " , k = "
+ str(k.GetValueAsUnsigned(0))
)
def foo_SummaryProvider3(valobj, dict, options):
if not isinstance(options, lldb.SBTypeSummaryOptions):
raise Exception()
return foo_SummaryProvider(valobj, dict) + ", WITH_OPTS"