Cast enum vaules to integers and cast them back where appropraite
authorStan Hu <stanhu@aclimalabs.com>
Mon, 2 Jul 2012 21:00:45 +0000 (14:00 -0700)
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>
Thu, 5 Jul 2012 15:13:50 +0000 (18:13 +0300)
to prevent mixed enumeration type compiler warnings

generator/nanopb_generator.py
pb.h

index 9e2a30e..1925167 100644 (file)
@@ -217,10 +217,10 @@ class Field:
         prev_field_name is the name of the previous field or None.
         '''
         result = '    {%d, ' % self.tag
-        result += self.htype
+        result += '(pb_type_t) ((int) ' + self.htype
         if self.ltype is not None:
-            result += ' | ' + self.ltype
-        result += ',\n'
+            result += ' | (int) ' + self.ltype
+        result += '),\n'
         
         if prev_field_name is None:
             result += '    offsetof(%s, %s),' % (self.struct_name, self.name)
diff --git a/pb.h b/pb.h
index d030d9e..61696a4 100644 (file)
--- a/pb.h
+++ b/pb.h
@@ -195,7 +195,7 @@ typedef enum {
 #define pb_arraysize(st, m) (pb_membersize(st, m) / pb_membersize(st, m[0]))
 #define pb_delta(st, m1, m2) ((int)offsetof(st, m1) - (int)offsetof(st, m2))
 #define pb_delta_end(st, m1, m2) (offsetof(st, m1) - offsetof(st, m2) - pb_membersize(st, m2))
-#define PB_LAST_FIELD {0,0,0,0}
+#define PB_LAST_FIELD {0,(pb_type_t) 0,0,0}
 
 
 #endif