const pb_field_t* decode_unionmessage_type(pb_istream_t *stream)
{
pb_wire_type_t wire_type;
- int tag;
+ uint32_t tag;
bool eof;
while (pb_decode_tag(stream, &wire_type, &tag, &eof))
bool decode_unionmessage_contents(pb_istream_t *stream, const pb_field_t fields[], void *dest_struct)
{
- pb_field_t field = {}; /* NB: Could get rid of this wrapper by fixing issue #2. */
- field.ptr = fields;
+ pb_istream_t substream;
+ bool status;
+ if (!pb_make_string_substream(stream, &substream))
+ return false;
- return pb_dec_submessage(stream, &field, dest_struct);
+ status = pb_decode(&substream, fields, dest_struct);
+ pb_close_string_substream(stream, &substream);
+ return status;
}
int main()