1915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataimport lldb
2915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
3915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataclass FooSyntheticProvider:
4915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	def __init__(self,valobj,dict):
5915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.valobj = valobj;
6915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.update();
7915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
8915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	def update(self):
9915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.adjust_for_architecture()
10915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
11915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	def num_children(self):
12915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		return 1;
13915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
14915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	def get_child_at_index(self,index):
15915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		if index != 0:
16915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata			return None;
17915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		return self.i_ptr.Dereference();
18915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
19915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	def get_child_index(self,name):
20915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		if name == "*i_ptr":
21915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata			return 0;
22915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		return None;
23915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
24915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	def adjust_for_architecture(self):
25915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.lp64 = (self.valobj.GetTarget().GetProcess().GetAddressByteSize() == 8)
26915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.is_little = (self.valobj.GetTarget().GetProcess().GetByteOrder() == lldb.eByteOrderLittle)
27915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.pointer_size = self.valobj.GetTarget().GetProcess().GetAddressByteSize()
28915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.bar = self.valobj.GetChildMemberWithName('b');
29915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		self.i_ptr = self.bar.GetChildMemberWithName('i_ptr');