199451b44SJordan Rupprechtimport lldb 299451b44SJordan Rupprecht 399451b44SJordan Rupprecht 499451b44SJordan Rupprechtclass FooSyntheticProvider: 599451b44SJordan Rupprecht def __init__(self, valobj, dict): 699451b44SJordan Rupprecht self.valobj = valobj 799451b44SJordan Rupprecht self.update() 899451b44SJordan Rupprecht 999451b44SJordan Rupprecht def update(self): 1099451b44SJordan Rupprecht self.adjust_for_architecture() 1199451b44SJordan Rupprecht 1299451b44SJordan Rupprecht def num_children(self): 1399451b44SJordan Rupprecht return 1 1499451b44SJordan Rupprecht 1599451b44SJordan Rupprecht def get_child_at_index(self, index): 1699451b44SJordan Rupprecht if index != 0: 1799451b44SJordan Rupprecht return None 1899451b44SJordan Rupprecht return self.i_ptr.Dereference() 1999451b44SJordan Rupprecht 2099451b44SJordan Rupprecht def get_child_index(self, name): 2199451b44SJordan Rupprecht if name == "*i_ptr": 2299451b44SJordan Rupprecht return 0 2399451b44SJordan Rupprecht return None 2499451b44SJordan Rupprecht 2599451b44SJordan Rupprecht def adjust_for_architecture(self): 26*2238dcc3SJonas Devlieghere self.lp64 = self.valobj.GetTarget().GetProcess().GetAddressByteSize() == 8 27*2238dcc3SJonas Devlieghere self.is_little = ( 28*2238dcc3SJonas Devlieghere self.valobj.GetTarget().GetProcess().GetByteOrder() == lldb.eByteOrderLittle 29*2238dcc3SJonas Devlieghere ) 3099451b44SJordan Rupprecht self.pointer_size = self.valobj.GetTarget().GetProcess().GetAddressByteSize() 31*2238dcc3SJonas Devlieghere self.bar = self.valobj.GetChildMemberWithName("b") 32*2238dcc3SJonas Devlieghere self.i_ptr = self.bar.GetChildMemberWithName("i_ptr") 33