| 1 | // __ _____ _____ _____ |
| 2 | // __| | __| | | | JSON for Modern C++ |
| 3 | // | | |__ | | | | | | version 3.11.3 |
| 4 | // |_____|_____|_____|_|___| https://github.com/nlohmann/json |
| 5 | // |
| 6 | // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> |
| 7 | // SPDX-License-Identifier: MIT |
| 8 | |
| 9 | #pragma once |
| 10 | |
| 11 | #include <utility> // declval, pair |
| 12 | #include <nlohmann/detail/meta/detected.hpp> |
| 13 | #include <nlohmann/thirdparty/hedley/hedley.hpp> |
| 14 | |
| 15 | // This file contains all internal macro definitions (except those affecting ABI) |
| 16 | // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them |
| 17 | |
| 18 | #include <nlohmann/detail/abi_macros.hpp> |
| 19 | |
| 20 | // exclude unsupported compilers |
| 21 | #if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) |
| 22 | #if defined(__clang__) |
| 23 | #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 |
| 24 | #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" |
| 25 | #endif |
| 26 | #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) |
| 27 | #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 |
| 28 | #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" |
| 29 | #endif |
| 30 | #endif |
| 31 | #endif |
| 32 | |
| 33 | // C++ language standard detection |
| 34 | // if the user manually specified the used c++ version this is skipped |
| 35 | #if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) |
| 36 | #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) |
| 37 | #define JSON_HAS_CPP_20 |
| 38 | #define JSON_HAS_CPP_17 |
| 39 | #define JSON_HAS_CPP_14 |
| 40 | #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 |
| 41 | #define JSON_HAS_CPP_17 |
| 42 | #define JSON_HAS_CPP_14 |
| 43 | #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) |
| 44 | #define JSON_HAS_CPP_14 |
| 45 | #endif |
| 46 | // the cpp 11 flag is always specified because it is the minimal required version |
| 47 | #define JSON_HAS_CPP_11 |
| 48 | #endif |
| 49 | |
| 50 | #ifdef __has_include |
| 51 | #if __has_include(<version>) |
| 52 | #include <version> |
| 53 | #endif |
| 54 | #endif |
| 55 | |
| 56 | #if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) |
| 57 | #ifdef JSON_HAS_CPP_17 |
| 58 | #if defined(__cpp_lib_filesystem) |
| 59 | #define JSON_HAS_FILESYSTEM 1 |
| 60 | #elif defined(__cpp_lib_experimental_filesystem) |
| 61 | #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 |
| 62 | #elif !defined(__has_include) |
| 63 | #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 |
| 64 | #elif __has_include(<filesystem>) |
| 65 | #define JSON_HAS_FILESYSTEM 1 |
| 66 | #elif __has_include(<experimental/filesystem>) |
| 67 | #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 |
| 68 | #endif |
| 69 | |
| 70 | // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ |
| 71 | #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 |
| 72 | #undef JSON_HAS_FILESYSTEM |
| 73 | #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM |
| 74 | #endif |
| 75 | |
| 76 | // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support |
| 77 | #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 |
| 78 | #undef JSON_HAS_FILESYSTEM |
| 79 | #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM |
| 80 | #endif |
| 81 | |
| 82 | // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support |
| 83 | #if defined(__clang_major__) && __clang_major__ < 7 |
| 84 | #undef JSON_HAS_FILESYSTEM |
| 85 | #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM |
| 86 | #endif |
| 87 | |
| 88 | // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support |
| 89 | #if defined(_MSC_VER) && _MSC_VER < 1914 |
| 90 | #undef JSON_HAS_FILESYSTEM |
| 91 | #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM |
| 92 | #endif |
| 93 | |
| 94 | // no filesystem support before iOS 13 |
| 95 | #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 |
| 96 | #undef JSON_HAS_FILESYSTEM |
| 97 | #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM |
| 98 | #endif |
| 99 | |
| 100 | // no filesystem support before macOS Catalina |
| 101 | #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 |
| 102 | #undef JSON_HAS_FILESYSTEM |
| 103 | #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM |
| 104 | #endif |
| 105 | #endif |
| 106 | #endif |
| 107 | |
| 108 | #ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM |
| 109 | #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 |
| 110 | #endif |
| 111 | |
| 112 | #ifndef JSON_HAS_FILESYSTEM |
| 113 | #define JSON_HAS_FILESYSTEM 0 |
| 114 | #endif |
| 115 | |
| 116 | #ifndef JSON_HAS_THREE_WAY_COMPARISON |
| 117 | #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ |
| 118 | && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L |
| 119 | #define JSON_HAS_THREE_WAY_COMPARISON 1 |
| 120 | #else |
| 121 | #define JSON_HAS_THREE_WAY_COMPARISON 0 |
| 122 | #endif |
| 123 | #endif |
| 124 | |
| 125 | #ifndef JSON_HAS_RANGES |
| 126 | // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error |
| 127 | #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 |
| 128 | #define JSON_HAS_RANGES 0 |
| 129 | #elif defined(__cpp_lib_ranges) |
| 130 | #define JSON_HAS_RANGES 1 |
| 131 | #else |
| 132 | #define JSON_HAS_RANGES 0 |
| 133 | #endif |
| 134 | #endif |
| 135 | |
| 136 | #ifndef JSON_HAS_STATIC_RTTI |
| 137 | #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 |
| 138 | #define JSON_HAS_STATIC_RTTI 1 |
| 139 | #else |
| 140 | #define JSON_HAS_STATIC_RTTI 0 |
| 141 | #endif |
| 142 | #endif |
| 143 | |
| 144 | #ifdef JSON_HAS_CPP_17 |
| 145 | #define JSON_INLINE_VARIABLE inline |
| 146 | #else |
| 147 | #define JSON_INLINE_VARIABLE |
| 148 | #endif |
| 149 | |
| 150 | #if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) |
| 151 | #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] |
| 152 | #else |
| 153 | #define JSON_NO_UNIQUE_ADDRESS |
| 154 | #endif |
| 155 | |
| 156 | // disable documentation warnings on clang |
| 157 | #if defined(__clang__) |
| 158 | #pragma clang diagnostic push |
| 159 | #pragma clang diagnostic ignored "-Wdocumentation" |
| 160 | #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" |
| 161 | #endif |
| 162 | |
| 163 | // allow disabling exceptions |
| 164 | #if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) |
| 165 | #define JSON_THROW(exception) throw exception |
| 166 | #define JSON_TRY try |
| 167 | #define JSON_CATCH(exception) catch(exception) |
| 168 | #define JSON_INTERNAL_CATCH(exception) catch(exception) |
| 169 | #else |
| 170 | #include <cstdlib> |
| 171 | #define JSON_THROW(exception) std::abort() |
| 172 | #define JSON_TRY if(true) |
| 173 | #define JSON_CATCH(exception) if(false) |
| 174 | #define JSON_INTERNAL_CATCH(exception) if(false) |
| 175 | #endif |
| 176 | |
| 177 | // override exception macros |
| 178 | #if defined(JSON_THROW_USER) |
| 179 | #undef JSON_THROW |
| 180 | #define JSON_THROW JSON_THROW_USER |
| 181 | #endif |
| 182 | #if defined(JSON_TRY_USER) |
| 183 | #undef JSON_TRY |
| 184 | #define JSON_TRY JSON_TRY_USER |
| 185 | #endif |
| 186 | #if defined(JSON_CATCH_USER) |
| 187 | #undef JSON_CATCH |
| 188 | #define JSON_CATCH JSON_CATCH_USER |
| 189 | #undef JSON_INTERNAL_CATCH |
| 190 | #define JSON_INTERNAL_CATCH JSON_CATCH_USER |
| 191 | #endif |
| 192 | #if defined(JSON_INTERNAL_CATCH_USER) |
| 193 | #undef JSON_INTERNAL_CATCH |
| 194 | #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER |
| 195 | #endif |
| 196 | |
| 197 | // allow overriding assert |
| 198 | #if !defined(JSON_ASSERT) |
| 199 | #include <cassert> // assert |
| 200 | #define JSON_ASSERT(x) assert(x) |
| 201 | #endif |
| 202 | |
| 203 | // allow to access some private functions (needed by the test suite) |
| 204 | #if defined(JSON_TESTS_PRIVATE) |
| 205 | #define JSON_PRIVATE_UNLESS_TESTED public |
| 206 | #else |
| 207 | #define JSON_PRIVATE_UNLESS_TESTED private |
| 208 | #endif |
| 209 | |
| 210 | /*! |
| 211 | @brief macro to briefly define a mapping between an enum and JSON |
| 212 | @def NLOHMANN_JSON_SERIALIZE_ENUM |
| 213 | @since version 3.4.0 |
| 214 | */ |
| 215 | #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ |
| 216 | template<typename BasicJsonType> \ |
| 217 | inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ |
| 218 | { \ |
| 219 | static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \ |
| 220 | static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \ |
| 221 | auto it = std::find_if(std::begin(m), std::end(m), \ |
| 222 | [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \ |
| 223 | { \ |
| 224 | return ej_pair.first == e; \ |
| 225 | }); \ |
| 226 | j = ((it != std::end(m)) ? it : std::begin(m))->second; \ |
| 227 | } \ |
| 228 | template<typename BasicJsonType> \ |
| 229 | inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ |
| 230 | { \ |
| 231 | static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \ |
| 232 | static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \ |
| 233 | auto it = std::find_if(std::begin(m), std::end(m), \ |
| 234 | [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \ |
| 235 | { \ |
| 236 | return ej_pair.second == j; \ |
| 237 | }); \ |
| 238 | e = ((it != std::end(m)) ? it : std::begin(m))->first; \ |
| 239 | } |
| 240 | |
| 241 | // Ugly macros to avoid uglier copy-paste when specializing basic_json. They |
| 242 | // may be removed in the future once the class is split. |
| 243 | |
| 244 | #define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ |
| 245 | template<template<typename, typename, typename...> class ObjectType, \ |
| 246 | template<typename, typename...> class ArrayType, \ |
| 247 | class StringType, class BooleanType, class NumberIntegerType, \ |
| 248 | class NumberUnsignedType, class NumberFloatType, \ |
| 249 | template<typename> class AllocatorType, \ |
| 250 | template<typename, typename = void> class JSONSerializer, \ |
| 251 | class BinaryType, \ |
| 252 | class CustomBaseClass> |
| 253 | |
| 254 | #define NLOHMANN_BASIC_JSON_TPL \ |
| 255 | basic_json<ObjectType, ArrayType, StringType, BooleanType, \ |
| 256 | NumberIntegerType, NumberUnsignedType, NumberFloatType, \ |
| 257 | AllocatorType, JSONSerializer, BinaryType, CustomBaseClass> |
| 258 | |
| 259 | // Macros to simplify conversion from/to types |
| 260 | |
| 261 | #define NLOHMANN_JSON_EXPAND( x ) x |
| 262 | #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 |
| 263 | #define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ |
| 264 | NLOHMANN_JSON_PASTE64, \ |
| 265 | NLOHMANN_JSON_PASTE63, \ |
| 266 | NLOHMANN_JSON_PASTE62, \ |
| 267 | NLOHMANN_JSON_PASTE61, \ |
| 268 | NLOHMANN_JSON_PASTE60, \ |
| 269 | NLOHMANN_JSON_PASTE59, \ |
| 270 | NLOHMANN_JSON_PASTE58, \ |
| 271 | NLOHMANN_JSON_PASTE57, \ |
| 272 | NLOHMANN_JSON_PASTE56, \ |
| 273 | NLOHMANN_JSON_PASTE55, \ |
| 274 | NLOHMANN_JSON_PASTE54, \ |
| 275 | NLOHMANN_JSON_PASTE53, \ |
| 276 | NLOHMANN_JSON_PASTE52, \ |
| 277 | NLOHMANN_JSON_PASTE51, \ |
| 278 | NLOHMANN_JSON_PASTE50, \ |
| 279 | NLOHMANN_JSON_PASTE49, \ |
| 280 | NLOHMANN_JSON_PASTE48, \ |
| 281 | NLOHMANN_JSON_PASTE47, \ |
| 282 | NLOHMANN_JSON_PASTE46, \ |
| 283 | NLOHMANN_JSON_PASTE45, \ |
| 284 | NLOHMANN_JSON_PASTE44, \ |
| 285 | NLOHMANN_JSON_PASTE43, \ |
| 286 | NLOHMANN_JSON_PASTE42, \ |
| 287 | NLOHMANN_JSON_PASTE41, \ |
| 288 | NLOHMANN_JSON_PASTE40, \ |
| 289 | NLOHMANN_JSON_PASTE39, \ |
| 290 | NLOHMANN_JSON_PASTE38, \ |
| 291 | NLOHMANN_JSON_PASTE37, \ |
| 292 | NLOHMANN_JSON_PASTE36, \ |
| 293 | NLOHMANN_JSON_PASTE35, \ |
| 294 | NLOHMANN_JSON_PASTE34, \ |
| 295 | NLOHMANN_JSON_PASTE33, \ |
| 296 | NLOHMANN_JSON_PASTE32, \ |
| 297 | NLOHMANN_JSON_PASTE31, \ |
| 298 | NLOHMANN_JSON_PASTE30, \ |
| 299 | NLOHMANN_JSON_PASTE29, \ |
| 300 | NLOHMANN_JSON_PASTE28, \ |
| 301 | NLOHMANN_JSON_PASTE27, \ |
| 302 | NLOHMANN_JSON_PASTE26, \ |
| 303 | NLOHMANN_JSON_PASTE25, \ |
| 304 | NLOHMANN_JSON_PASTE24, \ |
| 305 | NLOHMANN_JSON_PASTE23, \ |
| 306 | NLOHMANN_JSON_PASTE22, \ |
| 307 | NLOHMANN_JSON_PASTE21, \ |
| 308 | NLOHMANN_JSON_PASTE20, \ |
| 309 | NLOHMANN_JSON_PASTE19, \ |
| 310 | NLOHMANN_JSON_PASTE18, \ |
| 311 | NLOHMANN_JSON_PASTE17, \ |
| 312 | NLOHMANN_JSON_PASTE16, \ |
| 313 | NLOHMANN_JSON_PASTE15, \ |
| 314 | NLOHMANN_JSON_PASTE14, \ |
| 315 | NLOHMANN_JSON_PASTE13, \ |
| 316 | NLOHMANN_JSON_PASTE12, \ |
| 317 | NLOHMANN_JSON_PASTE11, \ |
| 318 | NLOHMANN_JSON_PASTE10, \ |
| 319 | NLOHMANN_JSON_PASTE9, \ |
| 320 | NLOHMANN_JSON_PASTE8, \ |
| 321 | NLOHMANN_JSON_PASTE7, \ |
| 322 | NLOHMANN_JSON_PASTE6, \ |
| 323 | NLOHMANN_JSON_PASTE5, \ |
| 324 | NLOHMANN_JSON_PASTE4, \ |
| 325 | NLOHMANN_JSON_PASTE3, \ |
| 326 | NLOHMANN_JSON_PASTE2, \ |
| 327 | NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) |
| 328 | #define NLOHMANN_JSON_PASTE2(func, v1) func(v1) |
| 329 | #define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) |
| 330 | #define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) |
| 331 | #define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) |
| 332 | #define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) |
| 333 | #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) |
| 334 | #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) |
| 335 | #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) |
| 336 | #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) |
| 337 | #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) |
| 338 | #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) |
| 339 | #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) |
| 340 | #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) |
| 341 | #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) |
| 342 | #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) |
| 343 | #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) |
| 344 | #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) |
| 345 | #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) |
| 346 | #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) |
| 347 | #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) |
| 348 | #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) |
| 349 | #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) |
| 350 | #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) |
| 351 | #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) |
| 352 | #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) |
| 353 | #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) |
| 354 | #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) |
| 355 | #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) |
| 356 | #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) |
| 357 | #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) |
| 358 | #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) |
| 359 | #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) |
| 360 | #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) |
| 361 | #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) |
| 362 | #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) |
| 363 | #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) |
| 364 | #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) |
| 365 | #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) |
| 366 | #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) |
| 367 | #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) |
| 368 | #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) |
| 369 | #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) |
| 370 | #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) |
| 371 | #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) |
| 372 | #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) |
| 373 | #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) |
| 374 | #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) |
| 375 | #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) |
| 376 | #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) |
| 377 | #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) |
| 378 | #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) |
| 379 | #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) |
| 380 | #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) |
| 381 | #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) |
| 382 | #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) |
| 383 | #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) |
| 384 | #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) |
| 385 | #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) |
| 386 | #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) |
| 387 | #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) |
| 388 | #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) |
| 389 | #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) |
| 390 | #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) |
| 391 | |
| 392 | #define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; |
| 393 | #define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); |
| 394 | #define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); |
| 395 | |
| 396 | /*! |
| 397 | @brief macro |
| 398 | @def NLOHMANN_DEFINE_TYPE_INTRUSIVE |
| 399 | @since version 3.9.0 |
| 400 | */ |
| 401 | #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ |
| 402 | 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__)) } \ |
| 403 | 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__)) } |
| 404 | |
| 405 | #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ |
| 406 | 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__)) } \ |
| 407 | 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__)) } |
| 408 | |
| 409 | #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ |
| 410 | 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__)) } |
| 411 | |
| 412 | /*! |
| 413 | @brief macro |
| 414 | @def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE |
| 415 | @since version 3.9.0 |
| 416 | */ |
| 417 | #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ |
| 418 | 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__)) } \ |
| 419 | 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__)) } |
| 420 | |
| 421 | #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ |
| 422 | 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__)) } |
| 423 | |
| 424 | #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ |
| 425 | 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__)) } \ |
| 426 | 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__)) } |
| 427 | |
| 428 | // inspired from https://stackoverflow.com/a/26745591 |
| 429 | // allows to call any std function as if (e.g. with begin): |
| 430 | // using std::begin; begin(x); |
| 431 | // |
| 432 | // it allows using the detected idiom to retrieve the return type |
| 433 | // of such an expression |
| 434 | #define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ |
| 435 | namespace detail { \ |
| 436 | using std::std_name; \ |
| 437 | \ |
| 438 | template<typename... T> \ |
| 439 | using result_of_##std_name = decltype(std_name(std::declval<T>()...)); \ |
| 440 | } \ |
| 441 | \ |
| 442 | namespace detail2 { \ |
| 443 | struct std_name##_tag \ |
| 444 | { \ |
| 445 | }; \ |
| 446 | \ |
| 447 | template<typename... T> \ |
| 448 | std_name##_tag std_name(T&&...); \ |
| 449 | \ |
| 450 | template<typename... T> \ |
| 451 | using result_of_##std_name = decltype(std_name(std::declval<T>()...)); \ |
| 452 | \ |
| 453 | template<typename... T> \ |
| 454 | struct would_call_std_##std_name \ |
| 455 | { \ |
| 456 | static constexpr auto const value = ::nlohmann::detail:: \ |
| 457 | is_detected_exact<std_name##_tag, result_of_##std_name, T...>::value; \ |
| 458 | }; \ |
| 459 | } /* namespace detail2 */ \ |
| 460 | \ |
| 461 | template<typename... T> \ |
| 462 | struct would_call_std_##std_name : detail2::would_call_std_##std_name<T...> \ |
| 463 | { \ |
| 464 | } |
| 465 | |
| 466 | #ifndef JSON_USE_IMPLICIT_CONVERSIONS |
| 467 | #define JSON_USE_IMPLICIT_CONVERSIONS 1 |
| 468 | #endif |
| 469 | |
| 470 | #if JSON_USE_IMPLICIT_CONVERSIONS |
| 471 | #define JSON_EXPLICIT |
| 472 | #else |
| 473 | #define JSON_EXPLICIT explicit |
| 474 | #endif |
| 475 | |
| 476 | #ifndef JSON_DISABLE_ENUM_SERIALIZATION |
| 477 | #define JSON_DISABLE_ENUM_SERIALIZATION 0 |
| 478 | #endif |
| 479 | |
| 480 | #ifndef JSON_USE_GLOBAL_UDLS |
| 481 | #define JSON_USE_GLOBAL_UDLS 1 |
| 482 | #endif |
| 483 | |