xref: /llvm-project/lldb/test/API/tools/lldb-dap/variables/children/formatter.py (revision f38ebec7106fd541046d502be0f79a4dda1a89b0)
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