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