summaryrefslogtreecommitdiff
path: root/upb
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2019-01-12 20:02:52 -0800
committerJoshua Haberman <jhaberman@gmail.com>2019-01-12 20:02:52 -0800
commitef7c50223a9bd1ab451e82a31a93cab3272b497f (patch)
treef0456382a75803a776c9e9a8b1421e8fded4e848 /upb
parent48863ea0be94ea3d3d61206ad7ce9ead206770fa (diff)
All tests pass again!
Diffstat (limited to 'upb')
-rw-r--r--upb/handlers.c6
-rw-r--r--upb/sink.h41
2 files changed, 37 insertions, 10 deletions
diff --git a/upb/handlers.c b/upb/handlers.c
index ba27b98..ca978bf 100644
--- a/upb/handlers.c
+++ b/upb/handlers.c
@@ -91,7 +91,7 @@ static bool doset(upb_handlers *h, int32_t sel, const upb_fielddef *f,
if (closure_type && *context_closure_type &&
closure_type != *context_closure_type) {
- UPB_ASSERT(false);
+ return false;
}
if (closure_type)
@@ -103,7 +103,7 @@ static bool doset(upb_handlers *h, int32_t sel, const upb_fielddef *f,
const void *return_type = set_attr.return_closure_type;
const void *table_return_type = h->table[sel].attr.return_closure_type;
if (return_type && table_return_type && return_type != table_return_type) {
- UPB_ASSERT(false);
+ return false;
}
if (table_return_type && !return_type) {
@@ -168,7 +168,7 @@ bool checkstart(upb_handlers *h, const upb_fielddef *f, upb_handlertype_t type,
return_closure_type = attr->return_closure_type;
if (closure_type && return_closure_type &&
closure_type != return_closure_type) {
- UPB_ASSERT(false);
+ return false;
}
return true;
}
diff --git a/upb/sink.h b/upb/sink.h
index 1359c5e..1855542 100644
--- a/upb/sink.h
+++ b/upb/sink.h
@@ -326,18 +326,37 @@ class upb::Sink {
*
* For StartString(), the function will write a sink for the string to "sub."
* The sub-sink must be used for any/all PutStringBuffer() calls. */
- bool StartString(HandlersPtr::Selector s, size_t size_hint, Sink* sub);
+ bool StartString(HandlersPtr::Selector s, size_t size_hint, Sink* sub) {
+ upb_sink sub_c;
+ bool ret = upb_sink_startstr(&sink_, s, size_hint, &sub_c);
+ *sub = sub_c;
+ return ret;
+ }
+
size_t PutStringBuffer(HandlersPtr::Selector s, const char *buf, size_t len,
- const upb_bufhandle *handle);
- bool EndString(HandlersPtr::Selector s);
+ const upb_bufhandle *handle) {
+ return upb_sink_putstring(&sink_, s, buf, len, handle);
+ }
+
+ bool EndString(HandlersPtr::Selector s) {
+ return upb_sink_endstr(&sink_, s);
+ }
/* For submessage fields.
*
* For StartSubMessage(), the function will write a sink for the string to
* "sub." The sub-sink must be used for any/all handlers called within the
* submessage. */
- bool StartSubMessage(HandlersPtr::Selector s, Sink* sub);
- bool EndSubMessage(HandlersPtr::Selector s);
+ bool StartSubMessage(HandlersPtr::Selector s, Sink* sub) {
+ upb_sink sub_c;
+ bool ret = upb_sink_startsubmsg(&sink_, s, &sub_c);
+ *sub = sub_c;
+ return ret;
+ }
+
+ bool EndSubMessage(HandlersPtr::Selector s) {
+ return upb_sink_endsubmsg(&sink_, s);
+ }
/* For repeated fields of any type, the sequence of values must be wrapped in
* these calls.
@@ -345,8 +364,16 @@ class upb::Sink {
* For StartSequence(), the function will write a sink for the string to
* "sub." The sub-sink must be used for any/all handlers called within the
* sequence. */
- bool StartSequence(HandlersPtr::Selector s, Sink* sub);
- bool EndSequence(HandlersPtr::Selector s);
+ bool StartSequence(HandlersPtr::Selector s, Sink* sub) {
+ upb_sink sub_c;
+ bool ret = upb_sink_startseq(&sink_, s, &sub_c);
+ *sub = sub_c;
+ return ret;
+ }
+
+ bool EndSequence(HandlersPtr::Selector s) {
+ return upb_sink_endseq(&sink_, s);
+ }
/* Copy and assign specifically allowed.
* We don't even bother making these members private because so many
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback