summaryrefslogtreecommitdiff
path: root/upb/handlers.h
diff options
context:
space:
mode:
authorBo Yang <teboring@google.com>2017-09-19 14:23:36 -0700
committerBo Yang <teboring@google.com>2017-09-19 14:23:36 -0700
commit0b7904e18cad70e17a2dbed5f1362ccdc62fd385 (patch)
treee94665631c7437d1bebb62b9a45f0c1be1f21d81 /upb/handlers.h
parentae30b4a816a57a8101ce187245edc3050d515c06 (diff)
Reserve unknown fields in upb
1. For decoding, an unknownfields will be lazily created on message, which contains bytes of unknown fields. 2. For encoding, if the unknownfields is present on message, all bytes contained in it will be serialized.
Diffstat (limited to 'upb/handlers.h')
-rw-r--r--upb/handlers.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/upb/handlers.h b/upb/handlers.h
index 54a3c1c..0f28f19 100644
--- a/upb/handlers.h
+++ b/upb/handlers.h
@@ -104,7 +104,8 @@ UPB_END_EXTERN_C
/* Static selectors for upb::Handlers. */
#define UPB_STARTMSG_SELECTOR 0
#define UPB_ENDMSG_SELECTOR 1
-#define UPB_STATIC_SELECTOR_COUNT 2
+#define UPB_UNKNOWN_SELECTOR 2
+#define UPB_STATIC_SELECTOR_COUNT 3
/* Static selectors for upb::BytesHandler. */
#define UPB_STARTSTR_SELECTOR 0
@@ -633,6 +634,10 @@ UPB_BEGIN_EXTERN_C
/* Native C API. */
/* Handler function typedefs. */
+typedef bool upb_addunknown_handlerfunc(void *c, const void *hd,
+ const char *buf, size_t n);
+typedef bool upb_unknown_handlerfunc(void *c, const void *hd, const char *buf,
+ size_t n);
typedef bool upb_startmsg_handlerfunc(void *c, const void*);
typedef bool upb_endmsg_handlerfunc(void *c, const void *, upb_status *status);
typedef void* upb_startfield_handlerfunc(void *c, const void *hd);
@@ -686,6 +691,11 @@ const upb_status *upb_handlers_status(upb_handlers *h);
void upb_handlers_clearerr(upb_handlers *h);
const upb_msgdef *upb_handlers_msgdef(const upb_handlers *h);
bool upb_handlers_addcleanup(upb_handlers *h, void *p, upb_handlerfree *hfree);
+bool upb_handlers_setaddunknown(upb_handlers *h,
+ upb_addunknown_handlerfunc *func,
+ upb_handlerattr *attr);
+bool upb_handlers_setunknown(upb_handlers *h, upb_unknown_handlerfunc *func,
+ upb_handlerattr *attr);
bool upb_handlers_setstartmsg(upb_handlers *h, upb_startmsg_handlerfunc *func,
upb_handlerattr *attr);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback