'''Generate header file for nanopb from a ProtoBuf FileDescriptorSet.'''
-nanopb_version = "nanopb-0.2.1-dev"
+nanopb_version = "nanopb-0.2.1"
try:
import google.protobuf.descriptor_pb2 as descriptor
return cmp(self.tag, other.tag)
def __str__(self):
- if self.rules == 'OPTIONAL':
+ if self.rules == 'OPTIONAL' and self.allocation == 'STATIC':
result = ' bool has_' + self.name + ';\n'
elif self.rules == 'REPEATED' and self.allocation == 'STATIC':
result = ' size_t ' + self.name + '_count;\n'
result += ' pb_packed'
result += ' %s;' % self.name
+
+ if self.packed:
+ result = 'PB_PACKED_STRUCT_START\n' + result
+ result += '\nPB_PACKED_STRUCT_END'
+
return result
def types(self):
symbol = make_identifier(headername)
yield '#ifndef _PB_%s_\n' % symbol
yield '#define _PB_%s_\n' % symbol
- yield options.libformat % ('pb.h')
+ try:
+ yield options.libformat % ('pb.h')
+ except TypeError:
+ # no %s specified - use whatever was passed in as options.libformat
+ yield options.libformat
yield '\n'
for dependency in dependencies:
fdesc = descriptor.FileDescriptorSet.FromString(data)
# Check if any separate options are specified
- optfilename = options.options_file % os.path.splitext(filename)[0]
+ try:
+ optfilename = options.options_file % os.path.splitext(filename)[0]
+ except TypeError:
+ # No %s specified, use the filename as-is
+ optfilename = options.options_file
if options.verbose:
print 'Reading options from ' + optfilename