// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // declval, pair #include #include // 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 // 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() #include #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() #define JSON_HAS_FILESYSTEM 1 #elif __has_include() #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 #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 // 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 \ inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ { \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ static const std::pair m[] = __VA_ARGS__; \ auto it = std::find_if(std::begin(m), std::end(m), [e](const std::pair& ej_pair) -> bool { \ return ej_pair.first == e; \ }); \ j = ((it != std::end(m)) ? it : std::begin(m))->second; \ } \ template \ inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ { \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ static const std::pair m[] = __VA_ARGS__; \ auto it = std::find_if(std::begin(m), std::end(m), [&j](const std::pair& 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 class ObjectType, \ template \ class ArrayType, \ class StringType, \ class BooleanType, \ class NumberIntegerType, \ class NumberUnsignedType, \ class NumberFloatType, \ template \ class AllocatorType, \ template \ class JSONSerializer, \ class BinaryType, \ class CustomBaseClass> #define NLOHMANN_BASIC_JSON_TPL \ basic_json // 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 \ using result_of_##std_name = decltype(std_name(std::declval()...)); \ } \ \ namespace detail2 \ { \ struct std_name##_tag \ {}; \ \ template \ std_name##_tag std_name(T&&...); \ \ template \ using result_of_##std_name = decltype(std_name(std::declval()...)); \ \ template \ struct would_call_std_##std_name \ { \ static constexpr auto const value = ::nlohmann::detail::is_detected_exact::value; \ }; \ } /* namespace detail2 */ \ \ template \ struct would_call_std_##std_name : detail2::would_call_std_##std_name \ {} #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