X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=pb.h;h=2c1851be365e1942f2ec0ada189739508648df95;hb=3cf9668c755560a69e4858dea4f3c415bf807441;hp=d6cb1d40111abbf1c2dfc1d6eba68bf7f665cb60;hpb=9be2cfe968b4223f9d416aecd483f3b999bbab71;p=apps%2Fagl-service-can-low-level.git diff --git a/pb.h b/pb.h index d6cb1d40..2c1851be 100644 --- a/pb.h +++ b/pb.h @@ -10,6 +10,9 @@ * uncommenting the lines, or on the compiler command line. * *****************************************************************/ +/* Enable support for dynamically allocated fields */ +/* #define PB_ENABLE_MALLOC 1 */ + /* Define this if your CPU architecture is big endian, i.e. it * stores the most-significant byte first. */ /* #define __BIG_ENDIAN__ 1 */ @@ -43,7 +46,7 @@ /* Version of the nanopb library. Just in case you want to check it in * your own program. */ -#define NANOPB_VERSION nanopb-0.2.7-dev +#define NANOPB_VERSION nanopb-0.2.9-dev /* Include all the system headers needed by nanopb. You will need the * definitions of the following: @@ -77,8 +80,8 @@ # define PB_PACKED_STRUCT_START # define PB_PACKED_STRUCT_END # define pb_packed __attribute__((packed)) -#elif defined(__ICCARM__) - /* For IAR ARM compiler */ +#elif defined(__ICCARM__) || defined(__CC_ARM) + /* For IAR ARM and Keil MDK-ARM compilers */ # define PB_PACKED_STRUCT_START _Pragma("pack(push, 1)") # define PB_PACKED_STRUCT_END _Pragma("pack(pop)") # define pb_packed @@ -338,8 +341,23 @@ struct _pb_extension_t { * If this extension does not match a field, the next handler is * automatically called. */ pb_extension_t *next; + + /* The decoder sets this to true if the extension was found. + * Ignored for encoding. */ + bool found; }; +/* Memory allocation functions to use. You can define pb_realloc and + * pb_free to custom functions if you want. */ +#ifdef PB_ENABLE_MALLOC +# ifndef pb_realloc +# define pb_realloc(ptr, size) realloc(ptr, size) +# endif +# ifndef pb_free +# define pb_free(ptr) free(ptr) +# endif +#endif + /* These macros are used to declare pb_field_t's in the constant array. */ /* Size of a structure member, in bytes. */ #define pb_membersize(st, m) (sizeof ((st*)0)->m) @@ -482,7 +500,11 @@ struct _pb_extension_t { * messages if not used. */ #ifdef PB_NO_ERRMSG -#define PB_RETURN_ERROR(stream,msg) return false +#define PB_RETURN_ERROR(stream,msg) \ + do {\ + UNUSED(stream); \ + return false; \ + } while(0) #define PB_GET_ERROR(stream) "(errmsg disabled)" #else #define PB_RETURN_ERROR(stream,msg) \