From ba97926cfd1e82bd294cf5e484633850d8e0b368 Mon Sep 17 00:00:00 2001 From: Bernhard Krämer Date: Sun, 9 Oct 2016 20:26:28 +0200 Subject: Add proto3 option to handle singular fields --- generator/nanopb_generator.py | 12 +++++++----- generator/proto/nanopb.proto | 3 +++ 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'generator') diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 973c7610..185a97bb 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -258,16 +258,18 @@ class Field: # Check field rules, i.e. required/optional/repeated. can_be_static = True - if desc.label == FieldD.LABEL_REQUIRED: - self.rules = 'REQUIRED' - elif desc.label == FieldD.LABEL_OPTIONAL: - self.rules = 'OPTIONAL' - elif desc.label == FieldD.LABEL_REPEATED: + if desc.label == FieldD.LABEL_REPEATED: self.rules = 'REPEATED' if self.max_count is None: can_be_static = False else: self.array_decl = '[%d]' % self.max_count + elif field_options.HasField("proto3"): + self.rules = 'SINGULAR' + elif desc.label == FieldD.LABEL_REQUIRED: + self.rules = 'REQUIRED' + elif desc.label == FieldD.LABEL_OPTIONAL: + self.rules = 'OPTIONAL' else: raise NotImplementedError(desc.label) diff --git a/generator/proto/nanopb.proto b/generator/proto/nanopb.proto index 8aab19a1..b9961c88 100644 --- a/generator/proto/nanopb.proto +++ b/generator/proto/nanopb.proto @@ -66,6 +66,9 @@ message NanoPBOptions { // decode oneof as anonymous union optional bool anonymous_oneof = 11 [default = false]; + + // Proto3 singular field does not generate a "has_" flag + optional bool proto3 = 12 [default = false]; } // Extensions to protoc 'Descriptor' type in order to define options -- cgit 1.2.3-korg