199451b44SJordan Rupprechtimport lldb
299451b44SJordan Rupprecht
399451b44SJordan Rupprecht
499451b44SJordan Rupprechtclass fooSynthProvider:
599451b44SJordan Rupprecht    def __init__(self, valobj, dict):
699451b44SJordan Rupprecht        self.valobj = valobj
799451b44SJordan Rupprecht        self.int_type = valobj.GetType().GetBasicType(lldb.eBasicTypeInt)
899451b44SJordan Rupprecht
999451b44SJordan Rupprecht    def num_children(self):
1099451b44SJordan Rupprecht        return 3
1199451b44SJordan Rupprecht
1299451b44SJordan Rupprecht    def get_child_at_index(self, index):
1399451b44SJordan Rupprecht        if index == 0:
14*2238dcc3SJonas Devlieghere            child = self.valobj.GetChildMemberWithName("a")
1599451b44SJordan Rupprecht        if index == 1:
16*2238dcc3SJonas Devlieghere            child = self.valobj.CreateChildAtOffset("fake_a", 1, self.int_type)
1799451b44SJordan Rupprecht        if index == 2:
18*2238dcc3SJonas Devlieghere            child = self.valobj.GetChildMemberWithName("r")
1999451b44SJordan Rupprecht        return child
2099451b44SJordan Rupprecht
2199451b44SJordan Rupprecht    def get_child_index(self, name):
22*2238dcc3SJonas Devlieghere        if name == "a":
2399451b44SJordan Rupprecht            return 0
24*2238dcc3SJonas Devlieghere        if name == "fake_a":
2599451b44SJordan Rupprecht            return 1
2699451b44SJordan Rupprecht        return 2
2799451b44SJordan Rupprecht
2899451b44SJordan Rupprecht    def update(self):
2999451b44SJordan Rupprecht        return True
3099451b44SJordan Rupprecht
3199451b44SJordan Rupprecht
3299451b44SJordan Rupprechtclass wrapfooSynthProvider:
3399451b44SJordan Rupprecht    def __init__(self, valobj, dict):
3499451b44SJordan Rupprecht        self.valobj = valobj
3599451b44SJordan Rupprecht
3699451b44SJordan Rupprecht    def num_children(self):
3799451b44SJordan Rupprecht        return 1
3899451b44SJordan Rupprecht
3999451b44SJordan Rupprecht    def get_child_at_index(self, index):
4099451b44SJordan Rupprecht        if index == 0:
41*2238dcc3SJonas Devlieghere            return self.valobj.GetChildMemberWithName("ptr")
4299451b44SJordan Rupprecht        if index == 1:
43*2238dcc3SJonas Devlieghere            return self.valobj.GetChildMemberWithName("ptr").Dereference()
4499451b44SJordan Rupprecht        return None
4599451b44SJordan Rupprecht
4699451b44SJordan Rupprecht    def get_child_index(self, name):
47*2238dcc3SJonas Devlieghere        if name == "ptr":
4899451b44SJordan Rupprecht            return 0
49*2238dcc3SJonas Devlieghere        if name == "$$dereference$$":
5099451b44SJordan Rupprecht            return 1
5199451b44SJordan Rupprecht        return -1
5299451b44SJordan Rupprecht
5399451b44SJordan Rupprecht    def update(self):
5499451b44SJordan Rupprecht        return True
55