Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nanopb/nanopb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>2013-09-09 11:53:04 +0400
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>2013-09-09 11:53:04 +0400
commit5b9ad17dc2014d7506a7dde92281d8c36a1433e4 (patch)
tree268552554ab4cba03c9a42eae5d73af33ed28da0 /pb_encode.h
parent4821e7f457ebd28aabcbdea726ebce11265f402f (diff)
Move the declarations of _pb_ostream_t and _pb_istream_t before first use.
Otherwise Microsoft Visual C++ threats them as C++ classes instead of plain structs, forbidding use in C linkage functions. Thanks to Markus Schwarzenberg for the patch. Update issue 84 Status: Started
Diffstat (limited to 'pb_encode.h')
-rw-r--r--pb_encode.h68
1 files changed, 34 insertions, 34 deletions
diff --git a/pb_encode.h b/pb_encode.h
index 04bdabe..3009820 100644
--- a/pb_encode.h
+++ b/pb_encode.h
@@ -12,6 +12,40 @@
extern "C" {
#endif
+/* Structure for defining custom output streams. You will need to provide
+ * a callback function to write the bytes to your storage, which can be
+ * for example a file or a network socket.
+ *
+ * The callback must conform to these rules:
+ *
+ * 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 after your callback runs.
+ * 4) Substreams will modify max_size and bytes_written. Don't use them
+ * to calculate any pointers.
+ */
+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; /* Number of bytes written so far. */
+
+#ifndef PB_NO_ERRMSG
+ const char *errmsg;
+#endif
+};
+
/***************************
* Main encoding functions *
***************************/
@@ -70,40 +104,6 @@ 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);
-/* Structure for defining custom output streams. You will need to provide
- * a callback function to write the bytes to your storage, which can be
- * for example a file or a network socket.
- *
- * The callback must conform to these rules:
- *
- * 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 after your callback runs.
- * 4) Substreams will modify max_size and bytes_written. Don't use them
- * to calculate any pointers.
- */
-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; /* Number of bytes written so far. */
-
-#ifndef PB_NO_ERRMSG
- const char *errmsg;
-#endif
-};
-
/************************************************
* Helper functions for writing field callbacks *