Document field extensions support

Update issue 17
Status: FixedInGit
This commit is contained in:
Petteri Aimonen
2013-08-08 20:37:59 +03:00
parent b663909fb6
commit f15093e8bd
3 changed files with 80 additions and 1 deletions

View File

@@ -304,6 +304,41 @@ Protocol Buffers wire types. These are used with `pb_encode_tag`_. ::
PB_WT_32BIT = 5
} pb_wire_type_t;
pb_extension_type_t
-------------------
Defines the handler functions and auxiliary data for a field that extends
another message. Usually autogenerated by *nanopb_generator.py*::
typedef struct {
bool (*decode)(pb_istream_t *stream, pb_extension_t *extension,
uint32_t tag, pb_wire_type_t wire_type);
bool (*encode)(pb_ostream_t *stream, const pb_extension_t *extension);
const void *arg;
} pb_extension_type_t;
In the normal case, the function pointers are *NULL* and the decoder and
encoder use their internal implementations. The internal implementations
assume that *arg* points to a *pb_field_t* that describes the field in question.
To implement custom processing of unknown fields, you can provide pointers
to your own functions. Their functionality is mostly the same as for normal
callback fields, except that they get called for any unknown field when decoding.
pb_extension_t
--------------
Ties together the extension field type and the storage for the field value::
typedef struct {
const pb_extension_type_t *type;
void *dest;
pb_extension_t *next;
} pb_extension_t;
:type: Pointer to the structure that defines the callback functions.
:dest: Pointer to the variable that stores the field value
(as used by the default extension callback functions.)
:next: Pointer to the next extension handler, or *NULL*.
PB_GET_ERROR
------------
Get the current error message from a stream, or a placeholder string if