From b39dbb9d4010f6b6e11a5100a73e03b601cf72b9 Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Wed, 12 Dec 2018 06:34:11 +0000 Subject: Add support for encoding Any in json --- upb/json/parser.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'upb/json/parser.c') diff --git a/upb/json/parser.c b/upb/json/parser.c index 83590a1..28d7d88 100644 --- a/upb/json/parser.c +++ b/upb/json/parser.c @@ -1301,15 +1301,15 @@ static bool end_stringval_nontop(upb_json_parser *p) { return true; } - if (p->top->is_any) { - return end_any_stringval(p); - } - if (p->top->f == NULL) { multipart_end(p); return true; } + if (p->top->is_any) { + return end_any_stringval(p); + } + switch (upb_fielddef_type(p->top->f)) { case UPB_TYPE_BYTES: if (!base64_push(p, getsel_for_handlertype(p, UPB_HANDLER_STRING), @@ -2768,7 +2768,7 @@ _match: break; case 2: #line 2429 "upb/json/parser.rl" - { p--; {stack[top++] = cs; cs = 23;goto _again;} } + { p--; {stack[top++] = cs; cs = 23; goto _again;} } break; case 3: #line 2433 "upb/json/parser.rl" @@ -2842,17 +2842,17 @@ _match: #line 2488 "upb/json/parser.rl" { if (is_wellknown_msg(parser, UPB_WELLKNOWN_TIMESTAMP)) { - {stack[top++] = cs; cs = 47;goto _again;} + {stack[top++] = cs; cs = 47; goto _again;} } else if (is_wellknown_msg(parser, UPB_WELLKNOWN_DURATION)) { - {stack[top++] = cs; cs = 40;goto _again;} + {stack[top++] = cs; cs = 40; goto _again;} } else { - {stack[top++] = cs; cs = 32;goto _again;} + {stack[top++] = cs; cs = 32; goto _again;} } } break; case 21: #line 2499 "upb/json/parser.rl" - { p--; {stack[top++] = cs; cs = 75;goto _again;} } + { p--; {stack[top++] = cs; cs = 75; goto _again;} } break; case 22: #line 2504 "upb/json/parser.rl" @@ -2964,9 +2964,7 @@ _again: switch ( *__acts++ ) { case 0: #line 2425 "upb/json/parser.rl" - { p--; {cs = stack[--top]; if ( p == pe ) - goto _test_eof; -goto _again;} } + { p--; {cs = stack[--top]; goto _again;} } break; case 30: #line 2556 "upb/json/parser.rl" @@ -2988,7 +2986,7 @@ goto _again;} } #line 2568 "upb/json/parser.rl" { end_subobject_full(parser); } break; -#line 2992 "upb/json/parser.c" +#line 2990 "upb/json/parser.c" } } } @@ -3027,7 +3025,11 @@ static bool end(void *closure, const void *hd) { parse(parser, hd, &eof_ch, 0, NULL); - return parser->current_state >= 103; + return parser->current_state >= +#line 3030 "upb/json/parser.c" +103 +#line 2631 "upb/json/parser.rl" +; } static void json_parser_reset(upb_json_parser *p) { @@ -3044,7 +3046,7 @@ static void json_parser_reset(upb_json_parser *p) { /* Emit Ragel initialization of the parser. */ -#line 3048 "upb/json/parser.c" +#line 3050 "upb/json/parser.c" { cs = json_start; top = 0; -- cgit v1.2.3 From 99600b4a0e483c41144d876742abc09a95ff985b Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Thu, 13 Dec 2018 13:44:25 -0800 Subject: Fix generated file test --- upb/json/parser.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'upb/json/parser.c') diff --git a/upb/json/parser.c b/upb/json/parser.c index 28d7d88..08056d3 100644 --- a/upb/json/parser.c +++ b/upb/json/parser.c @@ -2768,7 +2768,7 @@ _match: break; case 2: #line 2429 "upb/json/parser.rl" - { p--; {stack[top++] = cs; cs = 23; goto _again;} } + { p--; {stack[top++] = cs; cs = 23;goto _again;} } break; case 3: #line 2433 "upb/json/parser.rl" @@ -2842,17 +2842,17 @@ _match: #line 2488 "upb/json/parser.rl" { if (is_wellknown_msg(parser, UPB_WELLKNOWN_TIMESTAMP)) { - {stack[top++] = cs; cs = 47; goto _again;} + {stack[top++] = cs; cs = 47;goto _again;} } else if (is_wellknown_msg(parser, UPB_WELLKNOWN_DURATION)) { - {stack[top++] = cs; cs = 40; goto _again;} + {stack[top++] = cs; cs = 40;goto _again;} } else { - {stack[top++] = cs; cs = 32; goto _again;} + {stack[top++] = cs; cs = 32;goto _again;} } } break; case 21: #line 2499 "upb/json/parser.rl" - { p--; {stack[top++] = cs; cs = 75; goto _again;} } + { p--; {stack[top++] = cs; cs = 75;goto _again;} } break; case 22: #line 2504 "upb/json/parser.rl" @@ -2964,7 +2964,9 @@ _again: switch ( *__acts++ ) { case 0: #line 2425 "upb/json/parser.rl" - { p--; {cs = stack[--top]; goto _again;} } + { p--; {cs = stack[--top]; if ( p == pe ) + goto _test_eof; +goto _again;} } break; case 30: #line 2556 "upb/json/parser.rl" @@ -2986,7 +2988,7 @@ _again: #line 2568 "upb/json/parser.rl" { end_subobject_full(parser); } break; -#line 2990 "upb/json/parser.c" +#line 2992 "upb/json/parser.c" } } } @@ -3025,11 +3027,7 @@ static bool end(void *closure, const void *hd) { parse(parser, hd, &eof_ch, 0, NULL); - return parser->current_state >= -#line 3030 "upb/json/parser.c" -103 -#line 2631 "upb/json/parser.rl" -; + return parser->current_state >= 103; } static void json_parser_reset(upb_json_parser *p) { @@ -3046,7 +3044,7 @@ static void json_parser_reset(upb_json_parser *p) { /* Emit Ragel initialization of the parser. */ -#line 3050 "upb/json/parser.c" +#line 3048 "upb/json/parser.c" { cs = json_start; top = 0; -- cgit v1.2.3