X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=pb_encode.h;h=69b88e86c817ea5c0c2114cda50f41b90a518b06;hb=80a2d33fa9a835564b44fe97ba34e713901cf4fb;hp=af6cc3c5837023b658b54868f9ed50322e3d2747;hpb=b214de4e1e53f14354db36b8f199db6177a63744;p=apps%2Fagl-service-can-low-level.git diff --git a/pb_encode.h b/pb_encode.h index af6cc3c5..69b88e86 100644 --- a/pb_encode.h +++ b/pb_encode.h @@ -9,6 +9,10 @@ #include #include "pb.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Lightweight output stream. * You can provide callback for writing or use pb_ostream_from_buffer. * @@ -28,7 +32,17 @@ */ 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; @@ -99,5 +113,8 @@ bool pb_enc_string(pb_ostream_t *stream, const pb_field_t *field, const void *sr * instead, it has the same functionality with a less confusing interface. */ bool pb_enc_submessage(pb_ostream_t *stream, const pb_field_t *field, const void *src); +#ifdef __cplusplus +} /* extern "C" */ +#endif #endif