self.count = 0
self.counter = c
+ self.marshal_count = element.get("marshal_count")
self.count_scale = int(element.get( "count_scale", "1" ))
elements = (count * self.count_scale)
def is_variable_length(self):
- return len(self.count_parameter_list) or self.counter
+ return len(self.count_parameter_list) or self.counter or self.marshal_count
def is_64_bit(self):
return c
- def size_string(self, use_parens = 1):
- s = self.size()
- if self.counter or self.count_parameter_list:
+ def size_string(self, use_parens = 1, marshal = 0):
+ base_size_str = ""
+
+ count = self.get_element_count()
+ if count:
+ base_size_str = "%d * " % count
+
+ base_size_str += "sizeof(%s)" % ( self.get_base_type_string() )
+
+ if self.counter or self.count_parameter_list or (self.marshal_count and marshal):
list = [ "compsize" ]
- if self.counter and self.count_parameter_list:
+ if self.marshal_count and marshal:
+ list = [ self.marshal_count ]
+ elif self.counter and self.count_parameter_list:
list.append( self.counter )
elif self.counter:
list = [ self.counter ]
- if s > 1:
- list.append( str(s) )
+ if self.size() > 1:
+ list.append( base_size_str )
if len(list) > 1 and use_parens :
return "safe_mul(%s)" % ", ".join(list)
elif self.is_image():
return "compsize"
else:
- return str(s)
+ return base_size_str
def format_string(self):