diff options
author | Joshua Haberman <jhaberman@gmail.com> | 2014-12-12 15:22:55 -0800 |
---|---|---|
committer | Joshua Haberman <jhaberman@gmail.com> | 2014-12-12 15:22:55 -0800 |
commit | efffb86a5ceb7e5ca4c96b2061744958e455192e (patch) | |
tree | 2b51257e4b9cebfc3640d98cda45f9b8be36fdb2 /upb/json | |
parent | 56913be6bb57f81dbbf7baf9cc9a0a2cd1a36493 (diff) | |
parent | b3f6daf83d8adf0040a1bf9401342c811502f690 (diff) |
Merge pull request #8 from cfallin/master
Amalgamated distribution (upb.c/upb.h) tool.
Diffstat (limited to 'upb/json')
-rw-r--r-- | upb/json/parser.c | 99 | ||||
-rw-r--r-- | upb/json/parser.rl | 29 | ||||
-rw-r--r-- | upb/json/printer.c | 4 |
3 files changed, 67 insertions, 65 deletions
diff --git a/upb/json/parser.c b/upb/json/parser.c index 78fc6c0..fe2b586 100644 --- a/upb/json/parser.c +++ b/upb/json/parser.c @@ -33,7 +33,7 @@ #include "upb/json/parser.h" -#define CHECK_RETURN(x) if (!(x)) return false +#define PARSER_CHECK_RETURN(x) if (!(x)) return false static upb_selector_t getsel_for_handlertype(upb_json_parser *p, upb_handlertype_t type) { @@ -43,7 +43,7 @@ static upb_selector_t getsel_for_handlertype(upb_json_parser *p, return sel; } -static upb_selector_t getsel(upb_json_parser *p) { +static upb_selector_t parser_getsel(upb_json_parser *p) { return getsel_for_handlertype( p, upb_handlers_getprimitivehandlertype(p->top->f)); } @@ -153,7 +153,7 @@ static void end_array(upb_json_parser *p) { static void clear_member(upb_json_parser *p) { p->top->f = NULL; } -static bool putbool(upb_json_parser *p, bool val) { +static bool parser_putbool(upb_json_parser *p, bool val) { if (upb_fielddef_type(p->top->f) != UPB_TYPE_BOOL) { upb_status_seterrf(p->status, "Boolean value specified for non-bool field: %s", @@ -161,7 +161,7 @@ static bool putbool(upb_json_parser *p, bool val) { return false; } - bool ok = upb_sink_putbool(&p->top->sink, getsel(p), val); + bool ok = upb_sink_putbool(&p->top->sink, parser_getsel(p), val); UPB_ASSERT_VAR(ok, ok); return true; } @@ -297,7 +297,8 @@ static bool end_text(upb_json_parser *p, const char *ptr, bool is_num) { // This is a string field (as opposed to a member name). upb_selector_t sel = getsel_for_handlertype(p, UPB_HANDLER_STRING); if (upb_fielddef_type(p->top->f) == UPB_TYPE_BYTES) { - CHECK_RETURN(base64_push(p, sel, p->accumulated, p->accumulated_len)); + PARSER_CHECK_RETURN(base64_push(p, sel, p->accumulated, + p->accumulated_len)); } else { upb_sink_putstring(&p->top->sink, sel, p->accumulated, p->accumulated_len, NULL); } @@ -313,7 +314,7 @@ static bool end_text(upb_json_parser *p, const char *ptr, bool is_num) { int32_t int_val = 0; if (upb_enumdef_ntoi(enumdef, p->accumulated, p->accumulated_len, &int_val)) { - upb_selector_t sel = getsel(p); + upb_selector_t sel = parser_getsel(p); upb_sink_putint32(&p->top->sink, sel, int_val); } else { upb_status_seterrmsg(p->status, "Enum value name unknown"); @@ -379,7 +380,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > INT32_MAX || val < INT32_MIN || errno == ERANGE || end != myend) assert(false); else - upb_sink_putint32(&p->top->sink, getsel(p), val); + upb_sink_putint32(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_INT64: { @@ -387,7 +388,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > INT64_MAX || val < INT64_MIN || errno == ERANGE || end != myend) assert(false); else - upb_sink_putint64(&p->top->sink, getsel(p), val); + upb_sink_putint64(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_UINT32: { @@ -395,7 +396,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > UINT32_MAX || errno == ERANGE || end != myend) assert(false); else - upb_sink_putuint32(&p->top->sink, getsel(p), val); + upb_sink_putuint32(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_UINT64: { @@ -403,7 +404,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > UINT64_MAX || errno == ERANGE || end != myend) assert(false); else - upb_sink_putuint64(&p->top->sink, getsel(p), val); + upb_sink_putuint64(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_DOUBLE: { @@ -411,7 +412,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (errno == ERANGE || end != myend) assert(false); else - upb_sink_putdouble(&p->top->sink, getsel(p), val); + upb_sink_putdouble(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_FLOAT: { @@ -419,7 +420,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (errno == ERANGE || end != myend) assert(false); else - upb_sink_putfloat(&p->top->sink, getsel(p), val); + upb_sink_putfloat(&p->top->sink, parser_getsel(p), val); break; } default: @@ -505,11 +506,11 @@ static void hex(upb_json_parser *p, const char *end) { // What follows is the Ragel parser itself. The language is specified in Ragel // and the actions call our C functions above. -#line 595 "upb/json/parser.rl" +#line 596 "upb/json/parser.rl" -#line 513 "upb/json/parser.c" +#line 514 "upb/json/parser.c" static const char _json_actions[] = { 0, 1, 0, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, @@ -662,7 +663,7 @@ static const int json_en_value_machine = 27; static const int json_en_main = 1; -#line 598 "upb/json/parser.rl" +#line 599 "upb/json/parser.rl" size_t parse(void *closure, const void *hd, const char *buf, size_t size, const upb_bufhandle *handle) { @@ -679,7 +680,7 @@ size_t parse(void *closure, const void *hd, const char *buf, size_t size, const char *pe = buf + size; -#line 683 "upb/json/parser.c" +#line 684 "upb/json/parser.c" { int _klen; unsigned int _trans; @@ -754,114 +755,114 @@ _match: switch ( *_acts++ ) { case 0: -#line 516 "upb/json/parser.rl" +#line 517 "upb/json/parser.rl" { p--; {cs = stack[--top]; goto _again;} } break; case 1: -#line 517 "upb/json/parser.rl" +#line 518 "upb/json/parser.rl" { p--; {stack[top++] = cs; cs = 10; goto _again;} } break; case 2: -#line 521 "upb/json/parser.rl" +#line 522 "upb/json/parser.rl" { start_text(parser, p); } break; case 3: -#line 522 "upb/json/parser.rl" +#line 523 "upb/json/parser.rl" { CHECK_RETURN_TOP(end_text(parser, p, false)); } break; case 4: -#line 528 "upb/json/parser.rl" +#line 529 "upb/json/parser.rl" { start_hex(parser, p); } break; case 5: -#line 529 "upb/json/parser.rl" +#line 530 "upb/json/parser.rl" { hex(parser, p); } break; case 6: -#line 535 "upb/json/parser.rl" +#line 536 "upb/json/parser.rl" { escape(parser, p); } break; case 7: -#line 538 "upb/json/parser.rl" +#line 539 "upb/json/parser.rl" { {cs = stack[--top]; goto _again;} } break; case 8: -#line 539 "upb/json/parser.rl" +#line 540 "upb/json/parser.rl" { {stack[top++] = cs; cs = 19; goto _again;} } break; case 9: -#line 541 "upb/json/parser.rl" +#line 542 "upb/json/parser.rl" { p--; {stack[top++] = cs; cs = 27; goto _again;} } break; case 10: -#line 546 "upb/json/parser.rl" +#line 547 "upb/json/parser.rl" { start_member(parser); } break; case 11: -#line 547 "upb/json/parser.rl" +#line 548 "upb/json/parser.rl" { CHECK_RETURN_TOP(end_member(parser)); } break; case 12: -#line 550 "upb/json/parser.rl" +#line 551 "upb/json/parser.rl" { clear_member(parser); } break; case 13: -#line 556 "upb/json/parser.rl" +#line 557 "upb/json/parser.rl" { start_object(parser); } break; case 14: -#line 559 "upb/json/parser.rl" +#line 560 "upb/json/parser.rl" { end_object(parser); } break; case 15: -#line 565 "upb/json/parser.rl" +#line 566 "upb/json/parser.rl" { CHECK_RETURN_TOP(start_array(parser)); } break; case 16: -#line 569 "upb/json/parser.rl" +#line 570 "upb/json/parser.rl" { end_array(parser); } break; case 17: -#line 574 "upb/json/parser.rl" +#line 575 "upb/json/parser.rl" { start_number(parser, p); } break; case 18: -#line 575 "upb/json/parser.rl" +#line 576 "upb/json/parser.rl" { end_number(parser, p); } break; case 19: -#line 577 "upb/json/parser.rl" +#line 578 "upb/json/parser.rl" { CHECK_RETURN_TOP(start_stringval(parser)); } break; case 20: -#line 578 "upb/json/parser.rl" +#line 579 "upb/json/parser.rl" { end_stringval(parser); } break; case 21: -#line 580 "upb/json/parser.rl" - { CHECK_RETURN_TOP(putbool(parser, true)); } +#line 581 "upb/json/parser.rl" + { CHECK_RETURN_TOP(parser_putbool(parser, true)); } break; case 22: -#line 582 "upb/json/parser.rl" - { CHECK_RETURN_TOP(putbool(parser, false)); } +#line 583 "upb/json/parser.rl" + { CHECK_RETURN_TOP(parser_putbool(parser, false)); } break; case 23: -#line 584 "upb/json/parser.rl" +#line 585 "upb/json/parser.rl" { /* null value */ } break; case 24: -#line 586 "upb/json/parser.rl" +#line 587 "upb/json/parser.rl" { CHECK_RETURN_TOP(start_subobject(parser)); } break; case 25: -#line 587 "upb/json/parser.rl" +#line 588 "upb/json/parser.rl" { end_subobject(parser); } break; case 26: -#line 592 "upb/json/parser.rl" +#line 593 "upb/json/parser.rl" { p--; {cs = stack[--top]; goto _again;} } break; -#line 865 "upb/json/parser.c" +#line 866 "upb/json/parser.c" } } @@ -874,7 +875,7 @@ _again: _out: {} } -#line 614 "upb/json/parser.rl" +#line 615 "upb/json/parser.rl" if (p != pe) { upb_status_seterrf(parser->status, "Parse error at %s\n", p); @@ -915,13 +916,13 @@ void upb_json_parser_reset(upb_json_parser *p) { int top; // Emit Ragel initialization of the parser. -#line 919 "upb/json/parser.c" +#line 920 "upb/json/parser.c" { cs = json_start; top = 0; } -#line 654 "upb/json/parser.rl" +#line 655 "upb/json/parser.rl" p->current_state = cs; p->parser_top = top; p->text_begin = NULL; diff --git a/upb/json/parser.rl b/upb/json/parser.rl index 8ceca77..abc76c8 100644 --- a/upb/json/parser.rl +++ b/upb/json/parser.rl @@ -31,7 +31,7 @@ #include "upb/json/parser.h" -#define CHECK_RETURN(x) if (!(x)) return false +#define PARSER_CHECK_RETURN(x) if (!(x)) return false static upb_selector_t getsel_for_handlertype(upb_json_parser *p, upb_handlertype_t type) { @@ -41,7 +41,7 @@ static upb_selector_t getsel_for_handlertype(upb_json_parser *p, return sel; } -static upb_selector_t getsel(upb_json_parser *p) { +static upb_selector_t parser_getsel(upb_json_parser *p) { return getsel_for_handlertype( p, upb_handlers_getprimitivehandlertype(p->top->f)); } @@ -151,7 +151,7 @@ static void end_array(upb_json_parser *p) { static void clear_member(upb_json_parser *p) { p->top->f = NULL; } -static bool putbool(upb_json_parser *p, bool val) { +static bool parser_putbool(upb_json_parser *p, bool val) { if (upb_fielddef_type(p->top->f) != UPB_TYPE_BOOL) { upb_status_seterrf(p->status, "Boolean value specified for non-bool field: %s", @@ -159,7 +159,7 @@ static bool putbool(upb_json_parser *p, bool val) { return false; } - bool ok = upb_sink_putbool(&p->top->sink, getsel(p), val); + bool ok = upb_sink_putbool(&p->top->sink, parser_getsel(p), val); UPB_ASSERT_VAR(ok, ok); return true; } @@ -295,7 +295,8 @@ static bool end_text(upb_json_parser *p, const char *ptr, bool is_num) { // This is a string field (as opposed to a member name). upb_selector_t sel = getsel_for_handlertype(p, UPB_HANDLER_STRING); if (upb_fielddef_type(p->top->f) == UPB_TYPE_BYTES) { - CHECK_RETURN(base64_push(p, sel, p->accumulated, p->accumulated_len)); + PARSER_CHECK_RETURN(base64_push(p, sel, p->accumulated, + p->accumulated_len)); } else { upb_sink_putstring(&p->top->sink, sel, p->accumulated, p->accumulated_len, NULL); } @@ -311,7 +312,7 @@ static bool end_text(upb_json_parser *p, const char *ptr, bool is_num) { int32_t int_val = 0; if (upb_enumdef_ntoi(enumdef, p->accumulated, p->accumulated_len, &int_val)) { - upb_selector_t sel = getsel(p); + upb_selector_t sel = parser_getsel(p); upb_sink_putint32(&p->top->sink, sel, int_val); } else { upb_status_seterrmsg(p->status, "Enum value name unknown"); @@ -377,7 +378,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > INT32_MAX || val < INT32_MIN || errno == ERANGE || end != myend) assert(false); else - upb_sink_putint32(&p->top->sink, getsel(p), val); + upb_sink_putint32(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_INT64: { @@ -385,7 +386,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > INT64_MAX || val < INT64_MIN || errno == ERANGE || end != myend) assert(false); else - upb_sink_putint64(&p->top->sink, getsel(p), val); + upb_sink_putint64(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_UINT32: { @@ -393,7 +394,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > UINT32_MAX || errno == ERANGE || end != myend) assert(false); else - upb_sink_putuint32(&p->top->sink, getsel(p), val); + upb_sink_putuint32(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_UINT64: { @@ -401,7 +402,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (val > UINT64_MAX || errno == ERANGE || end != myend) assert(false); else - upb_sink_putuint64(&p->top->sink, getsel(p), val); + upb_sink_putuint64(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_DOUBLE: { @@ -409,7 +410,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (errno == ERANGE || end != myend) assert(false); else - upb_sink_putdouble(&p->top->sink, getsel(p), val); + upb_sink_putdouble(&p->top->sink, parser_getsel(p), val); break; } case UPB_TYPE_FLOAT: { @@ -417,7 +418,7 @@ static void end_number(upb_json_parser *p, const char *ptr) { if (errno == ERANGE || end != myend) assert(false); else - upb_sink_putfloat(&p->top->sink, getsel(p), val); + upb_sink_putfloat(&p->top->sink, parser_getsel(p), val); break; } default: @@ -577,9 +578,9 @@ static void hex(upb_json_parser *p, const char *end) { >{ CHECK_RETURN_TOP(start_stringval(parser)); } %{ end_stringval(parser); } | "true" - %{ CHECK_RETURN_TOP(putbool(parser, true)); } + %{ CHECK_RETURN_TOP(parser_putbool(parser, true)); } | "false" - %{ CHECK_RETURN_TOP(putbool(parser, false)); } + %{ CHECK_RETURN_TOP(parser_putbool(parser, false)); } | "null" %{ /* null value */ } | object diff --git a/upb/json/printer.c b/upb/json/printer.c index 28f3e4a..b996ccf 100644 --- a/upb/json/printer.c +++ b/upb/json/printer.c @@ -421,7 +421,7 @@ static size_t repeated_bytes(void *closure, const void *handler_data, return len; } -void sethandlers(const void *closure, upb_handlers *h) { +void printer_sethandlers(const void *closure, upb_handlers *h) { UPB_UNUSED(closure); upb_handlerattr empty_attr = UPB_HANDLERATTR_INITIALIZER; @@ -541,5 +541,5 @@ upb_sink *upb_json_printer_input(upb_json_printer *p) { const upb_handlers *upb_json_printer_newhandlers(const upb_msgdef *md, const void *owner) { - return upb_handlers_newfrozen(md, owner, sethandlers, NULL); + return upb_handlers_newfrozen(md, owner, printer_sethandlers, NULL); } |