From e93a8a417ad2ed3cd7bfb19d815eac47982b3f5c Mon Sep 17 00:00:00 2001 From: Michael Valladolid Date: Mon, 30 Dec 2024 11:02:13 +0900 Subject: [PATCH] Modernize integer comparison Replace static_cast(-1) with std::numeric_limits::max() --- .../nlohmann/detail/input/binary_reader.hpp | 22 +++++----- include/nlohmann/detail/input/json_sax.hpp | 12 +++--- include/nlohmann/detail/input/parser.hpp | 4 +- include/nlohmann/json.hpp | 4 +- single_include/nlohmann/json.hpp | 42 +++++++++---------- 5 files changed, 42 insertions(+), 42 deletions(-) diff --git a/include/nlohmann/detail/input/binary_reader.hpp b/include/nlohmann/detail/input/binary_reader.hpp index f498b0de96..facabfb1dd 100644 --- a/include/nlohmann/detail/input/binary_reader.hpp +++ b/include/nlohmann/detail/input/binary_reader.hpp @@ -172,7 +172,7 @@ class binary_reader std::int32_t document_size{}; get_number(input_format_t::bson, document_size); - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::numeric_limits::max()))) { return false; } @@ -394,7 +394,7 @@ class binary_reader std::int32_t document_size{}; get_number(input_format_t::bson, document_size); - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::numeric_limits::max()))) { return false; } @@ -654,7 +654,7 @@ class binary_reader } case 0x9F: // array (indefinite length) - return get_cbor_array(static_cast(-1), tag_handler); + return get_cbor_array(std::numeric_limits::max(), tag_handler); // map (0x00..0x17 pairs of data items follow) case 0xA0: @@ -708,7 +708,7 @@ class binary_reader } case 0xBF: // map (indefinite length) - return get_cbor_object(static_cast(-1), tag_handler); + return get_cbor_object(std::numeric_limits::max(), tag_handler); case 0xC6: // tagged item case 0xC7: @@ -1096,7 +1096,7 @@ class binary_reader } /*! - @param[in] len the length of the array or static_cast(-1) for an + @param[in] len the length of the array or std::numeric_limits::max() for an array of indefinite size @param[in] tag_handler how CBOR tags should be treated @return whether array creation completed @@ -1109,7 +1109,7 @@ class binary_reader return false; } - if (len != static_cast(-1)) + if (len != std::numeric_limits::max()) { for (std::size_t i = 0; i < len; ++i) { @@ -1134,7 +1134,7 @@ class binary_reader } /*! - @param[in] len the length of the object or static_cast(-1) for an + @param[in] len the length of the object or std::numeric_limits::max() for an object of indefinite size @param[in] tag_handler how CBOR tags should be treated @return whether object creation completed @@ -1150,7 +1150,7 @@ class binary_reader if (len != 0) { string_t key; - if (len != static_cast(-1)) + if (len != std::numeric_limits::max()) { for (std::size_t i = 0; i < len; ++i) { @@ -2568,7 +2568,7 @@ class binary_reader } else { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::numeric_limits::max()))) { return false; } @@ -2646,7 +2646,7 @@ class binary_reader } else { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::numeric_limits::max()))) { return false; } @@ -2982,7 +2982,7 @@ class binary_reader } private: - static JSON_INLINE_VARIABLE constexpr std::size_t npos = static_cast(-1); + static JSON_INLINE_VARIABLE constexpr std::size_t npos = std::numeric_limits::max(); /// input adapter InputAdapterType ia; diff --git a/include/nlohmann/detail/input/json_sax.hpp b/include/nlohmann/detail/input/json_sax.hpp index f081e4aa40..b0d4772844 100644 --- a/include/nlohmann/detail/input/json_sax.hpp +++ b/include/nlohmann/detail/input/json_sax.hpp @@ -242,7 +242,7 @@ class json_sax_dom_parser } #endif - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); } @@ -291,7 +291,7 @@ class json_sax_dom_parser } #endif - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); } @@ -559,7 +559,7 @@ class json_sax_dom_callback_parser #endif // check object limit - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); } @@ -657,7 +657,7 @@ class json_sax_dom_callback_parser #endif // check array limit - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); } @@ -946,7 +946,7 @@ class json_sax_acceptor return true; } - bool start_object(std::size_t /*unused*/ = static_cast(-1)) + bool start_object(std::size_t /*unused*/ = std::numeric_limits::max()) { return true; } @@ -961,7 +961,7 @@ class json_sax_acceptor return true; } - bool start_array(std::size_t /*unused*/ = static_cast(-1)) + bool start_array(std::size_t /*unused*/ = std::numeric_limits::max()) { return true; } diff --git a/include/nlohmann/detail/input/parser.hpp b/include/nlohmann/detail/input/parser.hpp index 997a26ff3f..daf9951660 100644 --- a/include/nlohmann/detail/input/parser.hpp +++ b/include/nlohmann/detail/input/parser.hpp @@ -194,7 +194,7 @@ class parser { case token_type::begin_object: { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::numeric_limits::max()))) { return false; } @@ -239,7 +239,7 @@ class parser case token_type::begin_array: { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::numeric_limits::max()))) { return false; } diff --git a/include/nlohmann/json.hpp b/include/nlohmann/json.hpp index b2f7537d88..420c847375 100644 --- a/include/nlohmann/json.hpp +++ b/include/nlohmann/json.hpp @@ -751,10 +751,10 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec return it; } - reference set_parent(reference j, std::size_t old_capacity = static_cast(-1)) + reference set_parent(reference j, std::size_t old_capacity = std::numeric_limits::max()) { #if JSON_DIAGNOSTICS - if (old_capacity != static_cast(-1)) + if (old_capacity != std::numeric_limits::max()) { // see https://github.com/nlohmann/json/issues/2838 JSON_ASSERT(type() == value_t::array); diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index c462f45dd6..760e9c4d8f 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -8774,7 +8774,7 @@ class json_sax_dom_parser } #endif - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); } @@ -8823,7 +8823,7 @@ class json_sax_dom_parser } #endif - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); } @@ -9091,7 +9091,7 @@ class json_sax_dom_callback_parser #endif // check object limit - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); } @@ -9189,7 +9189,7 @@ class json_sax_dom_callback_parser #endif // check array limit - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::numeric_limits::max() && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); } @@ -9478,7 +9478,7 @@ class json_sax_acceptor return true; } - bool start_object(std::size_t /*unused*/ = static_cast(-1)) + bool start_object(std::size_t /*unused*/ = std::numeric_limits::max()) { return true; } @@ -9493,7 +9493,7 @@ class json_sax_acceptor return true; } - bool start_array(std::size_t /*unused*/ = static_cast(-1)) + bool start_array(std::size_t /*unused*/ = std::numeric_limits::max()) { return true; } @@ -9825,7 +9825,7 @@ class binary_reader std::int32_t document_size{}; get_number(input_format_t::bson, document_size); - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::numeric_limits::max()))) { return false; } @@ -10047,7 +10047,7 @@ class binary_reader std::int32_t document_size{}; get_number(input_format_t::bson, document_size); - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::numeric_limits::max()))) { return false; } @@ -10307,7 +10307,7 @@ class binary_reader } case 0x9F: // array (indefinite length) - return get_cbor_array(static_cast(-1), tag_handler); + return get_cbor_array(std::numeric_limits::max(), tag_handler); // map (0x00..0x17 pairs of data items follow) case 0xA0: @@ -10361,7 +10361,7 @@ class binary_reader } case 0xBF: // map (indefinite length) - return get_cbor_object(static_cast(-1), tag_handler); + return get_cbor_object(std::numeric_limits::max(), tag_handler); case 0xC6: // tagged item case 0xC7: @@ -10749,7 +10749,7 @@ class binary_reader } /*! - @param[in] len the length of the array or static_cast(-1) for an + @param[in] len the length of the array or std::numeric_limits::max() for an array of indefinite size @param[in] tag_handler how CBOR tags should be treated @return whether array creation completed @@ -10762,7 +10762,7 @@ class binary_reader return false; } - if (len != static_cast(-1)) + if (len != std::numeric_limits::max()) { for (std::size_t i = 0; i < len; ++i) { @@ -10787,7 +10787,7 @@ class binary_reader } /*! - @param[in] len the length of the object or static_cast(-1) for an + @param[in] len the length of the object or std::numeric_limits::max() for an object of indefinite size @param[in] tag_handler how CBOR tags should be treated @return whether object creation completed @@ -10803,7 +10803,7 @@ class binary_reader if (len != 0) { string_t key; - if (len != static_cast(-1)) + if (len != std::numeric_limits::max()) { for (std::size_t i = 0; i < len; ++i) { @@ -12221,7 +12221,7 @@ class binary_reader } else { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::numeric_limits::max()))) { return false; } @@ -12299,7 +12299,7 @@ class binary_reader } else { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::numeric_limits::max()))) { return false; } @@ -12635,7 +12635,7 @@ class binary_reader } private: - static JSON_INLINE_VARIABLE constexpr std::size_t npos = static_cast(-1); + static JSON_INLINE_VARIABLE constexpr std::size_t npos = std::numeric_limits::max(); /// input adapter InputAdapterType ia; @@ -12905,7 +12905,7 @@ class parser { case token_type::begin_object: { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::numeric_limits::max()))) { return false; } @@ -12950,7 +12950,7 @@ class parser case token_type::begin_array: { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::numeric_limits::max()))) { return false; } @@ -20606,10 +20606,10 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec return it; } - reference set_parent(reference j, std::size_t old_capacity = static_cast(-1)) + reference set_parent(reference j, std::size_t old_capacity = std::numeric_limits::max()) { #if JSON_DIAGNOSTICS - if (old_capacity != static_cast(-1)) + if (old_capacity != std::numeric_limits::max()) { // see https://github.com/nlohmann/json/issues/2838 JSON_ASSERT(type() == value_t::array);