Loading README.md +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ include(FetchContent) FetchContent_Declare(json GIT_REPOSITORY https://github.com/ArthurSonzogni/nlohmann_json_cmake_fetchcontent GIT_TAG v3.10.3) GIT_TAG v3.10.4) FetchContent_GetProperties(json) if(NOT json_POPULATED) Loading include/nlohmann/json.hpp +50 −36 Original line number Diff line number Diff line /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ | | |__ | | | | | | version 3.10.3 | | |__ | | | | | | version 3.10.4 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. Loading Loading @@ -32,7 +32,7 @@ SOFTWARE. #define NLOHMANN_JSON_VERSION_MAJOR 3 #define NLOHMANN_JSON_VERSION_MINOR 10 #define NLOHMANN_JSON_VERSION_PATCH 3 #define NLOHMANN_JSON_VERSION_PATCH 4 #include <algorithm> // all_of, find, for_each #include <cstddef> // nullptr_t, ptrdiff_t, size_t Loading Loading @@ -3783,44 +3783,21 @@ struct is_constructible_object_type : is_constructible_object_type_impl<BasicJsonType, ConstructibleObjectType> {}; template<typename BasicJsonType, typename CompatibleStringType, typename = void> struct is_compatible_string_type_impl : std::false_type {}; template<typename BasicJsonType, typename CompatibleStringType> struct is_compatible_string_type_impl < BasicJsonType, CompatibleStringType, enable_if_t<is_detected_convertible<typename BasicJsonType::string_t::value_type, range_value_t, CompatibleStringType>::value >> struct is_compatible_string_type { static constexpr auto value = is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value; }; template<typename BasicJsonType, typename ConstructibleStringType> struct is_compatible_string_type : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {}; template<typename BasicJsonType, typename ConstructibleStringType, typename = void> struct is_constructible_string_type_impl : std::false_type {}; template<typename BasicJsonType, typename ConstructibleStringType> struct is_constructible_string_type_impl < BasicJsonType, ConstructibleStringType, enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType>::value >> struct is_constructible_string_type { static constexpr auto value = is_constructible<ConstructibleStringType, typename BasicJsonType::string_t>::value; }; template<typename BasicJsonType, typename ConstructibleStringType> struct is_constructible_string_type : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {}; template<typename BasicJsonType, typename CompatibleArrayType, typename = void> struct is_compatible_array_type_impl : std::false_type {}; Loading @@ -3829,7 +3806,10 @@ struct is_compatible_array_type_impl < BasicJsonType, CompatibleArrayType, enable_if_t < is_detected<iterator_t, CompatibleArrayType>::value&& is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value >> is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same<CompatibleArrayType, detected_t<range_value_t, CompatibleArrayType>>::value >> { static constexpr bool value = is_constructible<BasicJsonType, Loading Loading @@ -3862,6 +3842,9 @@ struct is_constructible_array_type_impl < is_detected<iterator_t, ConstructibleArrayType>::value&& is_iterator_traits<iterator_traits<detected_t<iterator_t, ConstructibleArrayType>>>::value&& is_detected<range_value_t, ConstructibleArrayType>::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same<ConstructibleArrayType, detected_t<range_value_t, ConstructibleArrayType>>::value&& is_complete_type < detected_t<range_value_t, ConstructibleArrayType >>::value >> { Loading Loading @@ -3967,6 +3950,10 @@ T conditional_static_cast(U value) // #include <nlohmann/detail/value_t.hpp> #ifdef JSON_HAS_CPP_17 #include <filesystem> #endif namespace nlohmann { namespace detail Loading Loading @@ -4392,6 +4379,18 @@ void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyE } } #ifdef JSON_HAS_CPP_17 template<typename BasicJsonType> void from_json(const BasicJsonType& j, std::filesystem::path& p) { if (JSON_HEDLEY_UNLIKELY(!j.is_string())) { JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j)); } p = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } #endif struct from_json_fn { template<typename BasicJsonType, typename T> Loading Loading @@ -4425,6 +4424,8 @@ constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::va #include <valarray> // valarray #include <vector> // vector // #include <nlohmann/detail/macro_scope.hpp> // #include <nlohmann/detail/iterators/iteration_proxy.hpp> Loading Loading @@ -4625,6 +4626,10 @@ class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >> // #include <nlohmann/detail/value_t.hpp> #ifdef JSON_HAS_CPP_17 #include <filesystem> #endif namespace nlohmann { namespace detail Loading Loading @@ -4997,6 +5002,14 @@ void to_json(BasicJsonType& j, const T& t) to_json_tuple_impl(j, t, make_index_sequence<std::tuple_size<T>::value> {}); } #ifdef JSON_HAS_CPP_17 template<typename BasicJsonType> void to_json(BasicJsonType& j, const std::filesystem::path& p) { j = p.string(); } #endif struct to_json_fn { template<typename BasicJsonType, typename T> Loading Loading @@ -17222,8 +17235,8 @@ class serializer // erase thousands separator if (thousands_sep != '\0') { auto* const end = std::remove(number_buffer.begin(), number_buffer.begin() + len, thousands_sep); // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::remove returns an iterator, see https://github.com/nlohmann/json/issues/3081 const auto end = std::remove(number_buffer.begin(), number_buffer.begin() + len, thousands_sep); std::fill(end, number_buffer.end(), '\0'); JSON_ASSERT((end - number_buffer.begin()) <= len); len = (end - number_buffer.begin()); Loading @@ -17232,7 +17245,8 @@ class serializer // convert decimal point to '.' if (decimal_point != '\0' && decimal_point != '.') { auto* const dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::find returns an iterator, see https://github.com/nlohmann/json/issues/3081 const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); if (dec_pos != number_buffer.end()) { *dec_pos = '.'; Loading Loading @@ -18552,7 +18566,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec object = nullptr; // silence warning, see #821 if (JSON_HEDLEY_UNLIKELY(t == value_t::null)) { JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.10.3", basic_json())); // LCOV_EXCL_LINE JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.10.4", basic_json())); // LCOV_EXCL_LINE } break; } Loading Loading @@ -20556,7 +20570,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec ValueType get_impl(detail::priority_tag<0> /*unused*/) const noexcept(noexcept( JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>()))) { ValueType ret{}; auto ret = ValueType(); JSONSerializer<ValueType>::from_json(*this, ret); return ret; } Loading
README.md +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ include(FetchContent) FetchContent_Declare(json GIT_REPOSITORY https://github.com/ArthurSonzogni/nlohmann_json_cmake_fetchcontent GIT_TAG v3.10.3) GIT_TAG v3.10.4) FetchContent_GetProperties(json) if(NOT json_POPULATED) Loading
include/nlohmann/json.hpp +50 −36 Original line number Diff line number Diff line /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ | | |__ | | | | | | version 3.10.3 | | |__ | | | | | | version 3.10.4 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License <http://opensource.org/licenses/MIT>. Loading Loading @@ -32,7 +32,7 @@ SOFTWARE. #define NLOHMANN_JSON_VERSION_MAJOR 3 #define NLOHMANN_JSON_VERSION_MINOR 10 #define NLOHMANN_JSON_VERSION_PATCH 3 #define NLOHMANN_JSON_VERSION_PATCH 4 #include <algorithm> // all_of, find, for_each #include <cstddef> // nullptr_t, ptrdiff_t, size_t Loading Loading @@ -3783,44 +3783,21 @@ struct is_constructible_object_type : is_constructible_object_type_impl<BasicJsonType, ConstructibleObjectType> {}; template<typename BasicJsonType, typename CompatibleStringType, typename = void> struct is_compatible_string_type_impl : std::false_type {}; template<typename BasicJsonType, typename CompatibleStringType> struct is_compatible_string_type_impl < BasicJsonType, CompatibleStringType, enable_if_t<is_detected_convertible<typename BasicJsonType::string_t::value_type, range_value_t, CompatibleStringType>::value >> struct is_compatible_string_type { static constexpr auto value = is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value; }; template<typename BasicJsonType, typename ConstructibleStringType> struct is_compatible_string_type : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {}; template<typename BasicJsonType, typename ConstructibleStringType, typename = void> struct is_constructible_string_type_impl : std::false_type {}; template<typename BasicJsonType, typename ConstructibleStringType> struct is_constructible_string_type_impl < BasicJsonType, ConstructibleStringType, enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType>::value >> struct is_constructible_string_type { static constexpr auto value = is_constructible<ConstructibleStringType, typename BasicJsonType::string_t>::value; }; template<typename BasicJsonType, typename ConstructibleStringType> struct is_constructible_string_type : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {}; template<typename BasicJsonType, typename CompatibleArrayType, typename = void> struct is_compatible_array_type_impl : std::false_type {}; Loading @@ -3829,7 +3806,10 @@ struct is_compatible_array_type_impl < BasicJsonType, CompatibleArrayType, enable_if_t < is_detected<iterator_t, CompatibleArrayType>::value&& is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value >> is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same<CompatibleArrayType, detected_t<range_value_t, CompatibleArrayType>>::value >> { static constexpr bool value = is_constructible<BasicJsonType, Loading Loading @@ -3862,6 +3842,9 @@ struct is_constructible_array_type_impl < is_detected<iterator_t, ConstructibleArrayType>::value&& is_iterator_traits<iterator_traits<detected_t<iterator_t, ConstructibleArrayType>>>::value&& is_detected<range_value_t, ConstructibleArrayType>::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same<ConstructibleArrayType, detected_t<range_value_t, ConstructibleArrayType>>::value&& is_complete_type < detected_t<range_value_t, ConstructibleArrayType >>::value >> { Loading Loading @@ -3967,6 +3950,10 @@ T conditional_static_cast(U value) // #include <nlohmann/detail/value_t.hpp> #ifdef JSON_HAS_CPP_17 #include <filesystem> #endif namespace nlohmann { namespace detail Loading Loading @@ -4392,6 +4379,18 @@ void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyE } } #ifdef JSON_HAS_CPP_17 template<typename BasicJsonType> void from_json(const BasicJsonType& j, std::filesystem::path& p) { if (JSON_HEDLEY_UNLIKELY(!j.is_string())) { JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j)); } p = *j.template get_ptr<const typename BasicJsonType::string_t*>(); } #endif struct from_json_fn { template<typename BasicJsonType, typename T> Loading Loading @@ -4425,6 +4424,8 @@ constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::va #include <valarray> // valarray #include <vector> // vector // #include <nlohmann/detail/macro_scope.hpp> // #include <nlohmann/detail/iterators/iteration_proxy.hpp> Loading Loading @@ -4625,6 +4626,10 @@ class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >> // #include <nlohmann/detail/value_t.hpp> #ifdef JSON_HAS_CPP_17 #include <filesystem> #endif namespace nlohmann { namespace detail Loading Loading @@ -4997,6 +5002,14 @@ void to_json(BasicJsonType& j, const T& t) to_json_tuple_impl(j, t, make_index_sequence<std::tuple_size<T>::value> {}); } #ifdef JSON_HAS_CPP_17 template<typename BasicJsonType> void to_json(BasicJsonType& j, const std::filesystem::path& p) { j = p.string(); } #endif struct to_json_fn { template<typename BasicJsonType, typename T> Loading Loading @@ -17222,8 +17235,8 @@ class serializer // erase thousands separator if (thousands_sep != '\0') { auto* const end = std::remove(number_buffer.begin(), number_buffer.begin() + len, thousands_sep); // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::remove returns an iterator, see https://github.com/nlohmann/json/issues/3081 const auto end = std::remove(number_buffer.begin(), number_buffer.begin() + len, thousands_sep); std::fill(end, number_buffer.end(), '\0'); JSON_ASSERT((end - number_buffer.begin()) <= len); len = (end - number_buffer.begin()); Loading @@ -17232,7 +17245,8 @@ class serializer // convert decimal point to '.' if (decimal_point != '\0' && decimal_point != '.') { auto* const dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::find returns an iterator, see https://github.com/nlohmann/json/issues/3081 const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); if (dec_pos != number_buffer.end()) { *dec_pos = '.'; Loading Loading @@ -18552,7 +18566,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec object = nullptr; // silence warning, see #821 if (JSON_HEDLEY_UNLIKELY(t == value_t::null)) { JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.10.3", basic_json())); // LCOV_EXCL_LINE JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.10.4", basic_json())); // LCOV_EXCL_LINE } break; } Loading Loading @@ -20556,7 +20570,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec ValueType get_impl(detail::priority_tag<0> /*unused*/) const noexcept(noexcept( JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>()))) { ValueType ret{}; auto ret = ValueType(); JSONSerializer<ValueType>::from_json(*this, ret); return ret; }