1import lldb 2 3 4def derives_from_base(sbtype, internal_dict): 5 for base in sbtype.get_bases_array(): 6 if base.GetName() == "Base": 7 return True 8 return False 9 10 11class SynthProvider: 12 def __init__(self, valobj, dict): 13 self.valobj = valobj 14 15 def num_children(self): 16 return 1 17 18 def get_child_index(self, name): 19 return 0 20 21 def get_child_at_index(self, index): 22 if index == 0: 23 return self.valobj.CreateValueFromExpression("synthetic_child", "9999") 24 return None 25 26 27def register_formatters(debugger): 28 cat = debugger.CreateCategory("callback_formatters") 29 cat.AddTypeSummary( 30 lldb.SBTypeNameSpecifier( 31 "formatters_with_callback.derives_from_base", lldb.eFormatterMatchCallback 32 ), 33 lldb.SBTypeSummary.CreateWithScriptCode("return 'hello from callback summary'"), 34 ) 35 cat.AddTypeSynthetic( 36 lldb.SBTypeNameSpecifier( 37 "formatters_with_callback.derives_from_base", lldb.eFormatterMatchCallback 38 ), 39 lldb.SBTypeSynthetic.CreateWithClassName( 40 "formatters_with_callback.SynthProvider" 41 ), 42 ) 43 cat.SetEnabled(True) 44