1import lldb
2
3
4class fooSynthProvider:
5    def __init__(self, valobj, dict):
6        self.valobj = valobj
7        self.int_type = valobj.GetType().GetBasicType(lldb.eBasicTypeInt)
8
9    def num_children(self):
10        return 3
11
12    def get_child_at_index(self, index):
13        if index == 0:
14            child = self.valobj.GetChildMemberWithName("a")
15        if index == 1:
16            child = self.valobj.CreateChildAtOffset("fake_a", 1, self.int_type)
17        if index == 2:
18            child = self.valobj.GetChildMemberWithName("r")
19        return child
20
21    def get_child_index(self, name):
22        if name == "a":
23            return 0
24        if name == "fake_a":
25            return 1
26        return 2
27
28    def update(self):
29        return True
30
31
32class wrapfooSynthProvider:
33    def __init__(self, valobj, dict):
34        self.valobj = valobj
35
36    def num_children(self):
37        return 1
38
39    def get_child_at_index(self, index):
40        if index == 0:
41            return self.valobj.GetChildMemberWithName("ptr")
42        if index == 1:
43            return self.valobj.GetChildMemberWithName("ptr").Dereference()
44        return None
45
46    def get_child_index(self, name):
47        if name == "ptr":
48            return 0
49        if name == "$$dereference$$":
50            return 1
51        return -1
52
53    def update(self):
54        return True
55