diff --git a/src/json.hpp b/src/json.hpp index 8a8b876a7..5f018ffb8 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1970,59 +1970,60 @@ class basic_json case value_t::object: { object = create(); - break; + return; } case value_t::array: { array = create(); - break; + return; } case value_t::string: { string = create(""); - break; + return; } case value_t::boolean: { boolean = boolean_t(false); - break; + return; } case value_t::number_integer: { number_integer = number_integer_t(0); - break; + return; } case value_t::number_unsigned: { number_unsigned = number_unsigned_t(0); - break; + return; } case value_t::number_float: { number_float = number_float_t(0.0); - break; + return; } case value_t::null: { - break; + return; } - default: + case value_t::discarded: { if (t == value_t::null) { JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 2.1.1")); // LCOV_EXCL_LINE } - break; + return; } } + assert(false); } /// constructor for strings @@ -2824,7 +2825,7 @@ class basic_json AllocatorType alloc; alloc.destroy(m_value.object); alloc.deallocate(m_value.object, 1); - break; + return; } case value_t::array: @@ -2832,7 +2833,7 @@ class basic_json AllocatorType alloc; alloc.destroy(m_value.array); alloc.deallocate(m_value.array, 1); - break; + return; } case value_t::string: @@ -2840,15 +2841,21 @@ class basic_json AllocatorType alloc; alloc.destroy(m_value.string); alloc.deallocate(m_value.string, 1); - break; + return; } - default: + case value_t::null: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::discarded: { // all other types need no specific destructor - break; + return; } } + assert(false); } /// @} @@ -9380,25 +9387,26 @@ class basic_json */ std::string type_name() const { + switch (m_type) { - switch (m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + case value_t::number_unsigned: + case value_t::number_integer: + case value_t::number_float: + return "number"; } + assert(false); } @@ -12137,37 +12145,27 @@ basic_json_parser_74: strtonum num_converter(reinterpret_cast(m_start), reinterpret_cast(m_cursor)); - switch (token) + if (token == lexer::token_type::value_unsigned) { - case lexer::token_type::value_unsigned: + number_unsigned_t val; + if (num_converter.to(val)) { - number_unsigned_t val; - if (num_converter.to(val)) - { - // parsing successful - result.m_type = value_t::number_unsigned; - result.m_value = val; - return true; - } - break; + // parsing successful + result.m_type = value_t::number_unsigned; + result.m_value = val; + return true; } + } - case lexer::token_type::value_integer: + if (token == lexer::token_type::value_integer) + { + number_integer_t val; + if (num_converter.to(val)) { - number_integer_t val; - if (num_converter.to(val)) - { - // parsing successful - result.m_type = value_t::number_integer; - result.m_value = val; - return true; - } - break; - } - - default: - { - break; + // parsing successful + result.m_type = value_t::number_integer; + result.m_value = val; + return true; } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 5dc86d1e2..d8eeb793d 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1970,59 +1970,60 @@ class basic_json case value_t::object: { object = create(); - break; + return; } case value_t::array: { array = create(); - break; + return; } case value_t::string: { string = create(""); - break; + return; } case value_t::boolean: { boolean = boolean_t(false); - break; + return; } case value_t::number_integer: { number_integer = number_integer_t(0); - break; + return; } case value_t::number_unsigned: { number_unsigned = number_unsigned_t(0); - break; + return; } case value_t::number_float: { number_float = number_float_t(0.0); - break; + return; } case value_t::null: { - break; + return; } - default: + case value_t::discarded: { if (t == value_t::null) { JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 2.1.1")); // LCOV_EXCL_LINE } - break; + return; } } + assert(false); } /// constructor for strings @@ -2824,7 +2825,7 @@ class basic_json AllocatorType alloc; alloc.destroy(m_value.object); alloc.deallocate(m_value.object, 1); - break; + return; } case value_t::array: @@ -2832,7 +2833,7 @@ class basic_json AllocatorType alloc; alloc.destroy(m_value.array); alloc.deallocate(m_value.array, 1); - break; + return; } case value_t::string: @@ -2840,15 +2841,21 @@ class basic_json AllocatorType alloc; alloc.destroy(m_value.string); alloc.deallocate(m_value.string, 1); - break; + return; } - default: + case value_t::null: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::discarded: { // all other types need no specific destructor - break; + return; } } + assert(false); } /// @} @@ -9380,25 +9387,26 @@ class basic_json */ std::string type_name() const { + switch (m_type) { - switch (m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + case value_t::number_unsigned: + case value_t::number_integer: + case value_t::number_float: + return "number"; } + assert(false); } @@ -11170,37 +11178,27 @@ class basic_json strtonum num_converter(reinterpret_cast(m_start), reinterpret_cast(m_cursor)); - switch (token) + if (token == lexer::token_type::value_unsigned) { - case lexer::token_type::value_unsigned: + number_unsigned_t val; + if (num_converter.to(val)) { - number_unsigned_t val; - if (num_converter.to(val)) - { - // parsing successful - result.m_type = value_t::number_unsigned; - result.m_value = val; - return true; - } - break; + // parsing successful + result.m_type = value_t::number_unsigned; + result.m_value = val; + return true; } + } - case lexer::token_type::value_integer: + if (token == lexer::token_type::value_integer) + { + number_integer_t val; + if (num_converter.to(val)) { - number_integer_t val; - if (num_converter.to(val)) - { - // parsing successful - result.m_type = value_t::number_integer; - result.m_value = val; - return true; - } - break; - } - - default: - { - break; + // parsing successful + result.m_type = value_t::number_integer; + result.m_value = val; + return true; } }