diff options
author | Daniil Cherednik <dan.cherednik@gmail.com> | 2022-10-11 17:07:02 +0300 |
---|---|---|
committer | Daniil Cherednik <dan.cherednik@gmail.com> | 2022-10-11 17:07:02 +0300 |
commit | 0b931ad6e6868bca7e7ec4617999c0d6befd7003 (patch) | |
tree | c10d4fcf9f5a638745e9c2b725852f03e5a175ce /contrib/restricted/nlohmann_json/include/nlohmann/adl_serializer.hpp | |
parent | e6c9b17192c56494adba359d5e132c431b241191 (diff) | |
download | ydb-0b931ad6e6868bca7e7ec4617999c0d6befd7003.tar.gz |
Ydb stable 22-4-3022.4.30
x-stable-origin-commit: a5971297427891237b5f05b5389146b6ca2fff93
Diffstat (limited to 'contrib/restricted/nlohmann_json/include/nlohmann/adl_serializer.hpp')
-rw-r--r-- | contrib/restricted/nlohmann_json/include/nlohmann/adl_serializer.hpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/contrib/restricted/nlohmann_json/include/nlohmann/adl_serializer.hpp b/contrib/restricted/nlohmann_json/include/nlohmann/adl_serializer.hpp new file mode 100644 index 0000000000..f77f94473e --- /dev/null +++ b/contrib/restricted/nlohmann_json/include/nlohmann/adl_serializer.hpp @@ -0,0 +1,55 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann <https://nlohmann.me> +// SPDX-License-Identifier: MIT + +#pragma once + +#include <utility> + +#include <nlohmann/detail/abi_macros.hpp> +#include <nlohmann/detail/conversions/from_json.hpp> +#include <nlohmann/detail/conversions/to_json.hpp> +#include <nlohmann/detail/meta/identity_tag.hpp> + +NLOHMANN_JSON_NAMESPACE_BEGIN + +/// @sa https://json.nlohmann.me/api/adl_serializer/ +template<typename ValueType, typename> +struct adl_serializer +{ + /// @brief convert a JSON value to any value type + /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ + template<typename BasicJsonType, typename TargetType = ValueType> + static auto from_json(BasicJsonType && j, TargetType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) + -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void()) + { + ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); + } + + /// @brief convert a JSON value to any value type + /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ + template<typename BasicJsonType, typename TargetType = ValueType> + static auto from_json(BasicJsonType && j) noexcept( + noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}))) + -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {})) + { + return ::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}); + } + + /// @brief convert any value type to a JSON value + /// @sa https://json.nlohmann.me/api/adl_serializer/to_json/ + template<typename BasicJsonType, typename TargetType = ValueType> + static auto to_json(BasicJsonType& j, TargetType && val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward<TargetType>(val)))) + -> decltype(::nlohmann::to_json(j, std::forward<TargetType>(val)), void()) + { + ::nlohmann::to_json(j, std::forward<TargetType>(val)); + } +}; + +NLOHMANN_JSON_NAMESPACE_END |