diff options
-rwxr-xr-x | generator/nanopb_generator.py | 7 | ||||
-rw-r--r-- | tests/extensions/encode_extensions.c | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 89647c2c..3c248ac3 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -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' diff --git a/tests/extensions/encode_extensions.c b/tests/extensions/encode_extensions.c index dee3597d..00745826 100644 --- a/tests/extensions/encode_extensions.c +++ b/tests/extensions/encode_extensions.c @@ -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; } |