| import lldb | |
| class fooSynthProvider: | |
| def __init__(self, valobj, dict): | |
| self.valobj = valobj | |
| self.int_type = valobj.GetType().GetBasicType(lldb.eBasicTypeInt) | |
| def num_children(self): | |
| return 3 | |
| def get_child_at_index(self, index): | |
| if index == 0: | |
| child = self.valobj.GetChildMemberWithName('a') | |
| if index == 1: | |
| child = self.valobj.CreateChildAtOffset('fake_a', 1, self.int_type) | |
| if index == 2: | |
| child = self.valobj.GetChildMemberWithName('r') | |
| return child | |
| def get_child_index(self, name): | |
| if name == 'a': | |
| return 0 | |
| if name == 'fake_a': | |
| return 1 | |
| return 2 | |
| def update(self): | |
| return True | |
| class wrapfooSynthProvider: | |
| def __init__(self, valobj, dict): | |
| self.valobj = valobj | |
| def num_children(self): | |
| return 1 | |
| def get_child_at_index(self, index): | |
| if index == 0: | |
| return self.valobj.GetChildMemberWithName('ptr') | |
| if index == 1: | |
| return self.valobj.GetChildMemberWithName('ptr').Dereference() | |
| return None | |
| def get_child_index(self, name): | |
| if name == 'ptr': | |
| return 0 | |
| if name == '$$dereference$$': | |
| return 1 | |
| return -1 | |
| def update(self): | |
| return True |