Commit 76a5a776 by Niels

cleanup after #234

parent 6f0053a2
...@@ -66,7 +66,7 @@ cppcheck: ...@@ -66,7 +66,7 @@ cppcheck:
# create scanner with re2c # create scanner with re2c
re2c: src/json.hpp.re2c re2c: src/json.hpp.re2c
$(RE2C) -b -s -i --no-generation-date $< | $(SED) '1d' > src/json.hpp $(RE2C) --bit-vectors --nested-ifs --no-debug-info $< | $(SED) '1d' > src/json.hpp
# pretty printer # pretty printer
pretty: pretty:
...@@ -74,7 +74,7 @@ pretty: ...@@ -74,7 +74,7 @@ pretty:
--indent-switches --indent-preproc-block --indent-preproc-define \ --indent-switches --indent-preproc-block --indent-preproc-define \
--indent-col1-comments --pad-oper --pad-header --align-pointer=type \ --indent-col1-comments --pad-oper --pad-header --align-pointer=type \
--align-reference=type --add-brackets --convert-tabs --close-templates \ --align-reference=type --add-brackets --convert-tabs --close-templates \
--lineend=linux --preserve-date --suffix=none \ --lineend=linux --preserve-date --suffix=none --formatted \
src/json.hpp src/json.hpp.re2c test/unit.cpp test/fuzz.cpp benchmarks/benchmarks.cpp doc/examples/*.cpp src/json.hpp src/json.hpp.re2c test/unit.cpp test/fuzz.cpp benchmarks/benchmarks.cpp doc/examples/*.cpp
......
...@@ -410,6 +410,7 @@ I deeply appreciate the help of the following people. ...@@ -410,6 +410,7 @@ I deeply appreciate the help of the following people.
- [Lv Zheng](https://github.com/lv-zheng) fixed a namespace issue with `int64_t` and `uint64_t`. - [Lv Zheng](https://github.com/lv-zheng) fixed a namespace issue with `int64_t` and `uint64_t`.
- [abc100m](https://github.com/abc100m) analyzed the issues with GCC 4.8 and proposed a [partial solution](https://github.com/nlohmann/json/pull/212). - [abc100m](https://github.com/abc100m) analyzed the issues with GCC 4.8 and proposed a [partial solution](https://github.com/nlohmann/json/pull/212).
- [zewt](https://github.com/zewt) added useful notes to the README file about Android. - [zewt](https://github.com/zewt) added useful notes to the README file about Android.
- [Róbert Márki](https://github.com/robertmrk) added a fix to use move iterators.
Thanks a lot for helping out! Thanks a lot for helping out!
...@@ -427,7 +428,7 @@ $ make ...@@ -427,7 +428,7 @@ $ make
$ ./json_unit "*" $ ./json_unit "*"
=============================================================================== ===============================================================================
All tests passed (3344278 assertions in 29 test cases) All tests passed (3344299 assertions in 29 test cases)
``` ```
For more information, have a look at the file [.travis.yml](https://github.com/nlohmann/json/blob/master/.travis.yml). For more information, have a look at the file [.travis.yml](https://github.com/nlohmann/json/blob/master/.travis.yml).
...@@ -7416,322 +7416,323 @@ class basic_json ...@@ -7416,322 +7416,323 @@ class basic_json
{ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 32, 32, 0, 0, 32, 0, 0, 0, 32, 32, 0, 0, 32, 0, 0,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
96, 64, 0, 64, 64, 64, 64, 64, 160, 128, 0, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
192, 192, 64, 64, 64, 64, 64, 64, 192, 192, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 0, 64, 64, 64, 128, 128, 128, 128, 0, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
64, 64, 64, 64, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128,
}; };
if ((m_limit - m_cursor) < 5) if ((m_limit - m_cursor) < 5)
{ {
yyfill(); // LCOV_EXCL_LINE; yyfill(); // LCOV_EXCL_LINE;
} }
yych = *m_cursor; yych = *m_cursor;
if (yych <= ':') if (yybm[0 + yych] & 32)
{
goto basic_json_parser_6;
}
if (yych <= '\\')
{ {
if (yych <= ' ') if (yych <= '-')
{ {
if (yych <= '\n') if (yych <= '"')
{ {
if (yych <= 0x00) if (yych <= 0x00)
{ {
goto basic_json_parser_28; goto basic_json_parser_2;
}
if (yych <= 0x08)
{
goto basic_json_parser_30;
} }
if (yych >= '\n') if (yych <= '!')
{ {
goto basic_json_parser_4; goto basic_json_parser_4;
} }
goto basic_json_parser_9;
} }
else else
{ {
if (yych == '\r') if (yych <= '+')
{ {
goto basic_json_parser_2; goto basic_json_parser_4;
} }
if (yych <= 0x1F) if (yych <= ',')
{ {
goto basic_json_parser_30; goto basic_json_parser_10;
} }
goto basic_json_parser_12;
} }
} }
else else
{ {
if (yych <= ',') if (yych <= '9')
{ {
if (yych == '"') if (yych <= '/')
{ {
goto basic_json_parser_27; goto basic_json_parser_4;
} }
if (yych <= '+') if (yych <= '0')
{ {
goto basic_json_parser_30; goto basic_json_parser_13;
} }
goto basic_json_parser_16; goto basic_json_parser_15;
} }
else else
{ {
if (yych <= '/') if (yych <= ':')
{ {
if (yych <= '-') goto basic_json_parser_17;
{
goto basic_json_parser_23;
}
goto basic_json_parser_30;
} }
else if (yych == '[')
{ {
if (yych <= '0') goto basic_json_parser_19;
{
goto basic_json_parser_24;
}
if (yych <= '9')
{
goto basic_json_parser_26;
}
goto basic_json_parser_18;
} }
goto basic_json_parser_4;
} }
} }
} }
else else
{ {
if (yych <= 'n') if (yych <= 't')
{ {
if (yych <= ']') if (yych <= 'f')
{ {
if (yych == '[') if (yych <= ']')
{ {
goto basic_json_parser_8; goto basic_json_parser_21;
} }
if (yych <= '\\') if (yych <= 'e')
{ {
goto basic_json_parser_30; goto basic_json_parser_4;
} }
goto basic_json_parser_10; goto basic_json_parser_23;
} }
else else
{ {
if (yych == 'f') if (yych == 'n')
{ {
goto basic_json_parser_22; goto basic_json_parser_24;
} }
if (yych <= 'm') if (yych <= 's')
{ {
goto basic_json_parser_30; goto basic_json_parser_4;
} }
goto basic_json_parser_20; goto basic_json_parser_25;
} }
} }
else else
{ {
if (yych <= '{') if (yych <= '|')
{ {
if (yych == 't') if (yych == '{')
{ {
goto basic_json_parser_21; goto basic_json_parser_26;
} }
if (yych <= 'z') goto basic_json_parser_4;
{
goto basic_json_parser_30;
}
goto basic_json_parser_12;
} }
else else
{ {
if (yych <= '}') if (yych <= '}')
{ {
if (yych <= '|') goto basic_json_parser_28;
{
goto basic_json_parser_30;
}
goto basic_json_parser_14;
} }
else if (yych == 0xEF)
{ {
if (yych == 0xEF)
{
goto basic_json_parser_6;
}
goto basic_json_parser_30; goto basic_json_parser_30;
} }
goto basic_json_parser_4;
} }
} }
} }
basic_json_parser_2: basic_json_parser_2:
++m_cursor; ++m_cursor;
yych = *m_cursor;
goto basic_json_parser_5;
basic_json_parser_3:
{ {
return scan(); return token_type::end_of_input;
} }
basic_json_parser_4: basic_json_parser_4:
++m_cursor; ++m_cursor;
basic_json_parser_5:
{
return token_type::parse_error;
}
basic_json_parser_6:
++m_cursor;
if (m_limit <= m_cursor) if (m_limit <= m_cursor)
{ {
yyfill(); // LCOV_EXCL_LINE; yyfill(); // LCOV_EXCL_LINE;
} }
yych = *m_cursor; yych = *m_cursor;
basic_json_parser_5:
if (yybm[0 + yych] & 32) if (yybm[0 + yych] & 32)
{ {
goto basic_json_parser_4; goto basic_json_parser_6;
}
goto basic_json_parser_3;
basic_json_parser_6:
yyaccept = 0;
yych = *(m_marker = ++m_cursor);
if (yych == 0xBB)
{
goto basic_json_parser_64;
} }
basic_json_parser_7:
{ {
return token_type::parse_error; return scan();
} }
basic_json_parser_8: basic_json_parser_9:
++m_cursor; yyaccept = 0;
yych = *(m_marker = ++m_cursor);
if (yych <= 0x0F)
{ {
return token_type::begin_array; goto basic_json_parser_5;
} }
goto basic_json_parser_32;
basic_json_parser_10: basic_json_parser_10:
++m_cursor; ++m_cursor;
{ {
return token_type::end_array; return token_type::value_separator;
} }
basic_json_parser_12: basic_json_parser_12:
++m_cursor; yych = *++m_cursor;
{ if (yych <= '/')
return token_type::begin_object;
}
basic_json_parser_14:
++m_cursor;
{
return token_type::end_object;
}
basic_json_parser_16:
++m_cursor;
{ {
return token_type::value_separator; goto basic_json_parser_5;
} }
basic_json_parser_18: if (yych <= '0')
++m_cursor;
{ {
return token_type::name_separator; goto basic_json_parser_13;
} }
basic_json_parser_20: if (yych <= '9')
yyaccept = 0;
yych = *(m_marker = ++m_cursor);
if (yych == 'u')
{ {
goto basic_json_parser_60; goto basic_json_parser_15;
} }
goto basic_json_parser_7; goto basic_json_parser_5;
basic_json_parser_21: basic_json_parser_13:
yyaccept = 0; yyaccept = 1;
yych = *(m_marker = ++m_cursor); yych = *(m_marker = ++m_cursor);
if (yych == 'r') if (yych <= 'D')
{ {
goto basic_json_parser_56; if (yych == '.')
{
goto basic_json_parser_37;
}
} }
goto basic_json_parser_7; else
basic_json_parser_22:
yyaccept = 0;
yych = *(m_marker = ++m_cursor);
if (yych == 'a')
{ {
goto basic_json_parser_51; if (yych <= 'E')
{
goto basic_json_parser_38;
}
if (yych == 'e')
{
goto basic_json_parser_38;
}
} }
goto basic_json_parser_7; basic_json_parser_14:
basic_json_parser_23:
yych = *++m_cursor;
if (yych <= '/')
{ {
goto basic_json_parser_7; return token_type::value_number;
} }
if (yych <= '0') basic_json_parser_15:
yyaccept = 1;
m_marker = ++m_cursor;
if ((m_limit - m_cursor) < 3)
{ {
goto basic_json_parser_50; yyfill(); // LCOV_EXCL_LINE;
} }
if (yych <= '9') yych = *m_cursor;
if (yybm[0 + yych] & 64)
{ {
goto basic_json_parser_41; goto basic_json_parser_15;
} }
goto basic_json_parser_7;
basic_json_parser_24:
yyaccept = 1;
yych = *(m_marker = ++m_cursor);
if (yych <= 'D') if (yych <= 'D')
{ {
if (yych == '.') if (yych == '.')
{ {
goto basic_json_parser_43; goto basic_json_parser_37;
} }
goto basic_json_parser_14;
} }
else else
{ {
if (yych <= 'E') if (yych <= 'E')
{ {
goto basic_json_parser_44; goto basic_json_parser_38;
} }
if (yych == 'e') if (yych == 'e')
{ {
goto basic_json_parser_44; goto basic_json_parser_38;
} }
goto basic_json_parser_14;
} }
basic_json_parser_25: basic_json_parser_17:
++m_cursor;
{ {
return token_type::value_number; return token_type::name_separator;
} }
basic_json_parser_26: basic_json_parser_19:
yyaccept = 1; ++m_cursor;
{
return token_type::begin_array;
}
basic_json_parser_21:
++m_cursor;
{
return token_type::end_array;
}
basic_json_parser_23:
yyaccept = 0;
yych = *(m_marker = ++m_cursor); yych = *(m_marker = ++m_cursor);
goto basic_json_parser_42; if (yych == 'a')
basic_json_parser_27: {
goto basic_json_parser_39;
}
goto basic_json_parser_5;
basic_json_parser_24:
yyaccept = 0; yyaccept = 0;
yych = *(m_marker = ++m_cursor); yych = *(m_marker = ++m_cursor);
if (yych <= 0x0F) if (yych == 'u')
{ {
goto basic_json_parser_7; goto basic_json_parser_40;
}
goto basic_json_parser_5;
basic_json_parser_25:
yyaccept = 0;
yych = *(m_marker = ++m_cursor);
if (yych == 'r')
{
goto basic_json_parser_41;
}
goto basic_json_parser_5;
basic_json_parser_26:
++m_cursor;
{
return token_type::begin_object;
} }
goto basic_json_parser_32;
basic_json_parser_28: basic_json_parser_28:
++m_cursor; ++m_cursor;
{ {
return token_type::end_of_input; return token_type::end_object;
} }
basic_json_parser_30: basic_json_parser_30:
yych = *++m_cursor; yyaccept = 0;
goto basic_json_parser_7; yych = *(m_marker = ++m_cursor);
if (yych == 0xBB)
{
goto basic_json_parser_42;
}
goto basic_json_parser_5;
basic_json_parser_31: basic_json_parser_31:
++m_cursor; ++m_cursor;
if (m_limit <= m_cursor) if (m_limit <= m_cursor)
...@@ -7740,7 +7741,7 @@ basic_json_parser_31: ...@@ -7740,7 +7741,7 @@ basic_json_parser_31:
} }
yych = *m_cursor; yych = *m_cursor;
basic_json_parser_32: basic_json_parser_32:
if (yybm[0 + yych] & 64) if (yybm[0 + yych] & 128)
{ {
goto basic_json_parser_31; goto basic_json_parser_31;
} }
...@@ -7750,21 +7751,26 @@ basic_json_parser_32: ...@@ -7750,21 +7751,26 @@ basic_json_parser_32:
} }
if (yych <= '"') if (yych <= '"')
{ {
goto basic_json_parser_35; goto basic_json_parser_34;
} }
goto basic_json_parser_34; goto basic_json_parser_36;
basic_json_parser_33: basic_json_parser_33:
m_cursor = m_marker; m_cursor = m_marker;
if (yyaccept == 0) if (yyaccept == 0)
{ {
goto basic_json_parser_7; goto basic_json_parser_5;
} }
else else
{ {
goto basic_json_parser_25; goto basic_json_parser_14;
} }
basic_json_parser_34: basic_json_parser_34:
++m_cursor; ++m_cursor;
{
return token_type::value_string;
}
basic_json_parser_36:
++m_cursor;
if (m_limit <= m_cursor) if (m_limit <= m_cursor)
{ {
yyfill(); // LCOV_EXCL_LINE; yyfill(); // LCOV_EXCL_LINE;
...@@ -7836,117 +7842,78 @@ basic_json_parser_34: ...@@ -7836,117 +7842,78 @@ basic_json_parser_34:
} }
if (yych <= 'u') if (yych <= 'u')
{ {
goto basic_json_parser_37; goto basic_json_parser_43;
} }
goto basic_json_parser_33; goto basic_json_parser_33;
} }
} }
} }
basic_json_parser_35:
++m_cursor;
{
return token_type::value_string;
}
basic_json_parser_37: basic_json_parser_37:
++m_cursor; yych = *++m_cursor;
if (m_limit <= m_cursor) if (yych <= '/')
{
yyfill(); // LCOV_EXCL_LINE;
}
yych = *m_cursor;
if (yych <= '@')
{ {
if (yych <= '/') goto basic_json_parser_33;
{
goto basic_json_parser_33;
}
if (yych >= ':')
{
goto basic_json_parser_33;
}
} }
else if (yych <= '9')
{ {
if (yych <= 'F') goto basic_json_parser_44;
{
goto basic_json_parser_38;
}
if (yych <= '`')
{
goto basic_json_parser_33;
}
if (yych >= 'g')
{
goto basic_json_parser_33;
}
} }
goto basic_json_parser_33;
basic_json_parser_38: basic_json_parser_38:
++m_cursor; yych = *++m_cursor;
if (m_limit <= m_cursor) if (yych <= ',')
{
yyfill(); // LCOV_EXCL_LINE;
}
yych = *m_cursor;
if (yych <= '@')
{ {
if (yych <= '/') if (yych == '+')
{
goto basic_json_parser_33;
}
if (yych >= ':')
{ {
goto basic_json_parser_33; goto basic_json_parser_46;
} }
goto basic_json_parser_33;
} }
else else
{ {
if (yych <= 'F') if (yych <= '-')
{ {
goto basic_json_parser_39; goto basic_json_parser_46;
} }
if (yych <= '`') if (yych <= '/')
{ {
goto basic_json_parser_33; goto basic_json_parser_33;
} }
if (yych >= 'g') if (yych <= '9')
{ {
goto basic_json_parser_33; goto basic_json_parser_47;
} }
goto basic_json_parser_33;
} }
basic_json_parser_39: basic_json_parser_39:
++m_cursor; yych = *++m_cursor;
if (m_limit <= m_cursor) if (yych == 'l')
{ {
yyfill(); // LCOV_EXCL_LINE; goto basic_json_parser_49;
} }
yych = *m_cursor; goto basic_json_parser_33;
if (yych <= '@') basic_json_parser_40:
yych = *++m_cursor;
if (yych == 'l')
{ {
if (yych <= '/') goto basic_json_parser_50;
{
goto basic_json_parser_33;
}
if (yych >= ':')
{
goto basic_json_parser_33;
}
} }
else goto basic_json_parser_33;
basic_json_parser_41:
yych = *++m_cursor;
if (yych == 'u')
{ {
if (yych <= 'F') goto basic_json_parser_51;
{
goto basic_json_parser_40;
}
if (yych <= '`')
{
goto basic_json_parser_33;
}
if (yych >= 'g')
{
goto basic_json_parser_33;
}
} }
basic_json_parser_40: goto basic_json_parser_33;
basic_json_parser_42:
yych = *++m_cursor;
if (yych == 0xBF)
{
goto basic_json_parser_52;
}
goto basic_json_parser_33;
basic_json_parser_43:
++m_cursor; ++m_cursor;
if (m_limit <= m_cursor) if (m_limit <= m_cursor)
{ {
...@@ -7961,7 +7928,7 @@ basic_json_parser_40: ...@@ -7961,7 +7928,7 @@ basic_json_parser_40:
} }
if (yych <= '9') if (yych <= '9')
{ {
goto basic_json_parser_31; goto basic_json_parser_54;
} }
goto basic_json_parser_33; goto basic_json_parser_33;
} }
...@@ -7969,7 +7936,7 @@ basic_json_parser_40: ...@@ -7969,7 +7936,7 @@ basic_json_parser_40:
{ {
if (yych <= 'F') if (yych <= 'F')
{ {
goto basic_json_parser_31; goto basic_json_parser_54;
} }
if (yych <= '`') if (yych <= '`')
{ {
...@@ -7977,11 +7944,11 @@ basic_json_parser_40: ...@@ -7977,11 +7944,11 @@ basic_json_parser_40:
} }
if (yych <= 'f') if (yych <= 'f')
{ {
goto basic_json_parser_31; goto basic_json_parser_54;
} }
goto basic_json_parser_33; goto basic_json_parser_33;
} }
basic_json_parser_41: basic_json_parser_44:
yyaccept = 1; yyaccept = 1;
m_marker = ++m_cursor; m_marker = ++m_cursor;
if ((m_limit - m_cursor) < 3) if ((m_limit - m_cursor) < 3)
...@@ -7989,67 +7956,31 @@ basic_json_parser_41: ...@@ -7989,67 +7956,31 @@ basic_json_parser_41:
yyfill(); // LCOV_EXCL_LINE; yyfill(); // LCOV_EXCL_LINE;
} }
yych = *m_cursor; yych = *m_cursor;
basic_json_parser_42:
if (yybm[0 + yych] & 128)
{
goto basic_json_parser_41;
}
if (yych <= 'D') if (yych <= 'D')
{ {
if (yych != '.') if (yych <= '/')
{
goto basic_json_parser_25;
}
}
else
{
if (yych <= 'E')
{ {
goto basic_json_parser_44; goto basic_json_parser_14;
} }
if (yych == 'e') if (yych <= '9')
{ {
goto basic_json_parser_44; goto basic_json_parser_44;
} }
goto basic_json_parser_25; goto basic_json_parser_14;
}
basic_json_parser_43:
yych = *++m_cursor;
if (yych <= '/')
{
goto basic_json_parser_33;
}
if (yych <= '9')
{
goto basic_json_parser_48;
}
goto basic_json_parser_33;
basic_json_parser_44:
yych = *++m_cursor;
if (yych <= ',')
{
if (yych != '+')
{
goto basic_json_parser_33;
}
} }
else else
{ {
if (yych <= '-') if (yych <= 'E')
{
goto basic_json_parser_45;
}
if (yych <= '/')
{ {
goto basic_json_parser_33; goto basic_json_parser_38;
} }
if (yych <= '9') if (yych == 'e')
{ {
goto basic_json_parser_46; goto basic_json_parser_38;
} }
goto basic_json_parser_33; goto basic_json_parser_14;
} }
basic_json_parser_45: basic_json_parser_46:
yych = *++m_cursor; yych = *++m_cursor;
if (yych <= '/') if (yych <= '/')
{ {
...@@ -8059,7 +7990,7 @@ basic_json_parser_45: ...@@ -8059,7 +7990,7 @@ basic_json_parser_45:
{ {
goto basic_json_parser_33; goto basic_json_parser_33;
} }
basic_json_parser_46: basic_json_parser_47:
++m_cursor; ++m_cursor;
if (m_limit <= m_cursor) if (m_limit <= m_cursor)
{ {
...@@ -8068,127 +7999,165 @@ basic_json_parser_46: ...@@ -8068,127 +7999,165 @@ basic_json_parser_46:
yych = *m_cursor; yych = *m_cursor;
if (yych <= '/') if (yych <= '/')
{ {
goto basic_json_parser_25; goto basic_json_parser_14;
} }
if (yych <= '9') if (yych <= '9')
{ {
goto basic_json_parser_46; goto basic_json_parser_47;
} }
goto basic_json_parser_25; goto basic_json_parser_14;
basic_json_parser_48: basic_json_parser_49:
yyaccept = 1; yych = *++m_cursor;
m_marker = ++m_cursor; if (yych == 's')
if ((m_limit - m_cursor) < 3) {
goto basic_json_parser_55;
}
goto basic_json_parser_33;
basic_json_parser_50:
yych = *++m_cursor;
if (yych == 'l')
{
goto basic_json_parser_56;
}
goto basic_json_parser_33;
basic_json_parser_51:
yych = *++m_cursor;
if (yych == 'e')
{
goto basic_json_parser_58;
}
goto basic_json_parser_33;
basic_json_parser_52:
++m_cursor;
{
return scan();
}
basic_json_parser_54:
++m_cursor;
if (m_limit <= m_cursor)
{ {
yyfill(); // LCOV_EXCL_LINE; yyfill(); // LCOV_EXCL_LINE;
} }
yych = *m_cursor; yych = *m_cursor;
if (yych <= 'D') if (yych <= '@')
{ {
if (yych <= '/') if (yych <= '/')
{ {
goto basic_json_parser_25; goto basic_json_parser_33;
} }
if (yych <= '9') if (yych <= '9')
{ {
goto basic_json_parser_48; goto basic_json_parser_60;
} }
goto basic_json_parser_25; goto basic_json_parser_33;
} }
else else
{ {
if (yych <= 'E') if (yych <= 'F')
{
goto basic_json_parser_44;
}
if (yych == 'e')
{
goto basic_json_parser_44;
}
goto basic_json_parser_25;
}
basic_json_parser_50:
yyaccept = 1;
yych = *(m_marker = ++m_cursor);
if (yych <= 'D')
{
if (yych == '.')
{ {
goto basic_json_parser_43; goto basic_json_parser_60;
} }
goto basic_json_parser_25; if (yych <= '`')
}
else
{
if (yych <= 'E')
{ {
goto basic_json_parser_44; goto basic_json_parser_33;
} }
if (yych == 'e') if (yych <= 'f')
{ {
goto basic_json_parser_44; goto basic_json_parser_60;
} }
goto basic_json_parser_25;
}
basic_json_parser_51:
yych = *++m_cursor;
if (yych != 'l')
{
goto basic_json_parser_33; goto basic_json_parser_33;
} }
basic_json_parser_55:
yych = *++m_cursor; yych = *++m_cursor;
if (yych != 's') if (yych == 'e')
{ {
goto basic_json_parser_33; goto basic_json_parser_61;
} }
yych = *++m_cursor; goto basic_json_parser_33;
if (yych != 'e') basic_json_parser_56:
++m_cursor;
{ {
goto basic_json_parser_33; return token_type::literal_null;
} }
basic_json_parser_58:
++m_cursor; ++m_cursor;
{ {
return token_type::literal_false; return token_type::literal_true;
} }
basic_json_parser_56: basic_json_parser_60:
yych = *++m_cursor; ++m_cursor;
if (yych != 'u') if (m_limit <= m_cursor)
{ {
goto basic_json_parser_33; yyfill(); // LCOV_EXCL_LINE;
} }
yych = *++m_cursor; yych = *m_cursor;
if (yych != 'e') if (yych <= '@')
{ {
if (yych <= '/')
{
goto basic_json_parser_33;
}
if (yych <= '9')
{
goto basic_json_parser_63;
}
goto basic_json_parser_33; goto basic_json_parser_33;
} }
++m_cursor; else
{
return token_type::literal_true;
}
basic_json_parser_60:
yych = *++m_cursor;
if (yych != 'l')
{ {
if (yych <= 'F')
{
goto basic_json_parser_63;
}
if (yych <= '`')
{
goto basic_json_parser_33;
}
if (yych <= 'f')
{
goto basic_json_parser_63;
}
goto basic_json_parser_33; goto basic_json_parser_33;
} }
yych = *++m_cursor; basic_json_parser_61:
if (yych != 'l') ++m_cursor;
{ {
goto basic_json_parser_33; return token_type::literal_false;
} }
basic_json_parser_63:
++m_cursor; ++m_cursor;
if (m_limit <= m_cursor)
{ {
return token_type::literal_null; yyfill(); // LCOV_EXCL_LINE;
} }
basic_json_parser_64: yych = *m_cursor;
yych = *++m_cursor; if (yych <= '@')
if (yych != 0xBF)
{ {
if (yych <= '/')
{
goto basic_json_parser_33;
}
if (yych <= '9')
{
goto basic_json_parser_31;
}
goto basic_json_parser_33; goto basic_json_parser_33;
} }
++m_cursor; else
{ {
return scan(); if (yych <= 'F')
{
goto basic_json_parser_31;
}
if (yych <= '`')
{
goto basic_json_parser_33;
}
if (yych <= 'f')
{
goto basic_json_parser_31;
}
goto basic_json_parser_33;
} }
} }
......
...@@ -12410,7 +12410,7 @@ TEST_CASE("regression tests") ...@@ -12410,7 +12410,7 @@ TEST_CASE("regression tests")
SECTION("issue #233 - Can't use basic_json::iterator as a base iterator for std::move_iterator") SECTION("issue #233 - Can't use basic_json::iterator as a base iterator for std::move_iterator")
{ {
json source = {"a", "b", "c"}; json source = {"a", "b", "c"};
json expected = {"a", "b"}; json expected = {"a", "b"};
json dest; json dest;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment