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