summaryrefslogtreecommitdiff
path: root/upb/pb
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2019-01-12 19:12:57 -0800
committerJoshua Haberman <jhaberman@gmail.com>2019-01-12 19:12:57 -0800
commit48863ea0be94ea3d3d61206ad7ce9ead206770fa (patch)
tree9c4b647586ecb7c52fa56f8cef26301027ec5ae7 /upb/pb
parentd2f9bec5c6f3c34362cf13e35e11d3dbc7888a32 (diff)
A lot more tests are working now.
Diffstat (limited to 'upb/pb')
-rw-r--r--upb/pb/decoder.c11
-rw-r--r--upb/pb/decoder.h11
-rw-r--r--upb/pb/encoder.c14
-rw-r--r--upb/pb/encoder.h12
4 files changed, 24 insertions, 24 deletions
diff --git a/upb/pb/decoder.c b/upb/pb/decoder.c
index 0cae05b..cd64f72 100644
--- a/upb/pb/decoder.c
+++ b/upb/pb/decoder.c
@@ -993,7 +993,7 @@ void upb_pbdecoder_reset(upb_pbdecoder *d) {
}
upb_pbdecoder *upb_pbdecoder_create(upb_env *e, const upb_pbdecodermethod *m,
- upb_sink *sink) {
+ upb_sink sink) {
const size_t default_max_nesting = 64;
#ifndef NDEBUG
size_t size_before = upb_env_bytesallocated(e);
@@ -1017,12 +1017,11 @@ upb_pbdecoder *upb_pbdecoder_create(upb_env *e, const upb_pbdecodermethod *m,
upb_pbdecoder_reset(d);
upb_bytessink_reset(&d->input_, &m->input_handler_, d);
- UPB_ASSERT(sink);
if (d->method_->dest_handlers_) {
- if (sink->handlers != d->method_->dest_handlers_)
+ if (sink.handlers != d->method_->dest_handlers_)
return NULL;
}
- upb_sink_reset(&d->top->sink, sink->handlers, sink->closure);
+ d->top->sink = sink;
/* If this fails, increase the value in decoder.h. */
UPB_ASSERT_DEBUGVAR(upb_env_bytesallocated(e) - size_before <=
@@ -1038,8 +1037,8 @@ const upb_pbdecodermethod *upb_pbdecoder_method(const upb_pbdecoder *d) {
return d->method_;
}
-upb_bytessink *upb_pbdecoder_input(upb_pbdecoder *d) {
- return &d->input_;
+upb_bytessink upb_pbdecoder_input(upb_pbdecoder *d) {
+ return d->input_;
}
size_t upb_pbdecoder_maxnesting(const upb_pbdecoder *d) {
diff --git a/upb/pb/decoder.h b/upb/pb/decoder.h
index 1ffcb7d..ba381f3 100644
--- a/upb/pb/decoder.h
+++ b/upb/pb/decoder.h
@@ -56,6 +56,7 @@ UPB_END_EXTERN_C
* Handlers. */
class upb::pb::DecoderMethodPtr {
public:
+ DecoderMethodPtr() : ptr_(nullptr) {}
DecoderMethodPtr(const upb_pbdecodermethod* ptr) : ptr_(ptr) {}
const upb_pbdecodermethod* ptr() { return ptr_; }
@@ -98,9 +99,9 @@ UPB_BEGIN_EXTERN_C
upb_pbdecoder *upb_pbdecoder_create(upb_env *e,
const upb_pbdecodermethod *method,
- upb_sink *output);
+ upb_sink output);
const upb_pbdecodermethod *upb_pbdecoder_method(const upb_pbdecoder *d);
-upb_bytessink *upb_pbdecoder_input(upb_pbdecoder *d);
+upb_bytessink upb_pbdecoder_input(upb_pbdecoder *d);
uint64_t upb_pbdecoder_bytesparsed(const upb_pbdecoder *d);
size_t upb_pbdecoder_maxnesting(const upb_pbdecoder *d);
bool upb_pbdecoder_setmaxnesting(upb_pbdecoder *d, size_t max);
@@ -124,8 +125,8 @@ class upb::pb::DecoderPtr {
*
* The sink must match the given method. */
static DecoderPtr Create(Environment *env, DecoderMethodPtr method,
- upb_sink *output) {
- return DecoderPtr(upb_pbdecoder_create(env, method.ptr(), output));
+ upb::Sink output) {
+ return DecoderPtr(upb_pbdecoder_create(env, method.ptr(), output.sink()));
}
/* Returns the DecoderMethod this decoder is parsing from. */
@@ -134,7 +135,7 @@ class upb::pb::DecoderPtr {
}
/* The sink on which this decoder receives input. */
- upb_bytessink* input() { return upb_pbdecoder_input(ptr()); }
+ BytesSink input() { return BytesSink(upb_pbdecoder_input(ptr())); }
/* Returns number of bytes successfully parsed.
*
diff --git a/upb/pb/encoder.c b/upb/pb/encoder.c
index 3497007..1496eba 100644
--- a/upb/pb/encoder.c
+++ b/upb/pb/encoder.c
@@ -95,7 +95,7 @@ struct upb_pb_encoder {
/* Our input and output. */
upb_sink input_;
- upb_bytessink *output_;
+ upb_bytessink output_;
/* The "subclosure" -- used as the inner closure as part of the bytessink
* protocol. */
@@ -127,7 +127,7 @@ struct upb_pb_encoder {
/* TODO(haberman): handle pushback */
static void putbuf(upb_pb_encoder *e, const char *buf, size_t len) {
- size_t n = upb_bytessink_putbuf(e->output_, e->subc, buf, len, NULL);
+ size_t n = upb_bytessink_putbuf(&e->output_, e->subc, buf, len, NULL);
UPB_ASSERT(n == len);
}
@@ -353,7 +353,7 @@ static bool startmsg(void *c, const void *hd) {
upb_pb_encoder *e = c;
UPB_UNUSED(hd);
if (e->depth++ == 0) {
- upb_bytessink_start(e->output_, 0, &e->subc);
+ upb_bytessink_start(&e->output_, 0, &e->subc);
}
return true;
}
@@ -363,7 +363,7 @@ static bool endmsg(void *c, const void *hd, upb_status *status) {
UPB_UNUSED(hd);
UPB_UNUSED(status);
if (--e->depth == 0) {
- upb_bytessink_end(e->output_);
+ upb_bytessink_end(&e->output_);
}
return true;
}
@@ -527,7 +527,7 @@ upb_handlercache *upb_pb_encoder_newcache() {
}
upb_pb_encoder *upb_pb_encoder_create(upb_env *env, const upb_handlers *h,
- upb_bytessink *output) {
+ upb_bytessink output) {
const size_t initial_bufsize = 256;
const size_t initial_segbufsize = 16;
/* TODO(haberman): make this configurable. */
@@ -556,7 +556,7 @@ upb_pb_encoder *upb_pb_encoder_create(upb_env *env, const upb_handlers *h,
e->env = env;
e->output_ = output;
- e->subc = output->closure;
+ e->subc = output.closure;
e->ptr = e->buf;
/* If this fails, increase the value in encoder.h. */
@@ -565,4 +565,4 @@ upb_pb_encoder *upb_pb_encoder_create(upb_env *env, const upb_handlers *h,
return e;
}
-upb_sink *upb_pb_encoder_input(upb_pb_encoder *e) { return &e->input_; }
+upb_sink upb_pb_encoder_input(upb_pb_encoder *e) { return e->input_; }
diff --git a/upb/pb/encoder.h b/upb/pb/encoder.h
index 20ce606..7aa2870 100644
--- a/upb/pb/encoder.h
+++ b/upb/pb/encoder.h
@@ -30,16 +30,16 @@ class EncoderPtr;
* constructed. This hint may be an overestimate for some build configurations.
* But if the decoder library is upgraded without recompiling the application,
* it may be an underestimate. */
-#define UPB_PB_ENCODER_SIZE 768
+#define UPB_PB_ENCODER_SIZE 784
struct upb_pb_encoder;
typedef struct upb_pb_encoder upb_pb_encoder;
UPB_BEGIN_EXTERN_C
-upb_sink *upb_pb_encoder_input(upb_pb_encoder *p);
+upb_sink upb_pb_encoder_input(upb_pb_encoder *p);
upb_pb_encoder* upb_pb_encoder_create(upb_env* e, const upb_handlers* h,
- upb_bytessink* output);
+ upb_bytessink output);
upb_handlercache *upb_pb_encoder_newcache();
@@ -56,12 +56,12 @@ class upb::pb::EncoderPtr {
/* Creates a new encoder in the given environment. The Handlers must have
* come from NewHandlers() below. */
static EncoderPtr Create(Environment* env, const Handlers* handlers,
- BytesSink* output) {
- return EncoderPtr(upb_pb_encoder_create(env, handlers, output->ptr()));
+ BytesSink output) {
+ return EncoderPtr(upb_pb_encoder_create(env, handlers, output.sink()));
}
/* The input to the encoder. */
- upb_sink* input() { return upb_pb_encoder_input(ptr()); }
+ upb::Sink input() { return upb_pb_encoder_input(ptr()); }
/* Creates a new set of handlers for this MessageDef. */
static HandlerCache NewCache() {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback