From 87c250d843df6ef96cfc13aefa7e485914ec2bb0 Mon Sep 17 00:00:00 2001 From: Niels Date: Sat, 7 Feb 2015 19:14:23 +0100 Subject: [PATCH] another commit to trigger coverage --- src/json.hpp | 970 +++++++++++++++------------------------------- src/json.hpp.re2c | 13 +- 2 files changed, 326 insertions(+), 657 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 348bc00f..67637134 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -909,31 +909,37 @@ class basic_json { break; } + case (value_t::number_integer): { m_value.number_integer = 0; break; } + case (value_t::number_float): { m_value.number_float = 0.0; break; } + case (value_t::boolean): { m_value.boolean = false; break; } + case (value_t::string): { m_value.string->clear(); break; } + case (value_t::array): { m_value.array->clear(); break; } + case (value_t::object): { m_value.object->clear(); @@ -2612,704 +2618,359 @@ class basic_json const lexer_char_t* marker; // set up RE2C - + for (;;) { // set current to the begin of the buffer current_re2c = buffer_re2c; + +{ + lexer_char_t yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 192, 192, 64, 64, 192, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 192, 64, 0, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 0, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + }; - { - lexer_char_t yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = - { - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 192, 192, 64, 64, 192, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 192, 64, 0, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 0, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - }; - - yych = *buffer_re2c; - if (yych <= ':') - { - if (yych <= '!') - { - if (yych <= '\f') - { - if (yych <= 0x08) - { - goto json_parser_3; - } - if (yych <= '\n') - { - goto json_parser_5; - } - goto json_parser_3; - } - else - { - if (yych <= '\r') - { - goto json_parser_5; - } - if (yych == ' ') - { - goto json_parser_5; - } - goto json_parser_3; - } - } - else - { - if (yych <= '-') - { - if (yych <= '"') - { - goto json_parser_6; - } - if (yych <= '+') - { - goto json_parser_3; - } - if (yych <= ',') - { - goto json_parser_7; - } - goto json_parser_9; - } - else - { - if (yych <= '/') - { - goto json_parser_3; - } - if (yych <= '0') - { - goto json_parser_10; - } - if (yych <= '9') - { - goto json_parser_12; - } - goto json_parser_13; - } - } - } - else - { - if (yych <= 'm') - { - if (yych <= '\\') - { - if (yych == '[') - { - goto json_parser_15; - } - goto json_parser_3; - } - else - { - if (yych <= ']') - { - goto json_parser_17; - } - if (yych == 'f') - { - goto json_parser_19; - } - goto json_parser_3; - } - } - else - { - if (yych <= 'z') - { - if (yych <= 'n') - { - goto json_parser_20; - } - if (yych == 't') - { - goto json_parser_21; - } - goto json_parser_3; - } - else - { - if (yych <= '{') - { - goto json_parser_22; - } - if (yych == '}') - { - goto json_parser_24; - } - goto json_parser_3; - } - } - } + yych = *buffer_re2c; + if (yych <= ':') { + if (yych <= '!') { + if (yych <= '\f') { + if (yych <= 0x08) goto json_parser_3; + if (yych <= '\n') goto json_parser_5; + goto json_parser_3; + } else { + if (yych <= '\r') goto json_parser_5; + if (yych == ' ') goto json_parser_5; + goto json_parser_3; + } + } else { + if (yych <= '-') { + if (yych <= '"') goto json_parser_6; + if (yych <= '+') goto json_parser_3; + if (yych <= ',') goto json_parser_7; + goto json_parser_9; + } else { + if (yych <= '/') goto json_parser_3; + if (yych <= '0') goto json_parser_10; + if (yych <= '9') goto json_parser_12; + goto json_parser_13; + } + } + } else { + if (yych <= 'm') { + if (yych <= '\\') { + if (yych == '[') goto json_parser_15; + goto json_parser_3; + } else { + if (yych <= ']') goto json_parser_17; + if (yych == 'f') goto json_parser_19; + goto json_parser_3; + } + } else { + if (yych <= 'z') { + if (yych <= 'n') goto json_parser_20; + if (yych == 't') goto json_parser_21; + goto json_parser_3; + } else { + if (yych <= '{') goto json_parser_22; + if (yych == '}') goto json_parser_24; + goto json_parser_3; + } + } + } json_parser_2: - { - continue; - } + { continue; } json_parser_3: - ++buffer_re2c; + ++buffer_re2c; json_parser_4: - { - return last_token = token_type::parse_error; - } + { return last_token = token_type::parse_error; } json_parser_5: - yych = *++buffer_re2c; - goto json_parser_60; + yych = *++buffer_re2c; + goto json_parser_60; json_parser_6: - yyaccept = 0; - yych = *(marker = ++buffer_re2c); - goto json_parser_51; + yyaccept = 0; + yych = *(marker = ++buffer_re2c); + goto json_parser_51; json_parser_7: - ++buffer_re2c; - { - return last_token = token_type::value_separator; - } + ++buffer_re2c; + { return last_token = token_type::value_separator; } json_parser_9: - yych = *++buffer_re2c; - if (yych <= '/') - { - goto json_parser_4; - } - if (yych <= '0') - { - goto json_parser_49; - } - if (yych <= '9') - { - goto json_parser_40; - } - goto json_parser_4; + yych = *++buffer_re2c; + if (yych <= '/') goto json_parser_4; + if (yych <= '0') goto json_parser_49; + if (yych <= '9') goto json_parser_40; + goto json_parser_4; json_parser_10: - yyaccept = 1; - yych = *(marker = ++buffer_re2c); - if (yych <= 'D') - { - if (yych == '.') - { - goto json_parser_42; - } - } - else - { - if (yych <= 'E') - { - goto json_parser_43; - } - if (yych == 'e') - { - goto json_parser_43; - } - } + yyaccept = 1; + yych = *(marker = ++buffer_re2c); + if (yych <= 'D') { + if (yych == '.') goto json_parser_42; + } else { + if (yych <= 'E') goto json_parser_43; + if (yych == 'e') goto json_parser_43; + } json_parser_11: - { - return last_token = token_type::value_number; - } + { return last_token = token_type::value_number; } json_parser_12: - yyaccept = 1; - yych = *(marker = ++buffer_re2c); - goto json_parser_41; + yyaccept = 1; + yych = *(marker = ++buffer_re2c); + goto json_parser_41; json_parser_13: - ++buffer_re2c; - { - return last_token = token_type::name_separator; - } + ++buffer_re2c; + { return last_token = token_type::name_separator; } json_parser_15: - ++buffer_re2c; - { - return last_token = token_type::begin_array; - } + ++buffer_re2c; + { return last_token = token_type::begin_array; } json_parser_17: - ++buffer_re2c; - { - return last_token = token_type::end_array; - } + ++buffer_re2c; + { return last_token = token_type::end_array; } json_parser_19: - yyaccept = 0; - yych = *(marker = ++buffer_re2c); - if (yych == 'a') - { - goto json_parser_35; - } - goto json_parser_4; + yyaccept = 0; + yych = *(marker = ++buffer_re2c); + if (yych == 'a') goto json_parser_35; + goto json_parser_4; json_parser_20: - yyaccept = 0; - yych = *(marker = ++buffer_re2c); - if (yych == 'u') - { - goto json_parser_31; - } - goto json_parser_4; + yyaccept = 0; + yych = *(marker = ++buffer_re2c); + if (yych == 'u') goto json_parser_31; + goto json_parser_4; json_parser_21: - yyaccept = 0; - yych = *(marker = ++buffer_re2c); - if (yych == 'r') - { - goto json_parser_26; - } - goto json_parser_4; + yyaccept = 0; + yych = *(marker = ++buffer_re2c); + if (yych == 'r') goto json_parser_26; + goto json_parser_4; json_parser_22: - ++buffer_re2c; - { - return last_token = token_type::begin_object; - } + ++buffer_re2c; + { return last_token = token_type::begin_object; } json_parser_24: - ++buffer_re2c; - { - return last_token = token_type::end_object; - } + ++buffer_re2c; + { return last_token = token_type::end_object; } json_parser_26: - yych = *++buffer_re2c; - if (yych == 'u') - { - goto json_parser_28; - } + yych = *++buffer_re2c; + if (yych == 'u') goto json_parser_28; json_parser_27: - buffer_re2c = marker; - if (yyaccept == 0) - { - goto json_parser_4; - } - else - { - goto json_parser_11; - } + buffer_re2c = marker; + if (yyaccept == 0) { + goto json_parser_4; + } else { + goto json_parser_11; + } json_parser_28: - yych = *++buffer_re2c; - if (yych != 'e') - { - goto json_parser_27; - } - ++buffer_re2c; - { - return last_token = token_type::literal_true; - } + yych = *++buffer_re2c; + if (yych != 'e') goto json_parser_27; + ++buffer_re2c; + { return last_token = token_type::literal_true; } json_parser_31: - yych = *++buffer_re2c; - if (yych != 'l') - { - goto json_parser_27; - } - yych = *++buffer_re2c; - if (yych != 'l') - { - goto json_parser_27; - } - ++buffer_re2c; - { - return last_token = token_type::literal_null; - } + yych = *++buffer_re2c; + if (yych != 'l') goto json_parser_27; + yych = *++buffer_re2c; + if (yych != 'l') goto json_parser_27; + ++buffer_re2c; + { return last_token = token_type::literal_null; } json_parser_35: - yych = *++buffer_re2c; - if (yych != 'l') - { - goto json_parser_27; - } - yych = *++buffer_re2c; - if (yych != 's') - { - goto json_parser_27; - } - yych = *++buffer_re2c; - if (yych != 'e') - { - goto json_parser_27; - } - ++buffer_re2c; - { - return last_token = token_type::literal_false; - } + yych = *++buffer_re2c; + if (yych != 'l') goto json_parser_27; + yych = *++buffer_re2c; + if (yych != 's') goto json_parser_27; + yych = *++buffer_re2c; + if (yych != 'e') goto json_parser_27; + ++buffer_re2c; + { return last_token = token_type::literal_false; } json_parser_40: - yyaccept = 1; - marker = ++buffer_re2c; - yych = *buffer_re2c; + yyaccept = 1; + marker = ++buffer_re2c; + yych = *buffer_re2c; json_parser_41: - if (yybm[0 + yych] & 32) - { - goto json_parser_40; - } - if (yych <= 'D') - { - if (yych != '.') - { - goto json_parser_11; - } - } - else - { - if (yych <= 'E') - { - goto json_parser_43; - } - if (yych == 'e') - { - goto json_parser_43; - } - goto json_parser_11; - } + if (yybm[0+yych] & 32) { + goto json_parser_40; + } + if (yych <= 'D') { + if (yych != '.') goto json_parser_11; + } else { + if (yych <= 'E') goto json_parser_43; + if (yych == 'e') goto json_parser_43; + goto json_parser_11; + } json_parser_42: - yych = *++buffer_re2c; - if (yych <= '/') - { - goto json_parser_27; - } - if (yych <= '9') - { - goto json_parser_47; - } - goto json_parser_27; + yych = *++buffer_re2c; + if (yych <= '/') goto json_parser_27; + if (yych <= '9') goto json_parser_47; + goto json_parser_27; json_parser_43: - yych = *++buffer_re2c; - if (yych <= ',') - { - if (yych != '+') - { - goto json_parser_27; - } - } - else - { - if (yych <= '-') - { - goto json_parser_44; - } - if (yych <= '/') - { - goto json_parser_27; - } - if (yych <= '9') - { - goto json_parser_45; - } - goto json_parser_27; - } + yych = *++buffer_re2c; + if (yych <= ',') { + if (yych != '+') goto json_parser_27; + } else { + if (yych <= '-') goto json_parser_44; + if (yych <= '/') goto json_parser_27; + if (yych <= '9') goto json_parser_45; + goto json_parser_27; + } json_parser_44: - yych = *++buffer_re2c; - if (yych <= '/') - { - goto json_parser_27; - } - if (yych >= ':') - { - goto json_parser_27; - } + yych = *++buffer_re2c; + if (yych <= '/') goto json_parser_27; + if (yych >= ':') goto json_parser_27; json_parser_45: - ++buffer_re2c; - yych = *buffer_re2c; - if (yych <= '/') - { - goto json_parser_11; - } - if (yych <= '9') - { - goto json_parser_45; - } - goto json_parser_11; + ++buffer_re2c; + yych = *buffer_re2c; + if (yych <= '/') goto json_parser_11; + if (yych <= '9') goto json_parser_45; + goto json_parser_11; json_parser_47: - yyaccept = 1; - marker = ++buffer_re2c; - yych = *buffer_re2c; - if (yych <= 'D') - { - if (yych <= '/') - { - goto json_parser_11; - } - if (yych <= '9') - { - goto json_parser_47; - } - goto json_parser_11; - } - else - { - if (yych <= 'E') - { - goto json_parser_43; - } - if (yych == 'e') - { - goto json_parser_43; - } - goto json_parser_11; - } + yyaccept = 1; + marker = ++buffer_re2c; + yych = *buffer_re2c; + if (yych <= 'D') { + if (yych <= '/') goto json_parser_11; + if (yych <= '9') goto json_parser_47; + goto json_parser_11; + } else { + if (yych <= 'E') goto json_parser_43; + if (yych == 'e') goto json_parser_43; + goto json_parser_11; + } json_parser_49: - yyaccept = 1; - yych = *(marker = ++buffer_re2c); - if (yych <= 'D') - { - if (yych == '.') - { - goto json_parser_42; - } - goto json_parser_11; - } - else - { - if (yych <= 'E') - { - goto json_parser_43; - } - if (yych == 'e') - { - goto json_parser_43; - } - goto json_parser_11; - } + yyaccept = 1; + yych = *(marker = ++buffer_re2c); + if (yych <= 'D') { + if (yych == '.') goto json_parser_42; + goto json_parser_11; + } else { + if (yych <= 'E') goto json_parser_43; + if (yych == 'e') goto json_parser_43; + goto json_parser_11; + } json_parser_50: - ++buffer_re2c; - yych = *buffer_re2c; + ++buffer_re2c; + yych = *buffer_re2c; json_parser_51: - if (yybm[0 + yych] & 64) - { - goto json_parser_50; - } - if (yych <= '"') - { - goto json_parser_53; - } - ++buffer_re2c; - yych = *buffer_re2c; - if (yych <= 'e') - { - if (yych <= '/') - { - if (yych == '"') - { - goto json_parser_50; - } - if (yych <= '.') - { - goto json_parser_27; - } - goto json_parser_50; - } - else - { - if (yych <= '\\') - { - if (yych <= '[') - { - goto json_parser_27; - } - goto json_parser_50; - } - else - { - if (yych == 'b') - { - goto json_parser_50; - } - goto json_parser_27; - } - } - } - else - { - if (yych <= 'q') - { - if (yych <= 'f') - { - goto json_parser_50; - } - if (yych == 'n') - { - goto json_parser_50; - } - goto json_parser_27; - } - else - { - if (yych <= 's') - { - if (yych <= 'r') - { - goto json_parser_50; - } - goto json_parser_27; - } - else - { - if (yych <= 't') - { - goto json_parser_50; - } - if (yych <= 'u') - { - goto json_parser_55; - } - goto json_parser_27; - } - } - } + if (yybm[0+yych] & 64) { + goto json_parser_50; + } + if (yych <= '"') goto json_parser_53; + ++buffer_re2c; + yych = *buffer_re2c; + if (yych <= 'e') { + if (yych <= '/') { + if (yych == '"') goto json_parser_50; + if (yych <= '.') goto json_parser_27; + goto json_parser_50; + } else { + if (yych <= '\\') { + if (yych <= '[') goto json_parser_27; + goto json_parser_50; + } else { + if (yych == 'b') goto json_parser_50; + goto json_parser_27; + } + } + } else { + if (yych <= 'q') { + if (yych <= 'f') goto json_parser_50; + if (yych == 'n') goto json_parser_50; + goto json_parser_27; + } else { + if (yych <= 's') { + if (yych <= 'r') goto json_parser_50; + goto json_parser_27; + } else { + if (yych <= 't') goto json_parser_50; + if (yych <= 'u') goto json_parser_55; + goto json_parser_27; + } + } + } json_parser_53: - ++buffer_re2c; - { - return last_token = token_type::value_string; - } + ++buffer_re2c; + { return last_token = token_type::value_string; } json_parser_55: - ++buffer_re2c; - yych = *buffer_re2c; - if (yych <= '@') - { - if (yych <= '/') - { - goto json_parser_27; - } - if (yych >= ':') - { - goto json_parser_27; - } - } - else - { - if (yych <= 'F') - { - goto json_parser_56; - } - if (yych <= '`') - { - goto json_parser_27; - } - if (yych >= 'g') - { - goto json_parser_27; - } - } + ++buffer_re2c; + yych = *buffer_re2c; + if (yych <= '@') { + if (yych <= '/') goto json_parser_27; + if (yych >= ':') goto json_parser_27; + } else { + if (yych <= 'F') goto json_parser_56; + if (yych <= '`') goto json_parser_27; + if (yych >= 'g') goto json_parser_27; + } json_parser_56: - ++buffer_re2c; - yych = *buffer_re2c; - if (yych <= '@') - { - if (yych <= '/') - { - goto json_parser_27; - } - if (yych >= ':') - { - goto json_parser_27; - } - } - else - { - if (yych <= 'F') - { - goto json_parser_57; - } - if (yych <= '`') - { - goto json_parser_27; - } - if (yych >= 'g') - { - goto json_parser_27; - } - } + ++buffer_re2c; + yych = *buffer_re2c; + if (yych <= '@') { + if (yych <= '/') goto json_parser_27; + if (yych >= ':') goto json_parser_27; + } else { + if (yych <= 'F') goto json_parser_57; + if (yych <= '`') goto json_parser_27; + if (yych >= 'g') goto json_parser_27; + } json_parser_57: - ++buffer_re2c; - yych = *buffer_re2c; - if (yych <= '@') - { - if (yych <= '/') - { - goto json_parser_27; - } - if (yych >= ':') - { - goto json_parser_27; - } - } - else - { - if (yych <= 'F') - { - goto json_parser_58; - } - if (yych <= '`') - { - goto json_parser_27; - } - if (yych >= 'g') - { - goto json_parser_27; - } - } + ++buffer_re2c; + yych = *buffer_re2c; + if (yych <= '@') { + if (yych <= '/') goto json_parser_27; + if (yych >= ':') goto json_parser_27; + } else { + if (yych <= 'F') goto json_parser_58; + if (yych <= '`') goto json_parser_27; + if (yych >= 'g') goto json_parser_27; + } json_parser_58: - ++buffer_re2c; - yych = *buffer_re2c; - if (yych <= '@') - { - if (yych <= '/') - { - goto json_parser_27; - } - if (yych <= '9') - { - goto json_parser_50; - } - goto json_parser_27; - } - else - { - if (yych <= 'F') - { - goto json_parser_50; - } - if (yych <= '`') - { - goto json_parser_27; - } - if (yych <= 'f') - { - goto json_parser_50; - } - goto json_parser_27; - } + ++buffer_re2c; + yych = *buffer_re2c; + if (yych <= '@') { + if (yych <= '/') goto json_parser_27; + if (yych <= '9') goto json_parser_50; + goto json_parser_27; + } else { + if (yych <= 'F') goto json_parser_50; + if (yych <= '`') goto json_parser_27; + if (yych <= 'f') goto json_parser_50; + goto json_parser_27; + } json_parser_59: - ++buffer_re2c; - yych = *buffer_re2c; + ++buffer_re2c; + yych = *buffer_re2c; json_parser_60: - if (yybm[0 + yych] & 128) - { - goto json_parser_59; - } - goto json_parser_2; - } + if (yybm[0+yych] & 128) { + goto json_parser_59; + } + goto json_parser_2; +} } } @@ -3370,7 +3031,7 @@ json_parser_60: @todo Take care of Unicode. */ - std::string get_string() const + inline std::string get_string() const { return std::string( reinterpret_cast(current_re2c + 1), @@ -3378,6 +3039,7 @@ json_parser_60: ); } + private: /// the buffer std::string buffer; /// a pointer to the next character to read from the buffer @@ -3425,7 +3087,7 @@ template <> struct hash { /// return a hash value for a JSON object - size_t operator()(const nlohmann::json& j) const + inline size_t operator()(const nlohmann::json& j) const { // a naive hashing via the string representation return hash()(j.dump()); @@ -3441,7 +3103,7 @@ no parse error occurred. @param s a string representation of a JSON object @return a JSON object */ -nlohmann::json operator "" _json(const char* s, std::size_t) +inline nlohmann::json operator "" _json(const char* s, std::size_t) { return nlohmann::json::parse(s); } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 1ebff8cc..602a7606 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -909,31 +909,37 @@ class basic_json { break; } + case (value_t::number_integer): { m_value.number_integer = 0; break; } + case (value_t::number_float): { m_value.number_float = 0.0; break; } + case (value_t::boolean): { m_value.boolean = false; break; } + case (value_t::string): { m_value.string->clear(); break; } + case (value_t::array): { m_value.array->clear(); break; } + case (value_t::object): { m_value.object->clear(); @@ -2730,7 +2736,7 @@ class basic_json @todo Take care of Unicode. */ - std::string get_string() const + inline std::string get_string() const { return std::string( reinterpret_cast(current_re2c + 1), @@ -2738,6 +2744,7 @@ class basic_json ); } + private: /// the buffer std::string buffer; /// a pointer to the next character to read from the buffer @@ -2785,7 +2792,7 @@ template <> struct hash { /// return a hash value for a JSON object - size_t operator()(const nlohmann::json& j) const + inline size_t operator()(const nlohmann::json& j) const { // a naive hashing via the string representation return hash()(j.dump()); @@ -2801,7 +2808,7 @@ no parse error occurred. @param s a string representation of a JSON object @return a JSON object */ -nlohmann::json operator "" _json(const char* s, std::size_t) +inline nlohmann::json operator "" _json(const char* s, std::size_t) { return nlohmann::json::parse(s); }