Get rid of the ternary operator in the pb_field_t initialization.

Some compilers where unable to detect that the ternary operator
can be evaluated at the compile time. This commit does the evaluation
on the Python side, which should fix the problem.

The new .pb.c files are generated using PB_FIELD2() macro. The old
PB_FIELD() macro remains, so that previously generated files keep
working.
This commit is contained in:
Petteri Aimonen
2013-09-11 09:53:51 +03:00
parent 5b9ad17dc2
commit 840e213b9f
2 changed files with 39 additions and 20 deletions

View File

@@ -246,13 +246,14 @@ class Field:
'''Return the pb_field_t initializer to use in the constant array.
prev_field_name is the name of the previous field or None.
'''
result = ' PB_FIELD(%3d, ' % self.tag
result = ' PB_FIELD2(%3d, ' % self.tag
result += '%-8s, ' % self.pbtype
result += '%s, ' % self.rules
result += '%s, ' % self.allocation
result += '%s, ' % self.struct_name
result += '%s, ' % self.name
result += '%s, ' % (prev_field_name or self.name)
result += '%s, ' % ("first" if not prev_field_name else "other")
if self.pbtype == 'MESSAGE':
result += '&%s_fields)' % self.submsgname