Add packed_enum option to generator.
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>
Sat, 12 Sep 2015 09:15:27 +0000 (12:15 +0300)
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>
Sat, 12 Sep 2015 09:15:27 +0000 (12:15 +0300)
This can be generally useful for saving RAM, but also makes
it easier to test for issue #164.

generator/nanopb_generator.py
generator/proto/nanopb.proto

index 8fd4537..aaa0d2f 100755 (executable)
@@ -160,11 +160,17 @@ class Enum:
             self.values = [(names + x.name, x.number) for x in desc.value] 
         
         self.value_longnames = [self.names + x.name for x in desc.value]
+        self.packed = enum_options.packed_enum
     
     def __str__(self):
         result = 'typedef enum _%s {\n' % self.names
         result += ',\n'.join(["    %s = %d" % x for x in self.values])
-        result += '\n} %s;' % self.names
+        result += '\n}'
+        
+        if self.packed:
+            result += ' pb_packed'
+        
+        result += ' %s;' % self.names
         
         if not self.options.long_names:
             # Define the long names always so that enum value references
index 3f2ed8e..b8671bb 100644 (file)
@@ -51,6 +51,9 @@ message NanoPBOptions {
   // accesses to variables.
   optional bool packed_struct = 5 [default = false];
   
+  // Add 'packed' attribute to generated enums.
+  optional bool packed_enum = 10 [default = false];
+  
   // Skip this message
   optional bool skip_message = 6 [default = false];