blob: 91e634a718af7a20fa57539c67d075ad86464995 [file] [log] [blame]
Enrico Granata979e20d2011-07-29 19:53:35 +00001class StdVectorSynthProvider:
2 def __init__(self, valobj, dict):
3 self.valobj = valobj;
4 self.update()
5 def num_children(self):
6 start_val = int(self.Mstart.GetValue(),0)
7 finish_val = int(self.Mfinish.GetValue(),0)
8 return (finish_val-start_val)/self.data_size
9 def get_child_index(self,name):
10 if name == "len":
11 return self.num_children();
12 else:
13 return int(name.lstrip('[').rstrip(']'))
14 def get_child_at_index(self,index):
15 if index == self.num_children():
16 return self.valobj.CreateValueFromExpression("len",str(self.num_children()))
17 else:
18 offset = index * self.data_size
19 return self.Mstart.CreateChildAtOffset('['+str(index)+']',offset,self.data_type)
20 def update(self):
21 self.Mimpl = self.valobj.GetChildMemberWithName('_M_impl')
22 self.Mstart = self.Mimpl.GetChildMemberWithName('_M_start')
23 self.Mfinish = self.Mimpl.GetChildMemberWithName('_M_finish')
24 self.data_type = self.Mstart.GetType().GetPointeeType()
25 self.data_size = self.data_type.GetByteSize()