Generate #define tags for extension fields also.
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>
Sat, 2 Nov 2013 20:05:49 +0000 (22:05 +0200)
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>
Sat, 2 Nov 2013 20:05:49 +0000 (22:05 +0200)
Update issue 93
Status: FixedInGit

generator/nanopb_generator.py
tests/extensions/encode_extensions.c

index 89647c2..3c248ac 100755 (executable)
@@ -423,6 +423,11 @@ class ExtensionField(Field):
             self.skip = False
             self.rules = 'OPTEXT'
 
+    def tags(self):
+        '''Return the #define for the tag number of this field.'''
+        identifier = '%s_tag' % self.fullname
+        return '#define %-40s %d\n' % (identifier, self.tag)
+
     def extension_decl(self):
         '''Declaration of the extension type in the .pb.h file'''
         if self.skip:
@@ -709,6 +714,8 @@ def generate_header(dependencies, headername, enums, messages, extensions, optio
     for msg in sort_dependencies(messages):
         for field in msg.fields:
             yield field.tags()
+    for extension in extensions:
+        yield extension.tags()
     yield '\n'
     
     yield '/* Struct field encoding specification for nanopb */\n'
index dee3597..0074582 100644 (file)
@@ -46,5 +46,9 @@ int main(int argc, char **argv)
         fprintf(stderr, "Encoding failed: %s\n", PB_GET_ERROR(&stream));
         return 1; /* Failure */
     }
+    
+    /* Check that the field tags are properly generated */
+    (void)AllTypes_extensionfield1_tag;
+    (void)ExtensionMessage_AllTypes_extensionfield2_tag;
 }