diff options
author | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2013-11-02 22:05:49 +0200 |
---|---|---|
committer | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2013-11-02 22:05:49 +0200 |
commit | dcdd7f98fdb000859a9e2812174a817431b1af34 (patch) | |
tree | ca74462b612bd31da927506e45c981349a088828 | |
parent | 287207841db5df93cf7ff9c71a5f1548deb26b09 (diff) |
Generate #define tags for extension fields also.
Update issue 93
Status: FixedInGit
-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 89647c2..3c248ac 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 dee3597..0074582 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; } |