Support <pad align="n" />
Reviewed-By: Ran Benita <ran234@gmail.com> Signed-off-by: Peter Harris <pharris@opentext.com>
This commit is contained in:
parent
3b72a2c9d1
commit
e7263931af
|
@ -981,15 +981,22 @@ def _c_serialize_helper_fields(context, self,
|
||||||
|
|
||||||
# fields with variable size
|
# fields with variable size
|
||||||
else:
|
else:
|
||||||
# switch/bitcase: always calculate padding before and after variable sized fields
|
if field.type.is_pad:
|
||||||
if need_padding or is_bitcase:
|
# Variable length pad is <pad align= />
|
||||||
|
code_lines.append('%s xcb_align_to = %d;' % (space, field.type.align))
|
||||||
count += _c_serialize_helper_insert_padding(context, code_lines, space,
|
count += _c_serialize_helper_insert_padding(context, code_lines, space,
|
||||||
|
self.var_followed_by_fixed_fields)
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
# switch/bitcase: always calculate padding before and after variable sized fields
|
||||||
|
if need_padding or is_bitcase:
|
||||||
|
count += _c_serialize_helper_insert_padding(context, code_lines, space,
|
||||||
self.var_followed_by_fixed_fields)
|
self.var_followed_by_fixed_fields)
|
||||||
|
|
||||||
value, length = _c_serialize_helper_fields_variable_size(context, self, field,
|
value, length = _c_serialize_helper_fields_variable_size(context, self, field,
|
||||||
code_lines, temp_vars,
|
code_lines, temp_vars,
|
||||||
space, prefix)
|
space, prefix)
|
||||||
prev_field_was_variable = True
|
prev_field_was_variable = True
|
||||||
|
|
||||||
# save (un)serialization C code
|
# save (un)serialization C code
|
||||||
if '' != value:
|
if '' != value:
|
||||||
|
@ -1740,10 +1747,11 @@ def _c_accessors(self, name, base):
|
||||||
# else:
|
# else:
|
||||||
if True:
|
if True:
|
||||||
for field in self.fields:
|
for field in self.fields:
|
||||||
if field.type.is_list and not field.type.fixed_size():
|
if not field.type.is_pad:
|
||||||
_c_accessors_list(self, field)
|
if field.type.is_list and not field.type.fixed_size():
|
||||||
elif field.prev_varsized_field is not None or not field.type.fixed_size():
|
_c_accessors_list(self, field)
|
||||||
_c_accessors_field(self, field)
|
elif field.prev_varsized_field is not None or not field.type.fixed_size():
|
||||||
|
_c_accessors_field(self, field)
|
||||||
|
|
||||||
def c_simple(self, name):
|
def c_simple(self, name):
|
||||||
'''
|
'''
|
||||||
|
|
Loading…
Reference in New Issue