blob: dac07dfbf45abd93d208b87105063de2917c0e08 [file] [log] [blame]
// __ _____ _____ _____
// __| | __| | | | JSON for Modern C++
// | | |__ | | | | | | version 3.11.3
// |_____|_____|_____|_|___| https://github.com/nlohmann/json
//
// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me>
// SPDX-License-Identifier: MIT
#pragma once
#include <utility> // declval, pair
#include <nlohmann/detail/meta/detected.hpp>
#include <nlohmann/thirdparty/hedley/hedley.hpp>
// This file contains all internal macro definitions (except those affecting ABI)
// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
#include <nlohmann/detail/abi_macros.hpp>
// exclude unsupported compilers
#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
#if defined(__clang__)
#if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
#error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
#endif
#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
#error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
#endif
#endif
#endif
// C++ language standard detection
// if the user manually specified the used c++ version this is skipped
#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11)
#if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L)
#define JSON_HAS_CPP_20
#define JSON_HAS_CPP_17
#define JSON_HAS_CPP_14
#elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
#define JSON_HAS_CPP_17
#define JSON_HAS_CPP_14
#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
#define JSON_HAS_CPP_14
#endif
// the cpp 11 flag is always specified because it is the minimal required version
#define JSON_HAS_CPP_11
#endif
#ifdef __has_include
#if __has_include(<version>)
#include <version>
#endif
#endif
#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM)
#ifdef JSON_HAS_CPP_17
#if defined(__cpp_lib_filesystem)
#define JSON_HAS_FILESYSTEM 1
#elif defined(__cpp_lib_experimental_filesystem)
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
#elif !defined(__has_include)
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
#elif __has_include(<filesystem>)
#define JSON_HAS_FILESYSTEM 1
#elif __has_include(<experimental/filesystem>)
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
#endif
// std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
#undef JSON_HAS_FILESYSTEM
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#endif
// no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8
#undef JSON_HAS_FILESYSTEM
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#endif
// no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support
#if defined(__clang_major__) && __clang_major__ < 7
#undef JSON_HAS_FILESYSTEM
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#endif
// no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support
#if defined(_MSC_VER) && _MSC_VER < 1914
#undef JSON_HAS_FILESYSTEM
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#endif
// no filesystem support before iOS 13
#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000
#undef JSON_HAS_FILESYSTEM
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#endif
// no filesystem support before macOS Catalina
#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500
#undef JSON_HAS_FILESYSTEM
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#endif
#endif
#endif
#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0
#endif
#ifndef JSON_HAS_FILESYSTEM
#define JSON_HAS_FILESYSTEM 0
#endif
#ifndef JSON_HAS_THREE_WAY_COMPARISON
#if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L && defined(__cpp_lib_three_way_comparison) && \
__cpp_lib_three_way_comparison >= 201907L
#define JSON_HAS_THREE_WAY_COMPARISON 1
#else
#define JSON_HAS_THREE_WAY_COMPARISON 0
#endif
#endif
#ifndef JSON_HAS_RANGES
// ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error
#if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427
#define JSON_HAS_RANGES 0
#elif defined(__cpp_lib_ranges)
#define JSON_HAS_RANGES 1
#else
#define JSON_HAS_RANGES 0
#endif
#endif
#ifndef JSON_HAS_STATIC_RTTI
#if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0
#define JSON_HAS_STATIC_RTTI 1
#else
#define JSON_HAS_STATIC_RTTI 0
#endif
#endif
#ifdef JSON_HAS_CPP_17
#define JSON_INLINE_VARIABLE inline
#else
#define JSON_INLINE_VARIABLE
#endif
#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address)
#define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]]
#else
#define JSON_NO_UNIQUE_ADDRESS
#endif
// disable documentation warnings on clang
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"
#pragma clang diagnostic ignored "-Wdocumentation-unknown-command"
#endif
// allow disabling exceptions
#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
#define JSON_THROW(exception) throw exception
#define JSON_TRY try
#define JSON_CATCH(exception) catch (exception)
#define JSON_INTERNAL_CATCH(exception) catch (exception)
#else
#include <cstdlib>
#define JSON_THROW(exception) std::abort()
#define JSON_TRY if (true)
#define JSON_CATCH(exception) if (false)
#define JSON_INTERNAL_CATCH(exception) if (false)
#endif
// override exception macros
#if defined(JSON_THROW_USER)
#undef JSON_THROW
#define JSON_THROW JSON_THROW_USER
#endif
#if defined(JSON_TRY_USER)
#undef JSON_TRY
#define JSON_TRY JSON_TRY_USER
#endif
#if defined(JSON_CATCH_USER)
#undef JSON_CATCH
#define JSON_CATCH JSON_CATCH_USER
#undef JSON_INTERNAL_CATCH
#define JSON_INTERNAL_CATCH JSON_CATCH_USER
#endif
#if defined(JSON_INTERNAL_CATCH_USER)
#undef JSON_INTERNAL_CATCH
#define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
#endif
// allow overriding assert
#if !defined(JSON_ASSERT)
#include <cassert> // assert
#define JSON_ASSERT(x) assert(x)
#endif
// allow to access some private functions (needed by the test suite)
#if defined(JSON_TESTS_PRIVATE)
#define JSON_PRIVATE_UNLESS_TESTED public
#else
#define JSON_PRIVATE_UNLESS_TESTED private
#endif
/*!
@brief macro to briefly define a mapping between an enum and JSON
@def NLOHMANN_JSON_SERIALIZE_ENUM
@since version 3.4.0
*/
#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \
template<typename BasicJsonType> \
inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
{ \
static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
auto it = std::find_if(std::begin(m), std::end(m), [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool { \
return ej_pair.first == e; \
}); \
j = ((it != std::end(m)) ? it : std::begin(m))->second; \
} \
template<typename BasicJsonType> \
inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
{ \
static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
auto it = std::find_if(std::begin(m), std::end(m), [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool { \
return ej_pair.second == j; \
}); \
e = ((it != std::end(m)) ? it : std::begin(m))->first; \
}
// Ugly macros to avoid uglier copy-paste when specializing basic_json. They
// may be removed in the future once the class is split.
#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \
template<template<typename, typename, typename...> class ObjectType, \
template<typename, typename...> \
class ArrayType, \
class StringType, \
class BooleanType, \
class NumberIntegerType, \
class NumberUnsignedType, \
class NumberFloatType, \
template<typename> \
class AllocatorType, \
template<typename, typename = void> \
class JSONSerializer, \
class BinaryType, \
class CustomBaseClass>
#define NLOHMANN_BASIC_JSON_TPL \
basic_json<ObjectType, \
ArrayType, \
StringType, \
BooleanType, \
NumberIntegerType, \
NumberUnsignedType, \
NumberFloatType, \
AllocatorType, \
JSONSerializer, \
BinaryType, \
CustomBaseClass>
// Macros to simplify conversion from/to types
#define NLOHMANN_JSON_EXPAND(x) x
#define NLOHMANN_JSON_GET_MACRO(_1, \
_2, \
_3, \
_4, \
_5, \
_6, \
_7, \
_8, \
_9, \
_10, \
_11, \
_12, \
_13, \
_14, \
_15, \
_16, \
_17, \
_18, \
_19, \
_20, \
_21, \
_22, \
_23, \
_24, \
_25, \
_26, \
_27, \
_28, \
_29, \
_30, \
_31, \
_32, \
_33, \
_34, \
_35, \
_36, \
_37, \
_38, \
_39, \
_40, \
_41, \
_42, \
_43, \
_44, \
_45, \
_46, \
_47, \
_48, \
_49, \
_50, \
_51, \
_52, \
_53, \
_54, \
_55, \
_56, \
_57, \
_58, \
_59, \
_60, \
_61, \
_62, \
_63, \
_64, \
NAME, \
...) \
NAME
#define NLOHMANN_JSON_PASTE(...) \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \
NLOHMANN_JSON_PASTE64, \
NLOHMANN_JSON_PASTE63, \
NLOHMANN_JSON_PASTE62, \
NLOHMANN_JSON_PASTE61, \
NLOHMANN_JSON_PASTE60, \
NLOHMANN_JSON_PASTE59, \
NLOHMANN_JSON_PASTE58, \
NLOHMANN_JSON_PASTE57, \
NLOHMANN_JSON_PASTE56, \
NLOHMANN_JSON_PASTE55, \
NLOHMANN_JSON_PASTE54, \
NLOHMANN_JSON_PASTE53, \
NLOHMANN_JSON_PASTE52, \
NLOHMANN_JSON_PASTE51, \
NLOHMANN_JSON_PASTE50, \
NLOHMANN_JSON_PASTE49, \
NLOHMANN_JSON_PASTE48, \
NLOHMANN_JSON_PASTE47, \
NLOHMANN_JSON_PASTE46, \
NLOHMANN_JSON_PASTE45, \
NLOHMANN_JSON_PASTE44, \
NLOHMANN_JSON_PASTE43, \
NLOHMANN_JSON_PASTE42, \
NLOHMANN_JSON_PASTE41, \
NLOHMANN_JSON_PASTE40, \
NLOHMANN_JSON_PASTE39, \
NLOHMANN_JSON_PASTE38, \
NLOHMANN_JSON_PASTE37, \
NLOHMANN_JSON_PASTE36, \
NLOHMANN_JSON_PASTE35, \
NLOHMANN_JSON_PASTE34, \
NLOHMANN_JSON_PASTE33, \
NLOHMANN_JSON_PASTE32, \
NLOHMANN_JSON_PASTE31, \
NLOHMANN_JSON_PASTE30, \
NLOHMANN_JSON_PASTE29, \
NLOHMANN_JSON_PASTE28, \
NLOHMANN_JSON_PASTE27, \
NLOHMANN_JSON_PASTE26, \
NLOHMANN_JSON_PASTE25, \
NLOHMANN_JSON_PASTE24, \
NLOHMANN_JSON_PASTE23, \
NLOHMANN_JSON_PASTE22, \
NLOHMANN_JSON_PASTE21, \
NLOHMANN_JSON_PASTE20, \
NLOHMANN_JSON_PASTE19, \
NLOHMANN_JSON_PASTE18, \
NLOHMANN_JSON_PASTE17, \
NLOHMANN_JSON_PASTE16, \
NLOHMANN_JSON_PASTE15, \
NLOHMANN_JSON_PASTE14, \
NLOHMANN_JSON_PASTE13, \
NLOHMANN_JSON_PASTE12, \
NLOHMANN_JSON_PASTE11, \
NLOHMANN_JSON_PASTE10, \
NLOHMANN_JSON_PASTE9, \
NLOHMANN_JSON_PASTE8, \
NLOHMANN_JSON_PASTE7, \
NLOHMANN_JSON_PASTE6, \
NLOHMANN_JSON_PASTE5, \
NLOHMANN_JSON_PASTE4, \
NLOHMANN_JSON_PASTE3, \
NLOHMANN_JSON_PASTE2, \
NLOHMANN_JSON_PASTE1)(__VA_ARGS__))
#define NLOHMANN_JSON_PASTE2(func, v1) func(v1)
#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2)
#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3)
#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4)
#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5)
#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6)
#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7)
#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8)
#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9)
#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10)
#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)
#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)
#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)
#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)
#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)
#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17)
#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18)
#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19)
#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)
#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)
#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) \
NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22)
#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23)
#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24)
#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25)
#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26)
#define NLOHMANN_JSON_PASTE28(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27)
#define NLOHMANN_JSON_PASTE29(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28)
#define NLOHMANN_JSON_PASTE30(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE29(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29)
#define NLOHMANN_JSON_PASTE31(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE30(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30)
#define NLOHMANN_JSON_PASTE32(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE31(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31)
#define NLOHMANN_JSON_PASTE33(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE32(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32)
#define NLOHMANN_JSON_PASTE34(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE33(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33)
#define NLOHMANN_JSON_PASTE35(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE34(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34)
#define NLOHMANN_JSON_PASTE36(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE35(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35)
#define NLOHMANN_JSON_PASTE37(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE36(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36)
#define NLOHMANN_JSON_PASTE38(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE37(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37)
#define NLOHMANN_JSON_PASTE39(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE38(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38)
#define NLOHMANN_JSON_PASTE40(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE39(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39)
#define NLOHMANN_JSON_PASTE41(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE40(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40)
#define NLOHMANN_JSON_PASTE42(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE41(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41)
#define NLOHMANN_JSON_PASTE43(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE42(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42)
#define NLOHMANN_JSON_PASTE44(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE43(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43)
#define NLOHMANN_JSON_PASTE45(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE44(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44)
#define NLOHMANN_JSON_PASTE46(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE45(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45)
#define NLOHMANN_JSON_PASTE47(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE46(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46)
#define NLOHMANN_JSON_PASTE48(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE47(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47)
#define NLOHMANN_JSON_PASTE49(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE48(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48)
#define NLOHMANN_JSON_PASTE50(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE49(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49)
#define NLOHMANN_JSON_PASTE51(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE50(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50)
#define NLOHMANN_JSON_PASTE52(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE51(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51)
#define NLOHMANN_JSON_PASTE53(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE52(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52)
#define NLOHMANN_JSON_PASTE54(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE53(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53)
#define NLOHMANN_JSON_PASTE55(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE54(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54)
#define NLOHMANN_JSON_PASTE56(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE55(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55)
#define NLOHMANN_JSON_PASTE57(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE56(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56)
#define NLOHMANN_JSON_PASTE58(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE57(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57)
#define NLOHMANN_JSON_PASTE59(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE58(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58)
#define NLOHMANN_JSON_PASTE60(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE59(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59)
#define NLOHMANN_JSON_PASTE61(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE60(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60)
#define NLOHMANN_JSON_PASTE62(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60, \
v61) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE61(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60, \
v61)
#define NLOHMANN_JSON_PASTE63(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60, \
v61, \
v62) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE62(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60, \
v61, \
v62)
#define NLOHMANN_JSON_PASTE64(func, \
v1, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60, \
v61, \
v62, \
v63) \
NLOHMANN_JSON_PASTE2(func, v1) \
NLOHMANN_JSON_PASTE63(func, \
v2, \
v3, \
v4, \
v5, \
v6, \
v7, \
v8, \
v9, \
v10, \
v11, \
v12, \
v13, \
v14, \
v15, \
v16, \
v17, \
v18, \
v19, \
v20, \
v21, \
v22, \
v23, \
v24, \
v25, \
v26, \
v27, \
v28, \
v29, \
v30, \
v31, \
v32, \
v33, \
v34, \
v35, \
v36, \
v37, \
v38, \
v39, \
v40, \
v41, \
v42, \
v43, \
v44, \
v45, \
v46, \
v47, \
v48, \
v49, \
v50, \
v51, \
v52, \
v53, \
v54, \
v55, \
v56, \
v57, \
v58, \
v59, \
v60, \
v61, \
v62, \
v63)
#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1;
#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1);
#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1);
/*!
@brief macro
@def NLOHMANN_DEFINE_TYPE_INTRUSIVE
@since version 3.9.0
*/
#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \
friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) \
} \
friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) \
}
#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \
friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) \
} \
friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) \
{ \
const Type nlohmann_json_default_obj{}; \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) \
}
#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \
friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) \
}
/*!
@brief macro
@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE
@since version 3.9.0
*/
#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \
inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) \
} \
inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) \
}
#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \
inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) \
}
#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \
inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) \
{ \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) \
} \
inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) \
{ \
const Type nlohmann_json_default_obj{}; \
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) \
}
// inspired from https://stackoverflow.com/a/26745591
// allows to call any std function as if (e.g. with begin):
// using std::begin; begin(x);
//
// it allows using the detected idiom to retrieve the return type
// of such an expression
#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \
namespace detail \
{ \
using std::std_name; \
\
template<typename... T> \
using result_of_##std_name = decltype(std_name(std::declval<T>()...)); \
} \
\
namespace detail2 \
{ \
struct std_name##_tag \
{}; \
\
template<typename... T> \
std_name##_tag std_name(T&&...); \
\
template<typename... T> \
using result_of_##std_name = decltype(std_name(std::declval<T>()...)); \
\
template<typename... T> \
struct would_call_std_##std_name \
{ \
static constexpr auto const value = ::nlohmann::detail::is_detected_exact<std_name##_tag, result_of_##std_name, T...>::value; \
}; \
} /* namespace detail2 */ \
\
template<typename... T> \
struct would_call_std_##std_name : detail2::would_call_std_##std_name<T...> \
{}
#ifndef JSON_USE_IMPLICIT_CONVERSIONS
#define JSON_USE_IMPLICIT_CONVERSIONS 1
#endif
#if JSON_USE_IMPLICIT_CONVERSIONS
#define JSON_EXPLICIT
#else
#define JSON_EXPLICIT explicit
#endif
#ifndef JSON_DISABLE_ENUM_SERIALIZATION
#define JSON_DISABLE_ENUM_SERIALIZATION 0
#endif
#ifndef JSON_USE_GLOBAL_UDLS
#define JSON_USE_GLOBAL_UDLS 1
#endif