summaryrefslogtreecommitdiff
path: root/discord/json.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'discord/json.hpp')
-rw-r--r--discord/json.hpp19
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())