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