| 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) |