X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=pb_decode.h;h=35de0a2264318984304938494f217296e05fcfa7;hb=d580b225e859ef0462e1d96553003eff2793b796;hp=483665eeb03c93f7b83fc36530f663830534985f;hpb=f1d7640fe1be0f150f604c72108ea516222c2505;p=apps%2Fagl-service-can-low-level.git diff --git a/pb_decode.h b/pb_decode.h index 483665ee..35de0a22 100644 --- a/pb_decode.h +++ b/pb_decode.h @@ -12,6 +12,10 @@ #include #include "pb.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Lightweight input stream. * You can provide a callback function for reading or use * pb_istream_from_buffer. @@ -19,18 +23,25 @@ * Rules for callback: * 1) Return false on IO errors. This will cause decoding to abort. * - * 2) If buf is NULL, read but don't store bytes ("skip input"). - * - * 3) You can use state to store your own data (e.g. buffer pointer), + * 2) You can use state to store your own data (e.g. buffer pointer), * and rely on pb_read to verify that no-body reads past bytes_left. * - * 4) Your callback may be used with substreams, in which case bytes_left + * 3) Your callback may be used with substreams, in which case bytes_left * is different than from the main stream. Don't use bytes_left to compute * any pointers. */ struct _pb_istream_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. + */ + int *callback; +#else bool (*callback)(pb_istream_t *stream, uint8_t *buf, size_t count); +#endif + void *state; /* Free field for use by callback implementation */ size_t bytes_left; @@ -104,4 +115,8 @@ bool pb_skip_varint(pb_istream_t *stream); bool pb_skip_string(pb_istream_t *stream); #endif +#ifdef __cplusplus +} /* extern "C" */ +#endif + #endif