diff options
Diffstat (limited to 'discord/json.hpp')
-rw-r--r-- | discord/json.hpp | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/discord/json.hpp b/discord/json.hpp index 0b27d6d..de779b9 100644 --- a/discord/json.hpp +++ b/discord/json.hpp @@ -1,17 +1,12 @@ #pragma once #include <nlohmann/json.hpp> #include <optional> +#include "../util.hpp" namespace detail { // more or less because idk what to name this stuff template<typename T> -struct is_optional : ::std::false_type {}; - -template<typename T> -struct is_optional<::std::optional<T>> : ::std::true_type {}; - -template<typename T> inline void json_direct(const ::nlohmann::json &j, const char *key, T &val) { - if constexpr (is_optional<T>::value) + if constexpr (::util::is_optional<T>::value) val = j.at(key).get<typename T::value_type>(); else j.at(key).get_to(val); @@ -19,7 +14,7 @@ inline void json_direct(const ::nlohmann::json &j, const char *key, T &val) { template<typename T> inline void json_optional(const ::nlohmann::json &j, const char *key, T &val) { - if constexpr (is_optional<T>::value) { + if constexpr (::util::is_optional<T>::value) { if (j.contains(key)) val = j.at(key).get<typename T::value_type>(); else @@ -32,7 +27,7 @@ inline void json_optional(const ::nlohmann::json &j, const char *key, T &val) { template<typename T> inline void json_nullable(const ::nlohmann::json &j, const char *key, T &val) { - if constexpr (is_optional<T>::value) { + if constexpr (::util::is_optional<T>::value) { const auto &at = j.at(key); if (!at.is_null()) val = at.get<typename T::value_type>(); @@ -47,7 +42,7 @@ inline void json_nullable(const ::nlohmann::json &j, const char *key, T &val) { template<typename T> inline void json_optional_nullable(const ::nlohmann::json &j, const char *key, T &val) { - if constexpr (is_optional<T>::value) { + if constexpr (::util::is_optional<T>::value) { if (j.contains(key)) { const auto &at = j.at(key); if (!at.is_null()) @@ -68,7 +63,7 @@ inline void json_optional_nullable(const ::nlohmann::json &j, const char *key, T template<typename T> inline void json_update_optional_nullable(const ::nlohmann::json &j, const char *key, T &val) { - if constexpr (is_optional<T>::value) { + if constexpr (::util::is_optional<T>::value) { if (j.contains(key)) { const auto &at = j.at(key); if (!at.is_null()) @@ -89,7 +84,7 @@ inline void json_update_optional_nullable(const ::nlohmann::json &j, const char template<typename T, typename U> inline void json_update_optional_nullable_default(const ::nlohmann::json &j, const char *key, T &val, const U &fallback) { - if constexpr (is_optional<T>::value) { + if constexpr (::util::is_optional<T>::value) { if (j.contains(key)) { const auto &at = j.at(key); if (at.is_null()) |