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