diff options
author | Daniel Friesel <derf@finalrewind.org> | 2018-09-17 11:10:12 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2018-09-17 11:10:12 +0200 |
commit | 276b9a93c2e3b9ac58a9ddb5fff4c8299c459222 (patch) | |
tree | 8b39c09a58a8c3225b234b2b69af08a76d31f9a8 /include/lib/modernjson/adl_serializer.hpp | |
parent | 99cea89d798b61398adf33cbc57c11d985ddab77 (diff) |
add nlohmann modenjson
Diffstat (limited to 'include/lib/modernjson/adl_serializer.hpp')
-rw-r--r-- | include/lib/modernjson/adl_serializer.hpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/lib/modernjson/adl_serializer.hpp b/include/lib/modernjson/adl_serializer.hpp new file mode 100644 index 0000000..23584c5 --- /dev/null +++ b/include/lib/modernjson/adl_serializer.hpp @@ -0,0 +1,49 @@ +#pragma once + +#include <utility> + +#include <lib/modernjson/detail/conversions/from_json.hpp> +#include <lib/modernjson/detail/conversions/to_json.hpp> + +namespace nlohmann +{ +template<typename, typename> +struct adl_serializer +{ + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in,out] val value to write to + */ + template<typename BasicJsonType, typename ValueType> + static auto from_json(BasicJsonType&& j, ValueType& 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 any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in,out] j JSON value to write to + @param[in] val value to read from + */ + template <typename BasicJsonType, typename ValueType> + static auto to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val)))) + -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), + void()) + { + ::nlohmann::to_json(j, std::forward<ValueType>(val)); + } +}; +} |