import lldb num_children_calls = [] class TestSyntheticProvider: def __init__(self, valobj, dict): target = valobj.GetTarget() self._type = valobj.GetType() data = lldb.SBData.CreateDataFromCString(lldb.eByteOrderLittle, 8, "S") name = "child" if "Not" in self._type.GetName() else "[0]" self._child = valobj.CreateValueFromData( name, data, target.GetBasicType(lldb.eBasicTypeChar) ) def num_children(self): num_children_calls.append(self._type.GetName()) return 1 def get_child_at_index(self, index): if index != 0: return None return self._child def get_child_index(self, name): if name == self._child.GetName(): return 0 return None def __lldb_init_module(debugger, dict): cat = debugger.CreateCategory("TestCategory") cat.AddTypeSynthetic( lldb.SBTypeNameSpecifier("Indexed"), lldb.SBTypeSynthetic.CreateWithClassName("formatter.TestSyntheticProvider"), ) cat.AddTypeSynthetic( lldb.SBTypeNameSpecifier("NotIndexed"), lldb.SBTypeSynthetic.CreateWithClassName("formatter.TestSyntheticProvider"), ) cat.SetEnabled(True)