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