0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2025-03-16 22:41:46 +01:00

ircd::json: Add branch condition for number value to eliminate calls.

This commit is contained in:
Jason Volk 2020-09-27 15:26:15 -07:00
parent 2b86a4cbb8
commit 1276717be3

View file

@ -104,6 +104,12 @@ ircd::json::parser
,"number"
};
const rule<> number_begin
{
char_("0-9-")
,"first character of number"
};
// string
const rule<> utf16_surrogate
{
@ -211,7 +217,7 @@ ircd::json::parser
(&quote >> string)
| (&object_begin >> object(depth + 1))
| (&array_begin >> array(depth + 1))
| number
| (&number_begin >> number)
| lit_true
| lit_false
| lit_null
@ -233,7 +239,7 @@ ircd::json::parser
value %= (&quote >> string)
| (&object_begin >> object(depth + 1))
| (&array_begin >> array(depth + 1))
| number
| (&number_begin >> number)
| lit_true
| lit_false
| lit_null
@ -4814,11 +4820,11 @@ namespace ircd::json
decltype(ircd::json::type_parse_is)
ircd::json::type_parse_is
{
{ -parser.ws >> parser.quote },
{ -parser.ws >> parser.object_begin },
{ -parser.ws >> parser.array_begin },
{ -parser.ws >> parser.number >> -parser.ws >> eoi },
{ -parser.ws >> parser.literal >> -parser.ws >> eoi },
{ -parser.ws >> parser.quote },
{ -parser.ws >> parser.object_begin },
{ -parser.ws >> parser.array_begin },
{ -parser.ws >> parser.number_begin },
{ -parser.ws >> parser.literal >> -parser.ws >> eoi },
};
//TODO: XXX array designated initializers
@ -4828,7 +4834,7 @@ ircd::json::type_parse_is_strict
{ -parser.ws >> &parser.quote >> parser.string >> -parser.ws >> eoi },
{ -parser.ws >> &parser.object_begin >> parser.object(0) >> -parser.ws >> eoi },
{ -parser.ws >> &parser.array_begin >> parser.array(0) >> -parser.ws >> eoi },
{ -parser.ws >> parser.number >> -parser.ws >> eoi },
{ -parser.ws >> &parser.number_begin >> parser.number >> -parser.ws >> eoi },
{ -parser.ws >> parser.literal >> -parser.ws >> eoi },
};