1import lldb 2 3 4num_children_calls = [] 5 6 7class TestSyntheticProvider: 8 def __init__(self, valobj, dict): 9 target = valobj.GetTarget() 10 self._type = valobj.GetType() 11 data = lldb.SBData.CreateDataFromCString(lldb.eByteOrderLittle, 8, "S") 12 name = "child" if "Not" in self._type.GetName() else "[0]" 13 self._child = valobj.CreateValueFromData( 14 name, data, target.GetBasicType(lldb.eBasicTypeChar) 15 ) 16 17 def num_children(self): 18 num_children_calls.append(self._type.GetName()) 19 return 1 20 21 def get_child_at_index(self, index): 22 if index != 0: 23 return None 24 return self._child 25 26 def get_child_index(self, name): 27 if name == self._child.GetName(): 28 return 0 29 return None 30 31 32def __lldb_init_module(debugger, dict): 33 cat = debugger.CreateCategory("TestCategory") 34 cat.AddTypeSynthetic( 35 lldb.SBTypeNameSpecifier("Indexed"), 36 lldb.SBTypeSynthetic.CreateWithClassName("formatter.TestSyntheticProvider"), 37 ) 38 cat.AddTypeSynthetic( 39 lldb.SBTypeNameSpecifier("NotIndexed"), 40 lldb.SBTypeSynthetic.CreateWithClassName("formatter.TestSyntheticProvider"), 41 ) 42 cat.SetEnabled(True) 43