43 lines · python
1import lldb2 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 120 21 def get_child_at_index(self, index):22 if index != 0:23 return None24 return self._child25 26 def get_child_index(self, name):27 if name == self._child.GetName():28 return 029 return None30 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