* max_size is not checked.
*
* Rules for callback:
- * 1) Return false on IO errors. This will cause decoding to abort.
+ * 1) Return false on IO errors. This will cause encoding to abort.
*
* 2) You can use state to store your own data (e.g. buffer pointer).
*
- * 3) pb_write will update bytes_written before your callback runs.
+ * 3) pb_write will update bytes_written after your callback runs.
*
- * 4) Your callback will be always used with the same pb_ostream_t.
- * There are no substreams when encoding.
+ * 4) Substreams will modify max_size and bytes_written. Don't use them to
+ * calculate any pointers.
*/
struct _pb_ostream_t
{
bool pb_encode_varint(pb_ostream_t *stream, uint64_t value);
bool pb_encode_tag(pb_ostream_t *stream, pb_wire_type_t wiretype, int field_number);
+/* Encode tag based on LTYPE and field number defined in the field structure. */
bool pb_encode_tag_for_field(pb_ostream_t *stream, const pb_field_t *field);
-bool pb_encode_string(pb_ostream_t *stream, uint8_t *buffer, size_t size);
+/* Write length as varint and then the contents of buffer. */
+bool pb_encode_string(pb_ostream_t *stream, const uint8_t *buffer, size_t size);
/* --- Field encoders ---
* Each encoder writes the content for the field.