X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=pb_encode.h;h=773b7178c7a91d29e25ffc8b39754b1be871e9c9;hb=bfd7cb36b90dfa22d37c918d8cdcdce60bc8af85;hp=85a829739c923c13bd39407d39ed3637334d5a91;hpb=3aaa4ad8c290af87d9bb9e24447f9cd6f9a79eab;p=apps%2Fagl-service-can-low-level.git diff --git a/pb_encode.h b/pb_encode.h index 85a82973..773b7178 100644 --- a/pb_encode.h +++ b/pb_encode.h @@ -6,7 +6,6 @@ * and their field descriptions (just like with pb_decode). */ -#include #include "pb.h" #ifdef __cplusplus @@ -32,15 +31,36 @@ extern "C" { */ struct _pb_ostream_t { +#ifdef PB_BUFFER_ONLY + /* Callback pointer is not used in buffer-only configuration. + * Having an int pointer here allows binary compatibility but + * gives an error if someone tries to assign callback function. + * Also, NULL pointer marks a 'sizing stream' that does not + * write anything. + */ + int *callback; +#else bool (*callback)(pb_ostream_t *stream, const uint8_t *buf, size_t count); +#endif void *state; /* Free field for use by callback implementation */ size_t max_size; /* Limit number of output bytes written (or use SIZE_MAX). */ size_t bytes_written; + +#ifndef PB_NO_ERRMSG + const char *errmsg; +#endif }; pb_ostream_t pb_ostream_from_buffer(uint8_t *buf, size_t bufsize); bool pb_write(pb_ostream_t *stream, const uint8_t *buf, size_t count); +/* Stream type for use in computing message sizes */ +#ifndef PB_NO_ERRMSG +#define PB_OSTREAM_SIZING {0,0,0,0,0} +#else +#define PB_OSTREAM_SIZING {0,0,0,0} +#endif + /* Encode struct to given output stream. * Returns true on success, false on any failure. * The actual struct pointed to by src_struct must match the description in fields.