json.hpp
Go to the documentation of this file.
61 #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH)
62 #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3
373#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision))
394 #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
403 #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
412 #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100)
414 #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10)
425 #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))
427 #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))
429 #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor)))
436 #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE)
438 #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)
445 #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
454 #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0)
461 #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
469#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
470 #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)
477 #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
486 #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10)
488 #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf)
490 #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10)
492 #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf)
499 #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
508 #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__)
515 #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
524 #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100)
526 #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100)
533 #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
542 #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__)
544 #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)
553 #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
569 #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
577 #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
586 #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
593 #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
602 #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
609 #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
618 #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
625 #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
634 #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
641 #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
650 #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
657 #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
666 #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
673 #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
683 #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL)
693 #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
703 #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000))
713 #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
722 #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)
729 #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
738 #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf)
745 #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
754 #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100)
761 #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
770 #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0)
777 #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
786 #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__)
793 #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
824 #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
846 #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
848 #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
855 #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
857 #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
882 #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute)
891 #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
893 #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
900 #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
902 #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
920 #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
929 #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
947 #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
956 #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
974 #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
983 #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
999 #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
1001 #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
1008 #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
1010 #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
1028 #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
1037 #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
1206 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
1216 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
1235 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)")
1237 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)")
1250 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"")
1258 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"")
1281 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"")
1283 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
1291 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098")
1295 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)")
1313 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"")
1317 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"")
1326 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"")
1328 #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"")
1347 #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement))
1349 (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \
1362 #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement)))
1364 #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]])
1365 #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]])
1407 #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since)))
1439 #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
1440 #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]])
1442 #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
1443 #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
1562 #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1)))
1571 #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value))
1613#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO)
1614 #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check)))
1615#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO)
1616 #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check)))
1635 #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check)))
1637 #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check))
1670 (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \
1673# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability))
1674# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability))
1675# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability))
1696 (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)))
1700 ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \
1705 ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \
1710# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))
2027 #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]])
2029 #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]])
2098 #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*)
2101 #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*)
2115 #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0)
2118 #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0)
2189# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message))
2286#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion"))
2325 #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
2356#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
2387#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11)
2388 #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L)
2392 #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
2395 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
2516#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
2614#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
2681#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2)
2682#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3)
2683#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4)
2684#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5)
2685#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)
2686#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)
2687#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)
2688#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)
2689#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)
2690#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)
2691#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)
2692#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)
2693#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)
2694#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)
2695#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)
2696#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)
2697#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)
2698#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)
2699#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)
2700#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)
2701#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)
2702#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)
2703#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)
2704#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)
2705#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)
2706#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)
2707#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)
2708#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)
2709#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)
2710#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)
2711#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)
2712#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)
2713#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)
2714#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)
2715#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)
2716#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)
2717#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)
2718#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)
2719#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)
2720#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)
2721#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)
2722#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)
2723#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)
2724#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)
2725#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)
2726#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)
2727#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)
2728#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)
2729#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)
2730#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)
2731#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)
2732#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)
2733#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)
2734#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)
2735#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)
2736#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)
2737#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)
2738#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)
2739#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)
2740#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)
2741#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)
2742#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)
2746#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1);
2754 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__)) } \
2755 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__)) }
2758 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__)) } \
2759 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__)) }
2762 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__)) }
2770 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__)) } \
2771 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__)) }
2774 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__)) }
2777 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__)) } \
2778 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__)) }
2900 inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD*
3038 std::size_t chars_read_total = 0;
3040 std::size_t chars_read_current_line = 0;
3042 std::size_t lines_read = 0;
3070#include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type
3097// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h
3098// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0.
3474 is_basic_json<typename std::remove_cv<typename std::remove_pointer<BasicJsonContext>::type>::type>::value
3536 static constexpr bool value = is_detected<get_template_function, const BasicJsonType&, T>::value;
3565// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.
3583struct has_key_compare : std::integral_constant<bool, is_detected<detect_key_compare, T>::value> {};
3669// Reimplementation of is_constructible and is_default_constructible, due to them being broken for
3670// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367).
3698struct is_constructible<const std::pair<T1, T2>> : is_default_constructible<const std::pair<T1, T2>> {};
3704struct is_constructible<const std::tuple<Ts...>> : is_default_constructible<const std::tuple<Ts...>> {};
3733 // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator
3735 // but reimplementing these would be too much work, as a lot of other concepts are used underneath
3740 static constexpr bool value = !std::is_same<iterator, nonesuch>::value && !std::is_same<sentinel, nonesuch>::value && is_iterator_begin;
3744using iterator_t = enable_if_t<is_range<R>::value, result_of_begin<decltype(std::declval<R&>())>>;
3750// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/
3886!std::is_same<ConstructibleArrayType, detected_t<range_value_t, ConstructibleArrayType>>::value&&
3953struct is_constructible_tuple<T1, std::tuple<Args...>> : conjunction<is_constructible<T1, Args>...> {};
3959struct is_json_iterator_of<BasicJsonType, typename BasicJsonType::iterator> : std::true_type {};
3962struct is_json_iterator_of<BasicJsonType, typename BasicJsonType::const_iterator> : std::true_type
3990template<typename Comparator, typename ObjectKeyType, typename KeyTypeCVRef, bool RequireTransparentComparator = true,
3991 bool ExcludeObjectKeyType = RequireTransparentComparator, typename KeyType = uncvref_t<KeyTypeCVRef>>
4008template<typename BasicJsonType, typename KeyTypeCVRef, bool RequireTransparentComparator = true,
4009 bool ExcludeObjectKeyType = RequireTransparentComparator, typename KeyType = uncvref_t<KeyTypeCVRef>>
4019using detect_erase_with_key_type = decltype(std::declval<ObjectType&>().erase(std::declval<KeyType>()));
4039 char x[2]; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
4045 enum { value = sizeof(test<T>(nullptr)) == sizeof(char) }; // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg)
4048// to avoid useless casts (see https://github.com/nlohmann/json/issues/2893#issuecomment-889152324)
4091 return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
4101 return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
4111 return val >= 0 && static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
4121 return static_cast<CommonType>(val) >= static_cast<CommonType>((std::numeric_limits<OfType>::min)())
4122 && static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
4269using string_can_append = decltype(std::declval<StringType&>().append(std::declval < Arg && > ()));
4275using string_can_append_op = decltype(std::declval<StringType&>() += std::declval < Arg && > ());
4281using string_can_append_iter = decltype(std::declval<StringType&>().append(std::declval<const Arg&>().begin(), std::declval<const Arg&>().end()));
4287using string_can_append_data = decltype(std::declval<StringType&>().append(std::declval<const Arg&>().data(), std::declval<const Arg&>().size()));
4385 exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
4402 for (const auto* current = leaf_element; current != nullptr && current->m_parent != nullptr; current = current->m_parent)
4481 template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
4482 static parse_error create(int id_, const position_t& pos, const std::string& what_arg, BasicJsonContext context)
4489 template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
4490 static parse_error create(int id_, std::size_t byte_, const std::string& what_arg, BasicJsonContext context)
4525 template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
4528 const std::string w = concat(exception::name("invalid_iterator", id_), exception::diagnostics(context), what_arg);
4543 template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
4546 const std::string w = concat(exception::name("type_error", id_), exception::diagnostics(context), what_arg);
4560 template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
4563 const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg);
4577 template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
4580 const std::string w = concat(exception::name("other_error", id_), exception::diagnostics(context), what_arg);
4684 val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
4689 val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
4694 val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
4706 JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j));
4715 JSON_THROW(type_error::create(302, concat("type must be boolean, but is ", j.type_name()), &j));
4725 JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j));
4734 && is_detected_exact<typename BasicJsonType::string_t::value_type, value_type_t, StringType>::value
4741 JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j));
4811auto from_json(const BasicJsonType& j, T (&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
4821inline void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
4841auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
4912-> decltype(from_json_inplace_array_impl(std::forward<BasicJsonType>(j), tag, make_index_sequence<N> {}))
4919 return from_json_inplace_array_impl(std::forward<BasicJsonType>(j), tag, make_index_sequence<N> {});
4927 JSON_THROW(type_error::create(302, concat("type must be binary, but is ", j.type_name()), &j));
4934 enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
4939 JSON_THROW(type_error::create(302, concat("type must be object, but is ", j.type_name()), &j));
4950 return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
4973 val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
4978 val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
4983 val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
4988 val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
4999 JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j));
5004std::tuple<Args...> from_json_tuple_impl_base(BasicJsonType&& j, index_sequence<Idx...> /*unused*/)
5010std::pair<A1, A2> from_json_tuple_impl(BasicJsonType&& j, identity_tag<std::pair<A1, A2>> /*unused*/, priority_tag<0> /*unused*/)
5017inline void from_json_tuple_impl(BasicJsonType&& j, std::pair<A1, A2>& p, priority_tag<1> /*unused*/)
5019 p = from_json_tuple_impl(std::forward<BasicJsonType>(j), identity_tag<std::pair<A1, A2>> {}, priority_tag<0> {});
5023std::tuple<Args...> from_json_tuple_impl(BasicJsonType&& j, identity_tag<std::tuple<Args...>> /*unused*/, priority_tag<2> /*unused*/)
5025 return from_json_tuple_impl_base<BasicJsonType, Args...>(std::forward<BasicJsonType>(j), index_sequence_for<Args...> {});
5029inline void from_json_tuple_impl(BasicJsonType&& j, std::tuple<Args...>& t, priority_tag<3> /*unused*/)
5031 t = from_json_tuple_impl_base<BasicJsonType, Args...>(std::forward<BasicJsonType>(j), index_sequence_for<Args...> {});
5036-> decltype(from_json_tuple_impl(std::forward<BasicJsonType>(j), std::forward<TupleRelated>(t), priority_tag<3> {}))
5043 return from_json_tuple_impl(std::forward<BasicJsonType>(j), std::forward<TupleRelated>(t), priority_tag<3> {});
5046template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
5066template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
5069inline void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
5092 JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j));
5141#include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type
5193 using string_type = typename std::remove_cv< typename std::remove_reference<decltype( std::declval<IteratorType>().key() ) >::type >::type;
5197 IteratorType anchor{};
5199 std::size_t array_index = 0;
5221 && std::is_nothrow_move_constructible<string_type>::value) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor,cppcoreguidelines-noexcept-move-operations)
5224 && std::is_nothrow_move_assignable<string_type>::value) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor,cppcoreguidelines-noexcept-move-operations)
5371class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>> // NOLINT(cert-dcl58-cpp)
5375class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >> // NOLINT(cert-dcl58-cpp)
5390 inline constexpr bool ::std::ranges::enable_borrowed_range<::nlohmann::detail::iteration_proxy<IteratorType>> = true;
5506 static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
5561 j.m_data.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));
5622 enable_if_t < !std::is_same<CompatibleObjectType, typename BasicJsonType::object_t>::value, int > = 0 >
5630 j.m_data.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));
5657 external_constructor<value_t::boolean>::construct(j, static_cast<typename BasicJsonType::boolean_t>(b));
5661 enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
5677 external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
5681 enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0>
5684 external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
5688 enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0>
5691 external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
5743 enable_if_t < is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value&& !is_basic_json<CompatibleObjectType>::value, int > = 0 >
5758 const T(&)[N]>::value, // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
5760inline void to_json(BasicJsonType& j, const T(&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
5765template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible<BasicJsonType, T1>::value&& std::is_constructible<BasicJsonType, T2>::value, int > = 0 >
5773 enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0>
5780inline void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/)
5785template<typename BasicJsonType, typename T, enable_if_t<is_constructible_tuple<BasicJsonType, T>::value, int > = 0>
5802 auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val))))
5848 noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {})))
5849 -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}))
5851 return ::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {});
5907 byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b))))
5912 byte_container_with_subtype(const container_type& b, subtype_type subtype_) noexcept(noexcept(container_type(b)))
5919 byte_container_with_subtype(container_type&& b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b))))
6104 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
6346 utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((static_cast<unsigned int>(wc) >> 6u) & 0x1Fu));
6347 utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
6352 utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((static_cast<unsigned int>(wc) >> 12u) & 0x0Fu));
6353 utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
6354 utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
6359 utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((static_cast<unsigned int>(wc) >> 18u) & 0x07u));
6360 utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 12u) & 0x3Fu));
6361 utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
6362 utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
6404 utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((static_cast<unsigned int>(wc) >> 6u)));
6405 utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
6410 utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((static_cast<unsigned int>(wc) >> 12u)));
6411 utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
6412 utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
6420 const auto charcode = 0x10000u + (((static_cast<unsigned int>(wc) & 0x3FFu) << 10u) | (wc2 & 0x3FFu));
6422 utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu));
6423 utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu));
6470 wide_string_input_helper<BaseInputAdapter, T>::fill_buffer(base_adapter, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);
6474 std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};
6477 std::size_t utf8_bytes_index = 0;
6479 std::size_t utf8_bytes_filled = 0;
6506struct iterator_input_adapter_factory<IteratorType, enable_if_t<is_iterator_of_multibyte<IteratorType>::value>>
6521typename iterator_input_adapter_factory<IteratorType>::adapter_type input_adapter(IteratorType first, IteratorType last)
6544 using adapter_type = decltype(input_adapter(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>())));
6555typename container_input_adapter_factory_impl::container_input_adapter_factory<ContainerType>::adapter_type input_adapter(const ContainerType& container)
6557 return container_input_adapter_factory_impl::container_input_adapter_factory<ContainerType>::create(container);
6578using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval<const char*>(), std::declval<const char*>()));
6596auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, array + N)) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
6618 std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,
6819 json_sax_dom_parser(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor)
6821 json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor)
6870 if (JSON_HEDLEY_UNLIKELY(len != static_cast<std::size_t>(-1) && len > ref_stack.back()->max_size()))
6872 JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back()));
6902 if (JSON_HEDLEY_UNLIKELY(len != static_cast<std::size_t>(-1) && len > ref_stack.back()->max_size()))
6904 JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back()));
6972 std::vector<BasicJsonType*> ref_stack {};
7003 json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor)
7005 json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor)
7053 const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded);
7060 if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast<std::size_t>(-1) && len > ref_stack.back()->max_size()))
7062 JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back()));
7089 if (!callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
7123 const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded);
7130 if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast<std::size_t>(-1) && len > ref_stack.back()->max_size()))
7132 JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back()));
7144 keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
7220 const bool keep = skip_callback || callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);
7271 std::vector<BasicJsonType*> ref_stack {};
7273 std::vector<bool> keep_stack {};
7275 std::vector<bool> key_keep_stack {};
7358 bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/)
7505 lexer& operator=(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor)
7597 if (JSON_HEDLEY_LIKELY(*range <= current && current <= *(++range))) // NOLINT(bugprone-inc-dec-in-conditions)
7770 add(static_cast<char_int_type>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
7777 add(static_cast<char_int_type>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu)));
7778 add(static_cast<char_int_type>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
7845 error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b";
7851 error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t";
7857 error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n";
7869 error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f";
7875 error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r";
8381 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
8830 static_cast<void>((std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg)
8924 std::array<char_type, 4> true_literal = {{static_cast<char_type>('t'), static_cast<char_type>('r'), static_cast<char_type>('u'), static_cast<char_type>('e')}};
8929 std::array<char_type, 5> false_literal = {{static_cast<char_type>('f'), static_cast<char_type>('a'), static_cast<char_type>('l'), static_cast<char_type>('s'), static_cast<char_type>('e')}};
8934 std::array<char_type, 4> null_literal = {{static_cast<char_type>('n'), static_cast<char_type>('u'), static_cast<char_type>('l'), static_cast<char_type>('l')}};
8986 std::vector<char_type> token_string {};
9210template<typename BasicJsonType, typename InputAdapterType, typename SAX = json_sax_dom_parser<BasicJsonType>>
9228 explicit binary_reader(InputAdapterType&& adapter, const input_format_t format = input_format_t::json) noexcept : ia(std::move(adapter)), input_format(format)
9235 binary_reader(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor)
9237 binary_reader& operator=(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor)
9278 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
9296 exception_message(input_format, concat("expected end of input; last byte: 0x", get_token_string()), "value"), nullptr));
9373 exception_message(input_format_t::bson, concat("string length must be at least 1, is ", std::to_string(len)), "string"), nullptr));
9376 return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) && get() != char_traits<char_type>::eof();
9395 exception_message(input_format_t::bson, concat("byte array length cannot be negative, is ", std::to_string(len)), "binary"), nullptr));
9424 return get_number<double, true>(input_format_t::bson, number) && sax->number_float(static_cast<number_float_t>(number), "");
9431 return get_number<std::int32_t, true>(input_format_t::bson, len) && get_bson_string(len, value) && sax->string(value);
9448 return get_number<std::int32_t, true>(input_format_t::bson, len) && get_bson_binary(len, value) && sax->binary(value);
9464 return get_number<std::int32_t, true>(input_format_t::bson, value) && sax->number_integer(value);
9470 return get_number<std::int64_t, true>(input_format_t::bson, value) && sax->number_integer(value);
9476 static_cast<void>((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg)
9479 parse_error::create(114, element_type_parse_position, concat("Unsupported BSON record type 0x", cr_str), nullptr));
9518 if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position)))
9654 return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1) - number);
9660 return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1) - number);
9666 return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1) - number);
9672 return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1)
9772 conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu), tag_handler);
9777 return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast<std::size_t>(len), tag_handler);
9783 return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast<std::size_t>(len), tag_handler);
9789 return get_number(input_format_t::cbor, len) && get_cbor_array(conditional_static_cast<std::size_t>(len), tag_handler);
9795 return get_number(input_format_t::cbor, len) && get_cbor_array(conditional_static_cast<std::size_t>(len), tag_handler);
9826 return get_cbor_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu), tag_handler);
9831 return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast<std::size_t>(len), tag_handler);
9837 return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast<std::size_t>(len), tag_handler);
9843 return get_number(input_format_t::cbor, len) && get_cbor_object(conditional_static_cast<std::size_t>(len), tag_handler);
9849 return get_number(input_format_t::cbor, len) && get_cbor_object(conditional_static_cast<std::size_t>(len), tag_handler);
9881 exception_message(input_format_t::cbor, concat("invalid byte: 0x", last_token), "value"), nullptr));
9961 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
10026 return get_number(input_format_t::cbor, number) && sax->number_float(static_cast<number_float_t>(number), "");
10032 return get_number(input_format_t::cbor, number) && sax->number_float(static_cast<number_float_t>(number), "");
10039 exception_message(input_format_t::cbor, concat("invalid byte: 0x", last_token), "value"), nullptr));
10096 return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
10102 return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
10108 return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
10114 return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
10135 exception_message(input_format_t::cbor, concat("expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x", last_token), "string"), nullptr));
10235 exception_message(input_format_t::cbor, concat("expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x", last_token), "binary"), nullptr));
10496 return get_msgpack_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
10515 return get_msgpack_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
10586 return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast<number_float_t>(number), "");
10592 return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast<number_float_t>(number), "");
10646 return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast<std::size_t>(len));
10652 return get_number(input_format_t::msgpack, len) && get_msgpack_array(conditional_static_cast<std::size_t>(len));
10658 return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast<std::size_t>(len));
10664 return get_number(input_format_t::msgpack, len) && get_msgpack_object(conditional_static_cast<std::size_t>(len));
10706 exception_message(input_format_t::msgpack, concat("invalid byte: 0x", last_token), "value"), nullptr));
10764 return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result);
10770 return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result);
10776 return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result);
10782 return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result);
10789 exception_message(input_format_t::msgpack, concat("expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x", last_token), "string"), nullptr));
11079 message = "expected length type specification (U, i, u, I, m, l, M, L); last byte: 0x" + last_token;
11081 return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format, message, "string"), nullptr));
11183 exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr));
11185 result = static_cast<std::size_t>(number); // NOLINT(bugprone-signed-char-misuse,cert-str34-c): number is not a char
11199 exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr));
11215 exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr));
11231 exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr));
11298 if (is_ndarray) // ndarray dimensional vector can only contain integers, and can not embed another array
11300 return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, exception_message(input_format, "ndarray dimensional vector is not allowed", "size"), nullptr));
11307 if (dim.size() == 1 || (dim.size() == 2 && dim.at(0) == 1)) // return normal array size if 1D row vector
11314 for (auto i : dim) // test if any dimension in an ndarray is 0, if so, return a 1D empty container
11324 if (JSON_HEDLEY_UNLIKELY(!sax->start_object(3) || !sax->key(key) || !sax->start_array(dim.size())))
11332 if (result == 0 || result == npos) // because dim elements shall not have zeros, result = 0 means overflow happened; it also can't be npos as it is used to initialize size in get_ubjson_size_type()
11334 return sax->parse_error(chars_read, get_token_string(), out_of_range::create(408, exception_message(input_format, "excessive ndarray size caused overflow", "size"), nullptr));
11356 message = "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token;
11360 message = "expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x" + last_token;
11362 return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format, message, "size"), nullptr));
11376 bool get_ubjson_size_type(std::pair<std::size_t, char_int_type>& result, bool inside_ndarray = false)
11388 && JSON_HEDLEY_UNLIKELY(std::binary_search(bjd_optimized_type_markers.begin(), bjd_optimized_type_markers.end(), result.second)))
11392 exception_message(input_format, concat("marker 0x", last_token, " is not a permitted optimized array type"), "type"), nullptr));
11409 exception_message(input_format, concat("expected '#' after type information; last byte: 0x", last_token), "size"), nullptr));
11420 result.second |= (1 << 8); // use bit 8 to indicate ndarray, all UBJSON and BJData markers should be ASCII letters
11573 return get_number(input_format, number) && sax->number_float(static_cast<number_float_t>(number), "");
11579 return get_number(input_format, number) && sax->number_float(static_cast<number_float_t>(number), "");
11598 exception_message(input_format, concat("byte after 'C' must be in range 0x00..0x7F; last byte: 0x", last_token), "char"), nullptr));
11620 return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format, "invalid byte: 0x" + last_token, "value"), nullptr));
11634 // if bit-8 of size_and_type.second is set to 1, encode bjdata ndarray as an object in JData annotated array format (https://github.com/NeuroJSON/jdata):
11637 if (input_format == input_format_t::bjdata && size_and_type.first != npos && (size_and_type.second & (1 << 8)) != 0)
11639 size_and_type.second &= ~(static_cast<char_int_type>(1) << 8); // use bit 8 to indicate ndarray, here we remove the bit to restore the type marker
11640 auto it = std::lower_bound(bjd_types_map.begin(), bjd_types_map.end(), size_and_type.second, [](const bjd_type & p, char_int_type t)
11743 if (input_format == input_format_t::bjdata && size_and_type.first != npos && (size_and_type.second & (1 << 8)) != 0)
11747 exception_message(input_format, "BJData object does not support ND-array size in optimized format", "object"), nullptr));
11842 auto number_lexer = detail::lexer<BasicJsonType, ia_type>(detail::input_adapter(number_vector), false);
11852 exception_message(input_format, concat("invalid number text: ", number_lexer.get_token_string()), "high-precision number"), nullptr));
11879 exception_message(input_format, concat("invalid number text: ", number_lexer.get_token_string()), "high-precision number"), nullptr));
12037 parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context), nullptr));
12048 static_cast<void>((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg)
12088 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
12104 std::size_t chars_read = 0;
12136 const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers =
12301 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), nullptr));
12339 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), nullptr));
12348 bool sax_parse_internal(SAX* sax)
12385 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), nullptr));
12397 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), nullptr));
12440 out_of_range::create(406, concat("number overflow parsing '", m_lexer.get_token_string(), '\''), nullptr));
12510 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::uninitialized, "value"), nullptr));
12519 "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
12524 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), nullptr));
12536 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), nullptr));
12582 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_array, "array"), nullptr));
12595 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), nullptr));
12608 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), nullptr));
12636 parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_object, "object"), nullptr));
12790 friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
12872#include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next
12915class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-special-member-functions)
12918 using other_iter_impl = iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
12931 static_assert(std::is_base_of<std::bidirectional_iterator_tag, std::bidirectional_iterator_tag>::value
12932 && std::is_base_of<std::bidirectional_iterator_tag, typename std::iterator_traits<typename array_t::iterator>::iterator_category>::value,
12933 "basic_json iterator assumes array and object type iterators satisfy the LegacyBidirectionalIterator named requirement.");
13053 iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept // NOLINT(cert-oop54-cpp)
13336 template < typename IterImpl, detail::enable_if_t < (std::is_same<IterImpl, iter_impl>::value || std::is_same<IterImpl, other_iter_impl>::value), std::nullptr_t > = nullptr >
13342 JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", m_object));
13372 template < typename IterImpl, detail::enable_if_t < (std::is_same<IterImpl, iter_impl>::value || std::is_same<IterImpl, other_iter_impl>::value), std::nullptr_t > = nullptr >
13387 JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", m_object));
13395 JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators", m_object));
13451 JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", m_object));
13530 JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", m_object));
13559 JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators", m_object));
13599 JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators", m_object));
13936 friend json_pointer operator/(const json_pointer& lhs, string_t token) // NOLINT(performance-unnecessary-value-param)
14026 JSON_THROW(detail::parse_error::create(106, 0, detail::concat("array index '", s, "' must not begin with '0'"), nullptr));
14032 JSON_THROW(detail::parse_error::create(109, 0, detail::concat("array index '", s, "' is not a number"), nullptr));
14043 JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", s, "'"), nullptr));
14048 if (res >= static_cast<unsigned long long>((std::numeric_limits<size_type>::max)())) // NOLINT(runtime/int)
14050 JSON_THROW(detail::out_of_range::create(410, detail::concat("array index ", s, " exceeds size_type"), nullptr)); // LCOV_EXCL_LINE
14213 JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr));
14264 JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr));
14303 JSON_THROW(detail::out_of_range::create(402, detail::concat("array index '-' (", std::to_string(ptr->m_data.m_value.array->size()), ") is out of range"), ptr));
14320 JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr));
14371 JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr));
14408 if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9")))
14484 JSON_THROW(detail::parse_error::create(107, 1, detail::concat("JSON pointer must be empty or begin with '/' - was: '", reference_string, "'"), nullptr));
14519 JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'", nullptr));
14577 flatten(detail::concat(reference_string, '/', detail::escape(element.first)), element.second, result);
14626 JSON_THROW(detail::type_error::create(315, "values in object must be primitive", &element.second));
14674 std::strong_ordering operator<=>(const json_pointer<RefStringTypeRhs>& rhs) const noexcept // *NOPAD*
15120 JSON_THROW(type_error::create(317, concat("to serialize to BSON, top-level type must be object, but is ", j.type_name()), &j));
15253 oa->write_character(j.m_data.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC));
15853 std::vector<CharType> bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type
15855 if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end()))
15927 if (use_bjdata && j.m_data.m_value.object->size() == 3 && j.m_data.m_value.object->find("_ArrayType_") != j.m_data.m_value.object->end() && j.m_data.m_value.object->find("_ArraySize_") != j.m_data.m_value.object->end() && j.m_data.m_value.object->find("_ArrayData_") != j.m_data.m_value.object->end())
15929 if (!write_bjdata_ndarray(*j.m_data.m_value.object, use_count, use_type)) // decode bjdata ndarray in the JData format (https://github.com/NeuroJSON/jdata)
15951 std::vector<CharType> bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type
15953 if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end()))
16004 JSON_THROW(out_of_range::create(409, concat("BSON key cannot contain code point U+0000 (at byte ", std::to_string(it), ")"), &j));
16078 return (std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)()
16089 if ((std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)())
16117 if (j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
16120 write_number<std::int32_t>(static_cast<std::int32_t>(j.m_data.m_value.number_unsigned), true);
16122 else if (j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
16125 write_number<std::int64_t>(static_cast<std::int64_t>(j.m_data.m_value.number_unsigned), true);
16129 JSON_THROW(out_of_range::create(407, concat("integer number ", std::to_string(j.m_data.m_value.number_unsigned), " cannot be represented by BSON as it does not fit int64"), &j));
16150 const std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), static_cast<std::size_t>(0), [&array_index](std::size_t result, const typename BasicJsonType::array_t::value_type & el)
16194 write_number(value.has_subtype() ? static_cast<std::uint8_t>(value.subtype()) : static_cast<std::uint8_t>(0x00));
16300 const std::size_t document_size = std::accumulate(value.begin(), value.end(), static_cast<std::size_t>(0),
16466 if ((std::numeric_limits<std::int8_t>::min)() <= n && n <= (std::numeric_limits<std::int8_t>::max)())
16474 else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n && n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
16482 else if ((std::numeric_limits<std::int16_t>::min)() <= n && n <= (std::numeric_limits<std::int16_t>::max)())
16490 else if (use_bjdata && (static_cast<std::int64_t>((std::numeric_limits<std::uint16_t>::min)()) <= n && n <= static_cast<std::int64_t>((std::numeric_limits<std::uint16_t>::max)())))
16498 else if ((std::numeric_limits<std::int32_t>::min)() <= n && n <= (std::numeric_limits<std::int32_t>::max)())
16506 else if (use_bjdata && (static_cast<std::int64_t>((std::numeric_limits<std::uint32_t>::min)()) <= n && n <= static_cast<std::int64_t>((std::numeric_limits<std::uint32_t>::max)())))
16514 else if ((std::numeric_limits<std::int64_t>::min)() <= n && n <= (std::numeric_limits<std::int64_t>::max)())
16555 if ((std::numeric_limits<std::int8_t>::min)() <= j.m_data.m_value.number_integer && j.m_data.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
16559 if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_data.m_value.number_integer && j.m_data.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
16563 if ((std::numeric_limits<std::int16_t>::min)() <= j.m_data.m_value.number_integer && j.m_data.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
16567 if (use_bjdata && ((std::numeric_limits<std::uint16_t>::min)() <= j.m_data.m_value.number_integer && j.m_data.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)()))
16571 if ((std::numeric_limits<std::int32_t>::min)() <= j.m_data.m_value.number_integer && j.m_data.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
16575 if (use_bjdata && ((std::numeric_limits<std::uint32_t>::min)() <= j.m_data.m_value.number_integer && j.m_data.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)()))
16579 if ((std::numeric_limits<std::int64_t>::min)() <= j.m_data.m_value.number_integer && j.m_data.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
16589 if (j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
16593 if (j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint8_t>::max)()))
16597 if (j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
16601 if (use_bjdata && j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint16_t>::max)()))
16605 if (j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
16609 if (use_bjdata && j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint32_t>::max)()))
16613 if (j.m_data.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
16617 if (use_bjdata && j.m_data.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
16657 bool write_bjdata_ndarray(const typename BasicJsonType::object_t& value, const bool use_count, const bool use_type)
16659 std::map<string_t, CharType> bjdtype = {{"uint8", 'U'}, {"int8", 'i'}, {"uint16", 'u'}, {"int16", 'I'},
16660 {"uint32", 'm'}, {"int32", 'l'}, {"uint64", 'M'}, {"int64", 'L'}, {"single", 'd'}, {"double", 'D'}, {"char", 'C'}
16843 static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
17111 constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit)
17116 using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;
17384 const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;
17515 std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e)
17516 std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e)
17527 auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)
17812 // representation using the corresponding std::from_chars function recovers value exactly". That
17919 std::memmove(buf + (static_cast<size_t>(n) + 1), buf + n, static_cast<size_t>(k) - static_cast<size_t>(n));
18018 JSON_ASSERT(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);
18079 , thousands_sep(loc->thousands_sep == nullptr ? '\0' : std::char_traits<char>::to_char_type(* (loc->thousands_sep)))
18080 , decimal_point(loc->decimal_point == nullptr ? '\0' : std::char_traits<char>::to_char_type(* (loc->decimal_point)))
18380 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
18521 JSON_THROW(type_error::create(316, concat("invalid UTF-8 byte at index ", std::to_string(i), ": 0x", hex_bytes(byte | 0)), nullptr));
18579 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
18613 JSON_THROW(type_error::create(316, concat("incomplete UTF-8 string; last byte: 0x", hex_bytes(static_cast<std::uint8_t>(s.back() | 0))), nullptr));
18640 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
18727 {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
18728 {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
18729 {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
18730 {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
18731 {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
18732 {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
18733 {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
18734 {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
18735 {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
18736 {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
18748 auto buffer_ptr = number_buffer.begin(); // NOLINT(llvm-qualified-auto,readability-qualified-auto,cppcoreguidelines-pro-type-vararg,hicpp-vararg)
18822 = (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 24 && std::numeric_limits<number_float_t>::max_exponent == 128) ||
18823 (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 53 && std::numeric_limits<number_float_t>::max_exponent == 1024);
18843 std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x);
18853 // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::remove returns an iterator, see https://github.com/nlohmann/json/issues/3081
18854 const auto end = std::remove(number_buffer.begin(), number_buffer.begin() + len, thousands_sep);
18863 // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::find returns an iterator, see https://github.com/nlohmann/json/issues/3081
18908 static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept
18913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
18914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
18915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
18916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
18917 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
18918 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
18919 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
18923 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
18924 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
18925 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
18926 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
18937 const std::size_t index = 256u + static_cast<size_t>(state) * 16u + static_cast<size_t>(type);
18950 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
18965 JSON_ASSERT(x < 0 && x < (std::numeric_limits<number_integer_t>::max)()); // NOLINT(misc-redundant-expression)
18974 std::array<char, 64> number_buffer{{}};
18984 std::array<char, 512> string_buffer{{}};
19051 explicit ordered_map(const Allocator& alloc) noexcept(noexcept(Container(alloc))) : Container{alloc} {}
19244 new (&*it) value_type{std::move(*std::next(it, elements_affected))}; // "move" next element to it
19347 using require_input_iter = typename std::enable_if<std::is_convertible<typename std::iterator_traits<InputIt>::iterator_category,
19399class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-special-member-functions)
19453 template<typename Base> using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator<Base>;
19460 template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
19627 // in functions involving lookup by key with types other than object_t::key_type (aka. StringType)
19819 JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.11.3", nullptr)); // LCOV_EXCL_LINE
19845 json_value(const typename binary_t::container_type& value) : binary(create<binary_t>(value)) {}
19848 json_value(typename binary_t::container_type&& value) : binary(create<binary_t>(std::move(value))) {}
19898 std::move(current_item.m_data.m_value.array->begin(), current_item.m_data.m_value.array->end(), std::back_inserter(stack));
19995 JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json & j)
20136 !detail::is_basic_json<U>::value && detail::is_compatible_type<basic_json_t, U>::value, int > = 0 >
20137 basic_json(CompatibleType && val) noexcept(noexcept( // NOLINT(bugprone-forwarding-reference-overload,bugprone-exception-escape)
20150 detail::is_basic_json<BasicJsonType>::value&& !std::is_same<basic_json, BasicJsonType>::value, int > = 0 >
20168 JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>());
20171 JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>());
20174 JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>());
20177 JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>());
20180 JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>());
20186 JSONSerializer<other_binary_t>::to_json(*this, val.template get_ref<const other_binary_t&>());
20195 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
20216 return element_ref->is_array() && element_ref->size() == 2 && (*element_ref)[static_cast<size_type>(0)].is_string();
20274 static basic_json binary(const typename binary_t::container_type& init, typename binary_t::subtype_type subtype)
20296 static basic_json binary(typename binary_t::container_type&& init, typename binary_t::subtype_type subtype)
20429 JSON_THROW(invalid_iterator::create(206, detail::concat("cannot construct with iterators from ", first.m_object->type_name()), first.m_object));
20714 JSON_THROW(type_error::create(302, detail::concat("type must be boolean, but is ", type_name()), this));
20772 constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept
20784 constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept
20835 JSON_THROW(type_error::create(303, detail::concat("incompatible ReferenceType for get_ref, actual type is ", obj.type_name()), &obj));
20847 auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
20858 constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
20909 JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>())))
21047 noexcept(std::declval<const basic_json_t&>().template get_impl<ValueType>(detail::priority_tag<4> {})))
21048 -> decltype(std::declval<const basic_json_t&>().template get_impl<ValueType>(detail::priority_tag<4> {}))
21087 auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
21121 typename Array = T (&)[N], // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
21124 Array get_to(T (&v)[N]) const // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
21189 detail::negation<std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>>,
21190#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914))
21210 JSON_THROW(type_error::create(302, detail::concat("type must be binary, but is ", type_name()), this));
21222 JSON_THROW(type_error::create(302, detail::concat("type must be binary, but is ", type_name()), this));
21252 JSON_THROW(out_of_range::create(401, detail::concat("array index ", std::to_string(idx), " is out of range"), this));
21257 JSON_THROW(type_error::create(304, detail::concat("cannot use at() with ", type_name()), this));
21275 JSON_THROW(out_of_range::create(401, detail::concat("array index ", std::to_string(idx), " is out of range"), this));
21280 JSON_THROW(type_error::create(304, detail::concat("cannot use at() with ", type_name()), this));
21291 JSON_THROW(type_error::create(304, detail::concat("cannot use at() with ", type_name()), this));
21311 JSON_THROW(type_error::create(304, detail::concat("cannot use at() with ", type_name()), this));
21317 JSON_THROW(out_of_range::create(403, detail::concat("key '", string_t(std::forward<KeyType>(key)), "' not found"), this));
21329 JSON_THROW(type_error::create(304, detail::concat("cannot use at() with ", type_name()), this));
21349 JSON_THROW(type_error::create(304, detail::concat("cannot use at() with ", type_name()), this));
21355 JSON_THROW(out_of_range::create(403, detail::concat("key '", string_t(std::forward<KeyType>(key)), "' not found"), this));
21394 set_parents(begin() + static_cast<typename iterator::difference_type>(old_size), static_cast<typename iterator::difference_type>(idx + 1 - old_size));
21403 JSON_THROW(type_error::create(305, detail::concat("cannot use operator[] with a numeric argument with ", type_name()), this));
21416 JSON_THROW(type_error::create(305, detail::concat("cannot use operator[] with a numeric argument with ", type_name()), this));
21438 JSON_THROW(type_error::create(305, detail::concat("cannot use operator[] with a string argument with ", type_name()), this));
21453 JSON_THROW(type_error::create(305, detail::concat("cannot use operator[] with a string argument with ", type_name()), this));
21491 JSON_THROW(type_error::create(305, detail::concat("cannot use operator[] with a string argument with ", type_name()), this));
21508 JSON_THROW(type_error::create(305, detail::concat("cannot use operator[] with a string argument with ", type_name()), this));
21543 JSON_THROW(type_error::create(306, detail::concat("cannot use value() with ", type_name()), this));
21568 JSON_THROW(type_error::create(306, detail::concat("cannot use value() with ", type_name()), this));
21594 JSON_THROW(type_error::create(306, detail::concat("cannot use value() with ", type_name()), this));
21599 template < class ValueType, class KeyType, class ReturnType = typename value_return_type<ValueType>::type,
21621 JSON_THROW(type_error::create(306, detail::concat("cannot use value() with ", type_name()), this));
21645 JSON_THROW(type_error::create(306, detail::concat("cannot use value() with ", type_name()), this));
21670 JSON_THROW(type_error::create(306, detail::concat("cannot use value() with ", type_name()), this));
21677 JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) // NOLINT(readability/alt_tokens)
21678 ValueType value(const ::nlohmann::json_pointer<BasicJsonType>& ptr, const ValueType& default_value) const
21683 template < class ValueType, class BasicJsonType, class ReturnType = typename value_return_type<ValueType>::type,
21688 JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) // NOLINT(readability/alt_tokens)
21689 ReturnType value(const ::nlohmann::json_pointer<BasicJsonType>& ptr, ValueType && default_value) const
21790 JSON_THROW(type_error::create(307, detail::concat("cannot use erase() with ", type_name()), this));
21863 JSON_THROW(type_error::create(307, detail::concat("cannot use erase() with ", type_name()), this));
21877 JSON_THROW(type_error::create(307, detail::concat("cannot use erase() with ", type_name()), this));
21890 JSON_THROW(type_error::create(307, detail::concat("cannot use erase() with ", type_name()), this));
21931 JSON_THROW(out_of_range::create(401, detail::concat("array index ", std::to_string(idx), " is out of range"), this));
21934 m_data.m_value.array->erase(m_data.m_value.array->begin() + static_cast<difference_type>(idx));
21938 JSON_THROW(type_error::create(307, detail::concat("cannot use erase() with ", type_name()), this));
22042 return is_object() && m_data.m_value.object->find(std::forward<KeyType>(key)) != m_data.m_value.object->end();
22052 template<typename BasicJsonType, detail::enable_if_t<detail::is_basic_json<BasicJsonType>::value, int> = 0>
22053 JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) // NOLINT(readability/alt_tokens)
22395 JSON_THROW(type_error::create(308, detail::concat("cannot use push_back() with ", type_name()), this));
22410 // if val is moved from, basic_json move constructor marks it null, so we do not call the destructor
22428 JSON_THROW(type_error::create(308, detail::concat("cannot use push_back() with ", type_name()), this));
22460 JSON_THROW(type_error::create(308, detail::concat("cannot use push_back() with ", type_name()), this));
22516 JSON_THROW(type_error::create(311, detail::concat("cannot use emplace_back() with ", type_name()), this));
22541 JSON_THROW(type_error::create(311, detail::concat("cannot use emplace() with ", type_name()), this));
22578 // result.m_it.array_iterator = m_data.m_value.array->insert(pos.m_it.array_iterator, cnt, val);
22602 JSON_THROW(type_error::create(309, detail::concat("cannot use insert() with ", type_name()), this));
22629 JSON_THROW(type_error::create(309, detail::concat("cannot use insert() with ", type_name()), this));
22639 JSON_THROW(type_error::create(309, detail::concat("cannot use insert() with ", type_name()), this));
22656 JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container", this));
22670 JSON_THROW(type_error::create(309, detail::concat("cannot use insert() with ", type_name()), this));
22690 JSON_THROW(type_error::create(309, detail::concat("cannot use insert() with ", type_name()), this));
22702 JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects", this));
22729 JSON_THROW(type_error::create(312, detail::concat("cannot use update() with ", type_name()), this));
22741 JSON_THROW(type_error::create(312, detail::concat("cannot use update() with ", first.m_object->type_name()), first.m_object));
22767 std::is_nothrow_move_constructible<json_value>::value&& // NOLINT(cppcoreguidelines-noexcept-swap,performance-noexcept-swap)
22784 std::is_nothrow_move_constructible<json_value>::value&& // NOLINT(cppcoreguidelines-noexcept-swap,performance-noexcept-swap)
22793 void swap(array_t& other) // NOLINT(bugprone-exception-escape,cppcoreguidelines-noexcept-swap,performance-noexcept-swap)
22803 JSON_THROW(type_error::create(310, detail::concat("cannot use swap(array_t&) with ", type_name()), this));
22809 void swap(object_t& other) // NOLINT(bugprone-exception-escape,cppcoreguidelines-noexcept-swap,performance-noexcept-swap)
22819 JSON_THROW(type_error::create(310, detail::concat("cannot use swap(object_t&) with ", type_name()), this));
22825 void swap(string_t& other) // NOLINT(bugprone-exception-escape,cppcoreguidelines-noexcept-swap,performance-noexcept-swap)
22835 JSON_THROW(type_error::create(310, detail::concat("cannot use swap(string_t&) with ", type_name()), this));
22841 void swap(binary_t& other) // NOLINT(bugprone-exception-escape,cppcoreguidelines-noexcept-swap,performance-noexcept-swap)
22851 JSON_THROW(type_error::create(310, detail::concat("cannot use swap(binary_t&) with ", type_name()), this));
22867 JSON_THROW(type_error::create(310, detail::concat("cannot use swap(binary_t::container_type&) with ", type_name()), this));
22924 return static_cast<number_float_t>(lhs.m_data.m_value.number_integer) op rhs.m_data.m_value.number_float; \
22928 return lhs.m_data.m_value.number_float op static_cast<number_float_t>(rhs.m_data.m_value.number_integer); \
22932 return static_cast<number_float_t>(lhs.m_data.m_value.number_unsigned) op rhs.m_data.m_value.number_float; \
22936 return lhs.m_data.m_value.number_float op static_cast<number_float_t>(rhs.m_data.m_value.number_unsigned); \
22940 return static_cast<number_integer_t>(lhs.m_data.m_value.number_unsigned) op rhs.m_data.m_value.number_integer; \
22944 return lhs.m_data.m_value.number_integer op static_cast<number_integer_t>(rhs.m_data.m_value.number_unsigned); \
22959 static bool compares_unordered(const_reference lhs, const_reference rhs, bool inverse = false) noexcept
23323 parser(detail::input_adapter(std::forward<InputType>(i)), cb, allow_exceptions, ignore_comments).parse(true, result);
23338 parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
23360 return parser(detail::input_adapter(std::forward<InputType>(i)), nullptr, false, ignore_comments).accept(true);
23369 return parser(detail::input_adapter(std::move(first), std::move(last)), nullptr, false, ignore_comments).accept(true);
23392 : detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia), format).sax_parse(format, sax, strict);
23407 : detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia), format).sax_parse(format, sax, strict);
23428 : detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia), format).sax_parse(format, sax, strict);
23672 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::cbor).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler);
23688 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::cbor).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler);
23714 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::cbor).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler);
23729 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::msgpack).sax_parse(input_format_t::msgpack, &sdp, strict);
23744 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::msgpack).sax_parse(input_format_t::msgpack, &sdp, strict);
23768 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::msgpack).sax_parse(input_format_t::msgpack, &sdp, strict);
23783 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::ubjson).sax_parse(input_format_t::ubjson, &sdp, strict);
23798 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::ubjson).sax_parse(input_format_t::ubjson, &sdp, strict);
23822 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::ubjson).sax_parse(input_format_t::ubjson, &sdp, strict);
23837 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::bjdata).sax_parse(input_format_t::bjdata, &sdp, strict);
23852 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::bjdata).sax_parse(input_format_t::bjdata, &sdp, strict);
23867 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::bson).sax_parse(input_format_t::bson, &sdp, strict);
23882 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::bson).sax_parse(input_format_t::bson, &sdp, strict);
23906 const bool res = binary_reader<decltype(ia)>(std::move(ia), input_format_t::bson).sax_parse(input_format_t::bson, &sdp, strict);
23925 template<typename BasicJsonType, detail::enable_if_t<detail::is_basic_json<BasicJsonType>::value, int> = 0>
23926 JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) // NOLINT(readability/alt_tokens)
23939 template<typename BasicJsonType, detail::enable_if_t<detail::is_basic_json<BasicJsonType>::value, int> = 0>
23940 JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) // NOLINT(readability/alt_tokens)
23953 template<typename BasicJsonType, detail::enable_if_t<detail::is_basic_json<BasicJsonType>::value, int> = 0>
23954 JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) // NOLINT(readability/alt_tokens)
23967 template<typename BasicJsonType, detail::enable_if_t<detail::is_basic_json<BasicJsonType>::value, int> = 0>
23968 JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) // NOLINT(readability/alt_tokens)
24083 JSON_THROW(out_of_range::create(401, detail::concat("array index ", std::to_string(idx), " is out of range"), &parent));
24101 JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
24124 JSON_THROW(out_of_range::create(403, detail::concat("key '", last_path, "' not found"), this));
24137 JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects", &json_patch));
24158 JSON_THROW(parse_error::create(105, 0, detail::concat(error_msg, " must have member '", member, "'"), &val));
24165 JSON_THROW(parse_error::create(105, 0, detail::concat(error_msg, " must have string member '", member, "'"), &val));
24264 JSON_THROW(parse_error::create(105, 0, detail::concat("operation value '", op, "' is invalid"), &val));
24514struct less< ::nlohmann::detail::value_t> // do not remove the space after '<', see https://github.com/nlohmann/json/pull/679
24537inline void swap(nlohmann::NLOHMANN_BASIC_JSON_TPL& j1, nlohmann::NLOHMANN_BASIC_JSON_TPL& j2) noexcept( // NOLINT(readability-inconsistent-declaration-parameter-name, cert-dcl58-cpp)
24538 is_nothrow_move_constructible<nlohmann::NLOHMANN_BASIC_JSON_TPL>::value&& // NOLINT(misc-redundant-expression,cppcoreguidelines-noexcept-swap,performance-noexcept-swap)
24550 using nlohmann::literals::json_literals::operator ""_json; // NOLINT(misc-unused-using-decls,google-global-names-in-headers)
24551 using nlohmann::literals::json_literals::operator ""_json_pointer; //NOLINT(misc-unused-using-decls,google-global-names-in-headers)
24553 using nlohmann::literals::json_literals::operator "" _json; // NOLINT(misc-unused-using-decls,google-global-names-in-headers)
24554 using nlohmann::literals::json_literals::operator "" _json_pointer; //NOLINT(misc-unused-using-decls,google-global-names-in-headers)
iterator insert(const_iterator pos, const basic_json &val) inserts element into array Definition: json.hpp:22587 static std::vector< std::uint8_t > to_bson(const basic_json &j) create a BSON serialization of a given JSON value Definition: json.hpp:23639 ::nlohmann::json_pointer< StringType > json_pointer JSON Pointer, see nlohmann::json_pointer. Definition: json.hpp:19468 iter_impl< const basic_json > const_iterator a const iterator for a basic_json container Definition: json.hpp:19532 basic_json(const BasicJsonType &val) create a JSON value from an existing one Definition: json.hpp:20151 ::nlohmann::detail::json_base_class< CustomBaseClass > json_base_class_t Definition: json.hpp:19427 static basic_json from_bson(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in BSON format Definition: json.hpp:23875 basic_json patch(const basic_json &json_patch) const applies a JSON patch to a copy of the current object Definition: json.hpp:24272 basic_json(size_type cnt, const basic_json &val) construct an array with count copies of given value Definition: json.hpp:20322 ValueType get_impl(detail::priority_tag< 0 >) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >()))) get a value (explicit) Definition: json.hpp:20908 typename std::allocator_traits< allocator_type >::pointer pointer the type of an element pointer Definition: json.hpp:19525 basic_json get_impl(detail::priority_tag< 3 >) const get special-case overload Definition: json.hpp:20998 friend bool operator==(const_reference lhs, ScalarType rhs) noexcept comparison: equal Definition: json.hpp:23104 ReturnType value(KeyType &&key, ValueType &&default_value) const access specified object element via JSON Pointer with default value Definition: json.hpp:21606 friend bool operator==(const_reference lhs, const_reference rhs) noexcept comparison: equal Definition: json.hpp:23088 void insert(const_iterator first, const_iterator last) inserts range of elements into object Definition: json.hpp:22685 binary_t * get_impl_ptr(binary_t *) noexcept get a pointer to the value (binary) Definition: json.hpp:20802 iterator insert(const_iterator pos, const_iterator first, const_iterator last) inserts range of elements into array Definition: json.hpp:22634 ReturnType value(const typename object_t::key_type &key, ValueType &&default_value) const access specified object element with default value Definition: json.hpp:21553 iteration_proxy< iterator > items() noexcept helper to access iterator member functions in range-based for Definition: json.hpp:22185 iterator insert(const_iterator pos, size_type cnt, const basic_json &val) inserts copies of element into array Definition: json.hpp:22614 constexpr bool is_binary() const noexcept return whether value is a binary array Definition: json.hpp:20680 detail::actual_object_comparator_t< basic_json > object_comparator_t object key comparator type Definition: json.hpp:19671 const_reference operator[](KeyType &&key) const access specified object element Definition: json.hpp:21498 friend bool operator==(ScalarType lhs, const_reference rhs) noexcept comparison: equal Definition: json.hpp:23113 ValueType & get_to(ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v))) get a value (explicit) Definition: json.hpp:21100 size_type max_size() const noexcept returns the maximum possible number of elements Definition: json.hpp:22286 constexpr const array_t * get_impl_ptr(const array_t *) const noexcept get a pointer to the value (array) Definition: json.hpp:20736 BasicJsonType get_impl(detail::priority_tag< 2 >) const get special-case overload Definition: json.hpp:20975 constexpr const object_t * get_impl_ptr(const object_t *) const noexcept get a pointer to the value (object) Definition: json.hpp:20724 const_iterator cbegin() const noexcept returns a const iterator to the first element Definition: json.hpp:22086 static std::vector< std::uint8_t > to_bjdata(const basic_json &j, const bool use_size=false, const bool use_type=false) create a BJData serialization of a given JSON value Definition: json.hpp:23612 void patch_inplace(const basic_json &json_patch) applies a JSON patch in-place without copying the object Definition: json.hpp:24001 const_iterator find(const typename object_t::key_type &key) const find an element in a JSON object Definition: json.hpp:21967 iterator insert_iterator(const_iterator pos, Args &&... args) Definition: json.hpp:22568 ::nlohmann::detail::lexer_base< basic_json > lexer Definition: json.hpp:19431 object_t * get_impl_ptr(object_t *) noexcept get a pointer to the value (object) Definition: json.hpp:20718 static void to_bson(const basic_json &j, detail::output_adapter< char > o) create a BSON serialization of a given JSON value Definition: json.hpp:23655 static basic_json from_ubjson(InputType &&i, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in UBJSON format Definition: json.hpp:23776 ::nlohmann::detail::binary_reader< basic_json, InputType > binary_reader Definition: json.hpp:19459 reference operator[](T *key) Definition: json.hpp:21459 static basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="") creates a diff as a JSON patch Definition: json.hpp:24282 reference operator[](const json_pointer &ptr) access specified element via JSON Pointer Definition: json.hpp:23920 std::ptrdiff_t difference_type a type to represent differences between iterators Definition: json.hpp:19517 static std::vector< std::uint8_t > to_msgpack(const basic_json &j) create a MessagePack serialization of a given JSON value Definition: json.hpp:23562 static basic_json parse(InputType &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false) deserialize from a compatible input Definition: json.hpp:23317 static basic_json from_ubjson(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in UBJSON format Definition: json.hpp:23791 static basic_json from_cbor(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) create a JSON value from an input in CBOR format Definition: json.hpp:23680 friend void swap(reference left, reference right) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&//NOLINT(cppcoreguidelines-noexcept-swap, performance-noexcept-swap) std::is_nothrow_move_assignable< json_value >::value) exchanges the values Definition: json.hpp:22781 const_reference at(size_type idx) const access specified array element with bounds checking Definition: json.hpp:21263 reference operator+=(const typename object_t::value_type &val) add an object to an object Definition: json.hpp:22478 detail::parser_callback_t< basic_json > parser_callback_t per-element parser callback type Definition: json.hpp:20104 const_iterator end() const noexcept returns an iterator to one past the last element Definition: json.hpp:22104 friend bool operator!=(const_reference lhs, ScalarType rhs) noexcept comparison: not equal Definition: json.hpp:23133 constexpr bool is_primitive() const noexcept return whether type is primitive Definition: json.hpp:20603 friend bool operator<=(ScalarType lhs, const_reference rhs) noexcept comparison: less than or equal Definition: json.hpp:23199 friend bool operator<(const_reference lhs, ScalarType rhs) noexcept comparison: less than Definition: json.hpp:23161 static basic_json binary(const typename binary_t::container_type &init, typename binary_t::subtype_type subtype) explicitly create a binary array (with subtype) Definition: json.hpp:20274 reference operator[](typename object_t::key_type key) access specified object element Definition: json.hpp:21421 constexpr const number_float_t * get_impl_ptr(const number_float_t *) const noexcept get a pointer to the value (floating-point number) Definition: json.hpp:20796 friend std::ostream & operator<<(std::ostream &o, const basic_json &j) serialize to stream Definition: json.hpp:23277 friend bool operator<=(const_reference lhs, const_reference rhs) noexcept comparison: less than or equal Definition: json.hpp:23177 string_t * get_impl_ptr(string_t *) noexcept get a pointer to the value (string) Definition: json.hpp:20742 static basic_json from_bjdata(InputType &&i, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in BJData format Definition: json.hpp:23830 const_reverse_iterator crbegin() const noexcept returns a const reverse iterator to the last element Definition: json.hpp:22148 static basic_json binary(typename binary_t::container_type &&init) explicitly create a binary array Definition: json.hpp:20285 static basic_json binary(const typename binary_t::container_type &init) explicitly create a binary array (without subtype) Definition: json.hpp:20263 constexpr bool is_number_integer() const noexcept return whether value is an integer number Definition: json.hpp:20638 friend bool operator>(ScalarType lhs, const_reference rhs) noexcept comparison: greater than Definition: json.hpp:23229 reference set_parent(reference j, std::size_t old_capacity=static_cast< std::size_t >(-1)) Definition: json.hpp:20055 constexpr const binary_t * get_impl_ptr(const binary_t *) const noexcept get a pointer to the value (binary) Definition: json.hpp:20808 static void to_cbor(const basic_json &j, detail::output_adapter< std::uint8_t > o) create a CBOR serialization of a given JSON value Definition: json.hpp:23548 bool contains(KeyType &&key) const check the existence of an element in a JSON object Definition: json.hpp:22040 json_reverse_iterator< typename basic_json::const_iterator > const_reverse_iterator a const reverse iterator for a basic_json container Definition: json.hpp:19536 friend bool operator!=(const_reference lhs, const_reference rhs) noexcept comparison: not equal Definition: json.hpp:23120 const_reverse_iterator rend() const noexcept returns an iterator to the reverse-end Definition: json.hpp:22141 static bool accept(IteratorType first, IteratorType last, const bool ignore_comments=false) check if the input is valid JSON Definition: json.hpp:23366 friend bool operator<(ScalarType lhs, const_reference rhs) noexcept comparison: less than Definition: json.hpp:23170 static void to_msgpack(const basic_json &j, detail::output_adapter< char > o) create a MessagePack serialization of a given JSON value Definition: json.hpp:23578 static std::vector< std::uint8_t > to_ubjson(const basic_json &j, const bool use_size=false, const bool use_type=false) create a UBJSON serialization of a given JSON value Definition: json.hpp:23585 friend bool operator>=(const_reference lhs, const_reference rhs) noexcept comparison: greater than or equal Definition: json.hpp:23236 basic_json & operator=(basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value &&std::is_nothrow_move_assignable< json_base_class_t >::value) copy assignment Definition: json.hpp:20533 ::nlohmann::detail::binary_writer< basic_json, CharType > binary_writer Definition: json.hpp:19460 static basic_json from_bson(InputType &&i, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in BSON format Definition: json.hpp:23860 static void to_bjdata(const basic_json &j, detail::output_adapter< std::uint8_t > o, const bool use_size=false, const bool use_type=false) create a BJData serialization of a given JSON value Definition: json.hpp:23623 static basic_json parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false) deserialize from a pair of character iterators Definition: json.hpp:23331 size_type count(const typename object_t::key_type &key) const returns the number of occurrences of a key in a JSON object Definition: json.hpp:22013 ::nlohmann::detail::iteration_proxy< Iterator > iteration_proxy Definition: json.hpp:19452 iterator set_parents(iterator it, typename iterator::difference_type count_set_parents) Definition: json.hpp:20042 constexpr bool is_boolean() const noexcept return whether value is a boolean Definition: json.hpp:20624 static void to_cbor(const basic_json &j, detail::output_adapter< char > o) create a CBOR serialization of a given JSON value Definition: json.hpp:23555 static void to_bson(const basic_json &j, detail::output_adapter< std::uint8_t > o) create a BSON serialization of a given JSON value Definition: json.hpp:23648 static allocator_type get_allocator() returns the allocator associated with the container Definition: json.hpp:19542 basic_json(const JsonRef &ref) Definition: json.hpp:20443 static void to_msgpack(const basic_json &j, detail::output_adapter< std::uint8_t > o) create a MessagePack serialization of a given JSON value Definition: json.hpp:23571 const_iterator cend() const noexcept returns an iterator to one past the last element Definition: json.hpp:22111 ObjectType< StringType, basic_json, default_object_comparator_t, AllocatorType< std::pair< const StringType, basic_json > > > object_t a type for an object Definition: json.hpp:19639 friend bool operator>(const_reference lhs, const_reference rhs) noexcept comparison: greater than Definition: json.hpp:23206 ::nlohmann::detail::json_reverse_iterator< Base > json_reverse_iterator Definition: json.hpp:19453 reference at(size_type idx) access specified array element with bounds checking Definition: json.hpp:21240 const_reference operator[](const typename object_t::key_type &key) const access specified object element Definition: json.hpp:21443 boolean_t * get_impl_ptr(boolean_t *) noexcept get a pointer to the value (boolean) Definition: json.hpp:20754 reference at(const json_pointer &ptr) access specified element via JSON Pointer Definition: json.hpp:23948 auto get_ptr() noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >())) get a pointer value (implicit) Definition: json.hpp:20847 const_reverse_iterator crend() const noexcept returns a const reverse iterator to one before the first Definition: json.hpp:22155 json_reverse_iterator< typename basic_json::iterator > reverse_iterator a reverse iterator for a basic_json container Definition: json.hpp:19534 ReturnType value(const json_pointer &ptr, ValueType &&default_value) const access specified object element via JSON Pointer with default value Definition: json.hpp:21654 static void to_ubjson(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false) create a UBJSON serialization of a given JSON value Definition: json.hpp:23604 ::nlohmann::detail::serializer< basic_json > serializer Definition: json.hpp:19463 const_reverse_iterator rbegin() const noexcept returns an iterator to the reverse-beginning Definition: json.hpp:22127 basic_json(CompatibleType &&val) noexcept(noexcept(//NOLINT(bugprone-forwarding-reference-overload, bugprone-exception-escape) JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val)))) create a JSON value from compatible types Definition: json.hpp:20137 const_reference operator[](const json_pointer &ptr) const access specified element via JSON Pointer Definition: json.hpp:23934 friend bool operator>=(ScalarType lhs, const_reference rhs) noexcept comparison: greater than or equal Definition: json.hpp:23258 bool compares_unordered(const_reference rhs, bool inverse=false) const noexcept Definition: json.hpp:22975 size_type erase(KeyType &&key) remove element from a JSON object given a key Definition: json.hpp:21917 const_reference at(const typename object_t::key_type &key) const access specified object element with bounds checking Definition: json.hpp:21324 static bool accept(InputType &&i, const bool ignore_comments=false) check if the input is valid JSON Definition: json.hpp:23357 typename std::allocator_traits< allocator_type >::const_pointer const_pointer the type of an element const pointer Definition: json.hpp:19527 static basic_json from_bjdata(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in BJData format Definition: json.hpp:23845 friend bool operator>(const_reference lhs, ScalarType rhs) noexcept comparison: greater than Definition: json.hpp:23220 void update(const_iterator first, const_iterator last, bool merge_objects=false) updates a JSON object from another object, overwriting existing keys Definition: json.hpp:22717 void update(const_reference j, bool merge_objects=false) updates a JSON object from another object, overwriting existing keys Definition: json.hpp:22710 ::nlohmann::detail::iter_impl< BasicJsonType > iter_impl Definition: json.hpp:19450 const_reference at(const json_pointer &ptr) const access specified element via JSON Pointer Definition: json.hpp:23962 static bool compares_unordered(const_reference lhs, const_reference rhs, bool inverse=false) noexcept Definition: json.hpp:22959 ValueType value(const typename object_t::key_type &key, const ValueType &default_value) const access specified object element with default value Definition: json.hpp:21528 iterator insert(const_iterator pos, initializer_list_t ilist) inserts elements from initializer list into array Definition: json.hpp:22665 friend bool operator!=(ScalarType lhs, const_reference rhs) noexcept comparison: not equal Definition: json.hpp:23142 std::conditional< detail::is_c_string_uncvref< ValueType >::value, string_t, typename std::decay< ValueType >::type > value_return_type Definition: json.hpp:21519 static ::nlohmann::detail::parser< basic_json, InputAdapterType > parser(InputAdapterType adapter, detail::parser_callback_t< basic_json >cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false) Definition: json.hpp:19434 reference at(KeyType &&key) access specified object element with bounds checking Definition: json.hpp:21306 friend bool operator<(const_reference lhs, const_reference rhs) noexcept comparison: less than Definition: json.hpp:23149 iteration_proxy< const_iterator > items() const noexcept helper to access iterator member functions in range-based for Definition: json.hpp:22192 void assert_invariant(bool check_parents=true) const noexcept checks the class invariants Definition: json.hpp:19984 constexpr bool is_object() const noexcept return whether value is an object Definition: json.hpp:20659 iterator insert(const_iterator pos, basic_json &&val) inserts element into array Definition: json.hpp:22607 array_t * get_impl_ptr(array_t *) noexcept get a pointer to the value (array) Definition: json.hpp:20730 ::nlohmann::detail::output_adapter_t< CharType > output_adapter_t Definition: json.hpp:19456 static basic_json from_msgpack(InputType &&i, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in MessagePack format Definition: json.hpp:23722 bool contains(const typename object_t::key_type &key) const check the existence of an element in a JSON object Definition: json.hpp:22031 friend bool operator>=(const_reference lhs, ScalarType rhs) noexcept comparison: greater than or equal Definition: json.hpp:23249 constexpr auto get_ptr() const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >())) get a pointer value (implicit) Definition: json.hpp:20858 static ReferenceType get_ref_impl(ThisType &obj) helper function to implement get_ref() Definition: json.hpp:20825 ValueType value(const json_pointer &ptr, const ValueType &default_value) const access specified object element via JSON Pointer with default value Definition: json.hpp:21629 bool contains(const json_pointer &ptr) const check the existence of an element in a JSON object given a JSON pointer Definition: json.hpp:22047 number_integer_t * get_impl_ptr(number_integer_t *) noexcept get a pointer to the value (integer number) Definition: json.hpp:20766 constexpr const number_unsigned_t * get_impl_ptr(const number_unsigned_t *) const noexcept get a pointer to the value (unsigned number) Definition: json.hpp:20784 void erase(const size_type idx) remove element from a JSON array given an index Definition: json.hpp:21924 size_type erase(const typename object_t::key_type &key) remove element from a JSON object given a key Definition: json.hpp:21906 constexpr bool is_discarded() const noexcept return whether value is discarded Definition: json.hpp:20687 constexpr value_t type() const noexcept return the type of the JSON value (explicit) Definition: json.hpp:20596 ::nlohmann::detail::primitive_iterator_t primitive_iterator_t Definition: json.hpp:19446 static T * create(Args &&... args) helper for exception-safe object creation Definition: json.hpp:19680 constexpr bool is_number_float() const noexcept return whether value is a floating-point number Definition: json.hpp:20652 constexpr const boolean_t * get_impl_ptr(const boolean_t *) const noexcept get a pointer to the value (boolean) Definition: json.hpp:20760 number_float_t * get_impl_ptr(number_float_t *) noexcept get a pointer to the value (floating-point number) Definition: json.hpp:20790 reverse_iterator rbegin() noexcept returns an iterator to the reverse-beginning Definition: json.hpp:22120 void swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&//NOLINT(cppcoreguidelines-noexcept-swap, performance-noexcept-swap) std::is_nothrow_move_assignable< json_value >::value) exchanges the values Definition: json.hpp:22764 IteratorType erase(IteratorType first, IteratorType last) remove elements given an iterator range Definition: json.hpp:21801 basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array) create a container (array or object) from an initializer list Definition: json.hpp:20204 ArrayType< basic_json, AllocatorType< basic_json > > array_t a type for an array Definition: json.hpp:19643 size_type erase_internal(KeyType &&key) Definition: json.hpp:21872 constexpr auto get_impl(detail::priority_tag< 4 >) const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >()) get a pointer value (explicit) Definition: json.hpp:21011 const_reference operator[](T *key) const Definition: json.hpp:21465 void push_back(const typename object_t::value_type &val) add an object to an object Definition: json.hpp:22455 ::nlohmann::detail::internal_iterator< BasicJsonType > internal_iterator Definition: json.hpp:19448 JSONSerializer< T, SFINAE > json_serializer Definition: json.hpp:19470 static void to_bjdata(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false) create a BJData serialization of a given JSON value Definition: json.hpp:23631 ValueType value(KeyType &&key, const ValueType &default_value) const access specified object element with default value Definition: json.hpp:21579 constexpr const string_t * get_impl_ptr(const string_t *) const noexcept get a pointer to the value (string) Definition: json.hpp:20748 static std::vector< std::uint8_t > to_cbor(const basic_json &j) create a CBOR serialization of a given JSON value Definition: json.hpp:23539 std::less< StringType > default_object_comparator_t default object key comparator type The actual object key comparator type (object_comparator_t) may be... Definition: json.hpp:19630 reference at(const typename object_t::key_type &key) access specified object element with bounds checking Definition: json.hpp:21286 std::pair< iterator, bool > emplace(Args &&... args) add an object to an object if key does not exist Definition: json.hpp:22536 static basic_json from_cbor(InputType &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) create a JSON value from an input in CBOR format Definition: json.hpp:23664 ValueType get_impl(detail::priority_tag< 1 >) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >()))) get a value (explicit); special case Definition: json.hpp:20950 static void to_ubjson(const basic_json &j, detail::output_adapter< std::uint8_t > o, const bool use_size=false, const bool use_type=false) create a UBJSON serialization of a given JSON value Definition: json.hpp:23596 const_reference operator[](size_type idx) const access specified array element Definition: json.hpp:21408 constexpr bool is_number_unsigned() const noexcept return whether value is an unsigned integer number Definition: json.hpp:20645 string_t dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const serialization Definition: json.hpp:20574 static basic_json from_msgpack(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true) create a JSON value from an input in MessagePack format Definition: json.hpp:23737 const_reference at(KeyType &&key) const access specified object element with bounds checking Definition: json.hpp:21344 std::initializer_list< detail::json_ref< basic_json > > initializer_list_t helper type for initializer lists of basic_json values Definition: json.hpp:19476 auto get() noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >()) get a pointer value (explicit) Definition: json.hpp:21087 constexpr const number_integer_t * get_impl_ptr(const number_integer_t *) const noexcept get a pointer to the value (integer number) Definition: json.hpp:20772 constexpr bool is_structured() const noexcept return whether type is structured Definition: json.hpp:20610 friend bool operator<=(const_reference lhs, ScalarType rhs) noexcept comparison: less than or equal Definition: json.hpp:23190 friend std::istream & operator>>(std::istream &i, basic_json &j) deserialize from stream Definition: json.hpp:23445 ValueType & get_to(ValueType &v) const Definition: json.hpp:21113 number_unsigned_t * get_impl_ptr(number_unsigned_t *) noexcept get a pointer to the value (unsigned number) Definition: json.hpp:20778 auto get() const noexcept(noexcept(std::declval< const basic_json_t & >().template get_impl< ValueType >(detail::priority_tag< 4 > {}))) -> decltype(std::declval< const basic_json_t & >().template get_impl< ValueType >(detail::priority_tag< 4 > {})) get a (pointer) value (explicit) Definition: json.hpp:21046 static basic_json array(initializer_list_t init={}) explicitly create an array from an initializer list Definition: json.hpp:20307 const_iterator begin() const noexcept returns an iterator to the first element Definition: json.hpp:22079 basic_json(InputIT first, InputIT last) construct a JSON container given an iterator range Definition: json.hpp:20334 static basic_json object(initializer_list_t init={}) explicitly create an object from an initializer list Definition: json.hpp:20315 size_type count(KeyType &&key) const returns the number of occurrences of a key in a JSON object Definition: json.hpp:22023 static basic_json binary(typename binary_t::container_type &&init, typename binary_t::subtype_type subtype) explicitly create a binary array (with subtype) Definition: json.hpp:20296 iterator find(const typename object_t::key_type &key) find an element in a JSON object Definition: json.hpp:21953 Array get_to(T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v))) Definition: json.hpp:21124 an internal type for a backed binary type Definition: json.hpp:5891 byte_container_with_subtype(const container_type &b) noexcept(noexcept(container_type(b))) Definition: json.hpp:5902 byte_container_with_subtype(const container_type &b, subtype_type subtype_) noexcept(noexcept(container_type(b))) Definition: json.hpp:5912 byte_container_with_subtype() noexcept(noexcept(container_type())) Definition: json.hpp:5897 byte_container_with_subtype(container_type &&b) noexcept(noexcept(container_type(std::move(b)))) Definition: json.hpp:5907 subtype_type m_subtype Definition: json.hpp:5967 BinaryType container_type Definition: json.hpp:5893 bool operator==(const byte_container_with_subtype &rhs) const Definition: json.hpp:5925 std::uint64_t subtype_type Definition: json.hpp:5894 bool operator!=(const byte_container_with_subtype &rhs) const Definition: json.hpp:5931 bool m_has_subtype Definition: json.hpp:5968 constexpr bool has_subtype() const noexcept return whether the value has a subtype Definition: json.hpp:5953 byte_container_with_subtype(container_type &&b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b)))) Definition: json.hpp:5919 deserialization of CBOR, MessagePack, and UBJSON values Definition: json.hpp:9212 bool get_number(const input_format_t format, NumberType &result) Definition: json.hpp:11932 bool get_ubjson_ndarray_size(std::vector< size_t > &dim) Definition: json.hpp:11088 bool get_binary(const input_format_t format, const NumberType len, binary_t &result) create a byte array by reading bytes from the input Definition: json.hpp:12008 bool get_bson_cstr(string_t &result) Parses a C-style string from the BSON input. Definition: json.hpp:9337 typename BasicJsonType::string_t string_t Definition: json.hpp:9216 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:9215 bool parse_ubjson_internal(const bool get_char=true) Definition: json.hpp:10974 bool get_ubjson_array() Definition: json.hpp:11626 std::string exception_message(const input_format_t format, const std::string &detail, const std::string &context) const Definition: json.hpp:12058 typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:9213 char_int_type get_ignore_noop() Definition: json.hpp:11905 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:9214 bool get_msgpack_object(const std::size_t len) Definition: json.hpp:10937 bool parse_cbor_internal(const bool get_char, const cbor_tag_handler_t tag_handler) Definition: json.hpp:9564 bool parse_bson_internal() Reads in a BSON-object and passes it to the SAX-parser. Definition: json.hpp:9312 bool get_cbor_array(const std::size_t len, const cbor_tag_handler_t tag_handler) Definition: json.hpp:10246 binary_reader & operator=(const binary_reader &)=delete typename InputAdapterType::char_type char_type Definition: json.hpp:9219 bool sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) Definition: json.hpp:9249 bool parse_bson_element_internal(const char_int_type element_type, const std::size_t element_type_parse_position) Read a BSON document element of the given element_type. Definition: json.hpp:9416 typename BasicJsonType::binary_t binary_t Definition: json.hpp:9217 bool get_bson_binary(const NumberType len, binary_t &result) Parses a byte array input of length len from the BSON input. Definition: json.hpp:9389 bool get_cbor_object(const std::size_t len, const cbor_tag_handler_t tag_handler) Definition: json.hpp:10284 binary_reader(InputAdapterType &&adapter, const input_format_t format=input_format_t::json) noexcept create a binary reader Definition: json.hpp:9228 std::string get_token_string() const Definition: json.hpp:12045 bool get_ubjson_size_type(std::pair< std::size_t, char_int_type > &result, bool inside_ndarray=false) determine the type and size for a container Definition: json.hpp:11376 typename char_traits< char_type >::int_type char_int_type Definition: json.hpp:9220 bool get_ubjson_string(string_t &result, const bool get_char=true) reads a UBJSON string Definition: json.hpp:10993 bool get_ubjson_size_value(std::size_t &result, bool &is_ndarray, char_int_type prefix=0) Definition: json.hpp:11153 bool get_msgpack_array(const std::size_t len) Definition: json.hpp:10915 bool get_ubjson_object() Definition: json.hpp:11734 bool get_bson_string(const NumberType len, string_t &result) Parses a zero-terminated string of length len from the BSON input. Definition: json.hpp:9367 binary_reader & operator=(binary_reader &&)=default bool get_string(const input_format_t format, const NumberType len, string_t &result) create a string by reading characters from the input Definition: json.hpp:11975 binary_reader(const binary_reader &)=delete ~binary_reader()=default binary_reader(binary_reader &&)=default bool parse_bson_array() Reads an array from the BSON input and passes it to the SAX-parser. Definition: json.hpp:9534 SAX json_sax_t Definition: json.hpp:9218 std::pair< char_int_type, string_t > bjd_type Definition: json.hpp:12139 bool parse_bson_element_list(const bool is_array) Read a BSON element list (as specified in the BSON-spec) Definition: json.hpp:9496 bool parse_msgpack_internal() Definition: json.hpp:10340 bool get_ubjson_value(const char_int_type prefix) Definition: json.hpp:11443 bool get_ubjson_high_precision_number() Definition: json.hpp:11817 serialization to CBOR and MessagePack values Definition: json.hpp:15079 static CharType to_char_type(std::uint8_t x) noexcept Definition: json.hpp:16841 void write_compact_float(const number_float_t n, detail::input_format_t format) Definition: json.hpp:16800 static std::size_t calc_bson_entry_header_size(const string_t &name, const BasicJsonType &j) Definition: json.hpp:15999 static constexpr CharType get_ubjson_float_prefix(double) Definition: json.hpp:16649 CharType ubjson_prefix(const BasicJsonType &j, const bool use_bjdata) const noexcept determine the type prefix of container values Definition: json.hpp:16543 bool write_bjdata_ndarray(const typename BasicJsonType::object_t &value, const bool use_count, const bool use_type) Definition: json.hpp:16657 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:15082 static constexpr CharType get_msgpack_float_prefix(float) Definition: json.hpp:16343 void write_bson_entry_header(const string_t &name, const std::uint8_t element_type) Writes the given element_type and name to the output adapter. Definition: json.hpp:16014 static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t &value) Definition: json.hpp:16146 static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t &value) Calculates the size of the BSON serialization of the given JSON-object j. Definition: json.hpp:16298 void write_bson_integer(const string_t &name, const std::int64_t value) Writes a BSON element with key name and integer value. Definition: json.hpp:16086 static constexpr CharType get_cbor_float_prefix(double) Definition: json.hpp:16334 void write_bson_double(const string_t &name, const double value) Writes a BSON element with key name and double value value. Definition: json.hpp:16036 void write_cbor(const BasicJsonType &j) Definition: json.hpp:15128 void write_number_with_ubjson_prefix(const NumberType n, const bool add_prefix, const bool use_bjdata) Definition: json.hpp:16360 static constexpr CharType get_ubjson_float_prefix(float) Definition: json.hpp:16644 static std::size_t calc_bson_binary_size(const typename BasicJsonType::binary_t &value) Definition: json.hpp:16161 void write_bson_null(const string_t &name) Writes a BSON element with key name and null value. Definition: json.hpp:16068 void write_bson_array(const string_t &name, const typename BasicJsonType::array_t &value) Writes a BSON element with key name and array value. Definition: json.hpp:16169 void write_bson_object(const typename BasicJsonType::object_t &value) Definition: json.hpp:16313 void write_ubjson(const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true, const bool use_bjdata=false) Definition: json.hpp:15778 typename BasicJsonType::string_t string_t Definition: json.hpp:15080 void write_bson_element(const string_t &name, const BasicJsonType &j) Serializes the JSON value j to BSON and associates it with the key name. Definition: json.hpp:16251 static constexpr CharType get_cbor_float_prefix(float) Definition: json.hpp:16329 static std::size_t calc_bson_string_size(const string_t &value) Definition: json.hpp:16046 static std::size_t calc_bson_integer_size(const std::int64_t value) Definition: json.hpp:16076 static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept Definition: json.hpp:16104 void write_bson_binary(const string_t &name, const binary_t &value) Writes a BSON element with key name and binary value value. Definition: json.hpp:16188 void write_bson_object_entry(const string_t &name, const typename BasicJsonType::object_t &value) Writes a BSON element with key name and object value. Definition: json.hpp:16136 static constexpr CharType to_char_type(std::uint8_t x) noexcept Definition: json.hpp:16834 static constexpr CharType get_msgpack_float_prefix(double) Definition: json.hpp:16348 void write_bson_unsigned(const string_t &name, const BasicJsonType &j) Writes a BSON element with key name and unsigned value. Definition: json.hpp:16114 static std::size_t calc_bson_element_size(const string_t &name, const BasicJsonType &j) Calculates the size necessary to serialize the JSON value j with its name. Definition: json.hpp:16203 void write_bson_boolean(const string_t &name, const bool value) Writes a BSON element with key name and boolean value value. Definition: json.hpp:16026 void write_bson_string(const string_t &name, const string_t &value) Writes a BSON element with key name and string value value. Definition: json.hpp:16054 typename BasicJsonType::binary_t binary_t Definition: json.hpp:15081 void write_number(const NumberType n, const bool OutputIsLittleEndian=false) Definition: json.hpp:16784 void write_bson(const BasicJsonType &j) Definition: json.hpp:15099 static constexpr CharType to_char_type(InputCharType x) noexcept Definition: json.hpp:16863 void write_msgpack(const BasicJsonType &j) Definition: json.hpp:15452 general exception of the basic_json class Definition: json.hpp:4372 static std::string diagnostics(const BasicJsonType *leaf_element) Definition: json.hpp:4398 static std::string diagnostics(std::nullptr_t) Definition: json.hpp:4392 static std::string name(const std::string &ename, int id_) Definition: json.hpp:4387 file_input_adapter(const file_input_adapter &)=delete char char_type Definition: json.hpp:6190 file_input_adapter(file_input_adapter &&) noexcept=default input_stream_adapter & operator=(input_stream_adapter &)=delete std::char_traits< char >::int_type get_character() Definition: json.hpp:6259 input_stream_adapter & operator=(input_stream_adapter &&)=delete ~input_stream_adapter() Definition: json.hpp:6230 input_stream_adapter(input_stream_adapter &&rhs) noexcept Definition: json.hpp:6249 char char_type Definition: json.hpp:6228 input_stream_adapter(const input_stream_adapter &)=delete input_stream_adapter(std::istream &i) Definition: json.hpp:6240 exception indicating errors with iterators Definition: json.hpp:4523 static invalid_iterator create(int id_, const std::string &what_arg, BasicJsonContext context) Definition: json.hpp:4526 a template for a bidirectional iterator for the basic_json class This class implements a both iterato... Definition: json.hpp:12916 typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type reference defines a reference to the type iterated over (value_type) Definition: json.hpp:12955 internal_iterator< typename std::remove_const< BasicJsonType >::type > m_it the actual iterator of the associated instance Definition: json.hpp:13615 friend BasicJsonType Definition: json.hpp:12921 ~iter_impl()=default const object_t::key_type & key() const return the key of an object iterator Definition: json.hpp:13590 typename BasicJsonType::value_type value_type the type of the values when the iterator is dereferenced Definition: json.hpp:12944 iter_impl & operator=(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept converting assignment Definition: json.hpp:13053 iter_impl(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept converting constructor Definition: json.hpp:13043 iter_impl & operator=(const iter_impl< const BasicJsonType > &other) noexcept converting assignment Definition: json.hpp:13028 std::bidirectional_iterator_tag iterator_category Definition: json.hpp:12941 typename BasicJsonType::object_t object_t Definition: json.hpp:12925 bool operator>=(const iter_impl &other) const comparison: greater than or equal Definition: json.hpp:13435 reference operator*() const return a reference to the value pointed to by the iterator Definition: json.hpp:13148 bool operator<=(const iter_impl &other) const comparison: less than or equal Definition: json.hpp:13417 iter_impl(iter_impl &&) noexcept=default friend iter_impl operator+(difference_type i, const iter_impl &it) addition of distance and iterator Definition: json.hpp:13501 iter_impl(const iter_impl< const BasicJsonType > &other) noexcept const copy constructor Definition: json.hpp:13018 typename BasicJsonType::array_t array_t Definition: json.hpp:12926 iter_impl()=default typename BasicJsonType::difference_type difference_type a type to represent differences between iterators Definition: json.hpp:12946 typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type pointer defines a pointer to the type iterated over (value_type) Definition: json.hpp:12950 iteration_proxy_value & operator++() increment operator (needed for range-based for) Definition: json.hpp:5234 iteration_proxy_value()=default bool operator!=(const iteration_proxy_value &o) const inequality operator (needed for range-based for) Definition: json.hpp:5257 std::ptrdiff_t difference_type Definition: json.hpp:5188 std::input_iterator_tag iterator_category Definition: json.hpp:5192 typename std::remove_cv< typename std::remove_reference< decltype(std::declval< IteratorType >().key()) >::type >::type string_type Definition: json.hpp:5193 bool operator==(const iteration_proxy_value &o) const equality operator (needed for InputIterator) Definition: json.hpp:5251 iteration_proxy_value(iteration_proxy_value const &)=default iteration_proxy_value(iteration_proxy_value &&) noexcept(std::is_nothrow_move_constructible< IteratorType >::value &&std::is_nothrow_move_constructible< string_type >::value)=default iteration_proxy_value operator++(int) & Definition: json.hpp:5242 iteration_proxy_value & operator=(iteration_proxy_value const &)=default iteration_proxy_value(IteratorType it, std::size_t array_index_=0) noexcept(std::is_nothrow_move_constructible< IteratorType >::value &&std::is_nothrow_default_constructible< string_type >::value) Definition: json.hpp:5209 proxy class for the items() function Definition: json.hpp:5307 iteration_proxy(iteration_proxy &&) noexcept=default iteration_proxy & operator=(iteration_proxy const &)=default iteration_proxy(typename IteratorType::reference cont) noexcept construct iteration proxy from a container Definition: json.hpp:5316 iteration_proxy(iteration_proxy const &)=default iteration_proxy_value< IteratorType > end() const noexcept return iterator end (needed for range-based for) Definition: json.hpp:5332 iteration_proxy()=default IteratorType end Definition: json.hpp:6303 bool empty() const Definition: json.hpp:6308 char_traits< char_type >::int_type get_character() Definition: json.hpp:6289 typename std::iterator_traits< IteratorType >::value_type char_type Definition: json.hpp:6283 iterator_input_adapter(IteratorType first, IteratorType last) Definition: json.hpp:6285 IteratorType current Definition: json.hpp:6302 value_type const * operator->() const Definition: json.hpp:14864 json_ref(json_ref &&) noexcept=default json_ref(value_type &&value) Definition: json.hpp:14824 json_ref(const value_type &value) Definition: json.hpp:14828 json_ref(Args &&... args) Definition: json.hpp:14839 BasicJsonType value_type Definition: json.hpp:14822 value_type const & operator*() const Definition: json.hpp:14859 value_type moved_or_copied() const Definition: json.hpp:14850 json_ref(std::initializer_list< json_ref > init) Definition: json.hpp:14832 a template for a reverse iterator class Definition: json.hpp:13669 auto key() const -> decltype(std::declval< Base >().key()) return the key of an object iterator Definition: json.hpp:13739 typename Base::reference reference the reference type for the pointed-to element Definition: json.hpp:13675 std::ptrdiff_t difference_type Definition: json.hpp:13671 json_reverse_iterator operator-(difference_type i) const subtract from iterator Definition: json.hpp:13721 json_reverse_iterator(const typename base_iterator::iterator_type &it) noexcept create reverse iterator from iterator Definition: json.hpp:13678 json_reverse_iterator(const base_iterator &it) noexcept create reverse iterator from base class Definition: json.hpp:13682 difference_type operator-(const json_reverse_iterator &other) const return difference Definition: json.hpp:13727 std::reverse_iterator< Base > base_iterator shortcut to the reverse iterator adapter Definition: json.hpp:13673 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:7294 typename BasicJsonType::string_t string_t Definition: json.hpp:7295 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:7293 bool string(string_t &) Definition: json.hpp:7323 bool boolean(bool) Definition: json.hpp:7303 typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:7292 bool binary(binary_t &) Definition: json.hpp:7328 bool start_array(std::size_t=static_cast< std::size_t >(-1)) Definition: json.hpp:7348 bool number_integer(number_integer_t) Definition: json.hpp:7308 bool end_object() Definition: json.hpp:7343 bool end_array() Definition: json.hpp:7353 bool key(string_t &) Definition: json.hpp:7338 typename BasicJsonType::binary_t binary_t Definition: json.hpp:7296 bool parse_error(std::size_t, const std::string &, const detail::exception &) Definition: json.hpp:7358 bool start_object(std::size_t=static_cast< std::size_t >(-1)) Definition: json.hpp:7333 bool number_float(number_float_t, const string_t &) Definition: json.hpp:7318 bool number_unsigned(number_unsigned_t) Definition: json.hpp:7313 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:6986 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:6987 bool start_array(std::size_t len) Definition: json.hpp:7121 bool boolean(bool val) Definition: json.hpp:7014 bool number_integer(number_integer_t val) Definition: json.hpp:7020 bool number_unsigned(number_unsigned_t val) Definition: json.hpp:7026 bool null() Definition: json.hpp:7008 bool end_object() Definition: json.hpp:7085 json_sax_dom_callback_parser(json_sax_dom_callback_parser &&)=default bool key(string_t &val) Definition: json.hpp:7068 typename BasicJsonType::parser_callback_t parser_callback_t Definition: json.hpp:6990 typename BasicJsonType::string_t string_t Definition: json.hpp:6988 json_sax_dom_callback_parser & operator=(const json_sax_dom_callback_parser &)=delete constexpr bool is_errored() const Definition: json.hpp:7183 bool start_object(std::size_t len) Definition: json.hpp:7050 bool number_float(number_float_t val, const string_t &) Definition: json.hpp:7032 ~json_sax_dom_callback_parser()=default bool string(string_t &val) Definition: json.hpp:7038 bool binary(binary_t &val) Definition: json.hpp:7044 json_sax_dom_callback_parser & operator=(json_sax_dom_callback_parser &&)=default typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:6985 typename BasicJsonType::parse_event_t parse_event_t Definition: json.hpp:6991 typename BasicJsonType::binary_t binary_t Definition: json.hpp:6989 json_sax_dom_callback_parser(const json_sax_dom_callback_parser &)=delete bool parse_error(std::size_t, const std::string &, const Exception &ex) Definition: json.hpp:7171 std::pair< bool, BasicJsonType * > handle_value(Value &&v, const bool skip_callback=false) Definition: json.hpp:7205 bool end_array() Definition: json.hpp:7138 json_sax_dom_callback_parser(BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true) Definition: json.hpp:6993 SAX implementation to create a JSON value from SAX events. Definition: json.hpp:6800 typename BasicJsonType::string_t string_t Definition: json.hpp:6805 ~json_sax_dom_parser()=default json_sax_dom_parser & operator=(json_sax_dom_parser &&)=default bool number_float(number_float_t val, const string_t &) Definition: json.hpp:6848 bool start_object(std::size_t len) Definition: json.hpp:6866 json_sax_dom_parser(const json_sax_dom_parser &)=delete typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:6802 bool start_array(std::size_t len) Definition: json.hpp:6898 bool end_array() Definition: json.hpp:6910 BasicJsonType * handle_value(Value &&v) Definition: json.hpp:6947 bool number_integer(number_integer_t val) Definition: json.hpp:6836 bool end_object() Definition: json.hpp:6888 json_sax_dom_parser(BasicJsonType &r, const bool allow_exceptions_=true) Definition: json.hpp:6813 typename BasicJsonType::binary_t binary_t Definition: json.hpp:6806 bool string(string_t &val) Definition: json.hpp:6854 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:6804 constexpr bool is_errored() const Definition: json.hpp:6933 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:6803 bool boolean(bool val) Definition: json.hpp:6830 json_sax_dom_parser(json_sax_dom_parser &&)=default json_sax_dom_parser & operator=(const json_sax_dom_parser &)=delete bool number_unsigned(number_unsigned_t val) Definition: json.hpp:6842 bool key(string_t &val) Definition: json.hpp:6878 bool binary(binary_t &val) Definition: json.hpp:6860 bool parse_error(std::size_t, const std::string &, const Exception &ex) Definition: json.hpp:6921 static const char * token_type_name(const token_type t) noexcept return name of values of type token_type (only used for errors) Definition: json.hpp:7434 lexer(lexer &&)=default constexpr number_float_t get_number_float() const noexcept return floating-point value Definition: json.hpp:8796 lexer(const lexer &)=delete typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:7486 bool next_byte_in_range(std::initializer_list< char_int_type > ranges) check if the next byte(s) are inside a given range Definition: json.hpp:7589 lexer & operator=(lexer &)=delete std::string get_token_string() const Definition: json.hpp:8820 constexpr const char * get_error_message() const noexcept return syntax error message Definition: json.hpp:8845 typename BasicJsonType::string_t string_t Definition: json.hpp:7488 constexpr number_unsigned_t get_number_unsigned() const noexcept return unsigned integer value Definition: json.hpp:8790 typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:7485 typename InputAdapterType::char_type char_type Definition: json.hpp:7489 static char get_decimal_point() noexcept return the locale-dependent decimal point Definition: json.hpp:7515 lexer & operator=(lexer &&)=default constexpr number_integer_t get_number_integer() const noexcept return integer value Definition: json.hpp:8784 typename char_traits< char_type >::int_type char_int_type Definition: json.hpp:7490 typename lexer_base< BasicJsonType >::token_type token_type Definition: json.hpp:7493 void skip_whitespace() Definition: json.hpp:8872 void reset() noexcept reset token_buffer; current character is beginning of token Definition: json.hpp:8692 string_t & get_string() return current string value (implicitly resets the token; useful only once) Definition: json.hpp:8802 ~lexer()=default lexer(InputAdapterType &&adapter, bool ignore_comments_=false) noexcept Definition: json.hpp:7495 constexpr position_t get_position() const noexcept return position of last read token Definition: json.hpp:8812 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:7487 exception indicating other library errors Definition: json.hpp:4575 static other_error create(int id_, const std::string &what_arg, BasicJsonContext context) Definition: json.hpp:4578 exception indicating access out of the defined range Definition: json.hpp:4558 static out_of_range create(int id_, const std::string &what_arg, BasicJsonContext context) Definition: json.hpp:4561 output_adapter(StringType &s) Definition: json.hpp:15048 output_adapter(std::basic_ostream< CharType > &s) Definition: json.hpp:15044 output_adapter(std::vector< CharType, AllocatorType > &vec) Definition: json.hpp:15040 output adapter for output streams Definition: json.hpp:14989 output_stream_adapter(std::basic_ostream< CharType > &s) noexcept Definition: json.hpp:14991 std::basic_ostream< CharType > & stream Definition: json.hpp:15007 void write_character(CharType c) override Definition: json.hpp:14995 output adapter for basic_string Definition: json.hpp:15014 StringType & str Definition: json.hpp:15032 output_string_adapter(StringType &s) noexcept Definition: json.hpp:15016 void write_character(CharType c) override Definition: json.hpp:15020 output adapter for byte vectors Definition: json.hpp:14964 std::vector< CharType, AllocatorType > & v Definition: json.hpp:14982 output_vector_adapter(std::vector< CharType, AllocatorType > &vec) noexcept Definition: json.hpp:14966 void write_character(CharType c) override Definition: json.hpp:14970 exception indicating a parse error Definition: json.hpp:4470 static parse_error create(int id_, const position_t &pos, const std::string &what_arg, BasicJsonContext context) create a parse error exception Definition: json.hpp:4482 parse_error(int id_, std::size_t byte_, const char *what_arg) Definition: json.hpp:4510 static parse_error create(int id_, std::size_t byte_, const std::string &what_arg, BasicJsonContext context) Definition: json.hpp:4490 static std::string position_string(const position_t &pos) Definition: json.hpp:4513 typename lexer_t::token_type token_type Definition: json.hpp:12235 parser(InputAdapterType &&adapter, const parser_callback_t< BasicJsonType > cb=nullptr, const bool allow_exceptions_=true, const bool skip_comments=false) a parser reading from an input adapter Definition: json.hpp:12239 std::string exception_message(const token_type expected, const std::string &context) Definition: json.hpp:12646 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:12231 void parse(const bool strict, BasicJsonType &result) public parser interface Definition: json.hpp:12261 typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:12230 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:12232 typename BasicJsonType::string_t string_t Definition: json.hpp:12233 constexpr bool is_end() const noexcept return whether the iterator is at end Definition: json.hpp:12768 std::ptrdiff_t difference_type Definition: json.hpp:12735 constexpr difference_type get_value() const noexcept Definition: json.hpp:12744 primitive_iterator_t & operator++() noexcept Definition: json.hpp:12795 primitive_iterator_t operator+(difference_type n) noexcept Definition: json.hpp:12783 primitive_iterator_t & operator+=(difference_type n) noexcept Definition: json.hpp:12821 primitive_iterator_t & operator-=(difference_type n) noexcept Definition: json.hpp:12827 friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept Definition: json.hpp:12778 friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept Definition: json.hpp:12773 friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept Definition: json.hpp:12790 primitive_iterator_t & operator--() noexcept Definition: json.hpp:12808 primitive_iterator_t operator--(int) &noexcept Definition: json.hpp:12814 primitive_iterator_t operator++(int) &noexcept Definition: json.hpp:12801 constexpr bool is_begin() const noexcept return whether the iterator can be dereferenced Definition: json.hpp:12762 number_unsigned_t remove_sign(number_unsigned_t x) Definition: json.hpp:18948 static std::uint8_t decode(std::uint8_t &state, std::uint32_t &codep, const std::uint8_t byte) noexcept check whether a string is UTF-8 encoded Definition: json.hpp:18908 typename BasicJsonType::string_t string_t Definition: json.hpp:18061 static std::string hex_bytes(std::uint8_t byte) convert a byte to a uppercase hex representation Definition: json.hpp:18685 void dump(const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0) internal implementation of the serialization function Definition: json.hpp:18115 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:18062 void dump_float(number_float_t x, std::true_type) Definition: json.hpp:18828 serializer(const serializer &)=delete const error_handler_t error_handler error_handler how to react on decoding errors Definition: json.hpp:18992 bool is_negative_number(NumberType) Definition: json.hpp:18702 serializer & operator=(const serializer &)=delete typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:18063 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:18064 number_unsigned_t remove_sign(number_integer_t x) noexcept Definition: json.hpp:18963 typename BasicJsonType::binary_t::value_type binary_char_t Definition: json.hpp:18065 void dump_escaped(const string_t &s, const bool ensure_ascii) dump escaped string Definition: json.hpp:18399 serializer(serializer &&)=delete ~serializer()=default void dump_float(number_float_t x, std::false_type) Definition: json.hpp:18836 bool is_negative_number(NumberType x) Definition: json.hpp:18696 serializer(output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict) Definition: json.hpp:18075 serializer & operator=(serializer &&)=delete contiguous_bytes_input_adapter && get() Definition: json.hpp:6623 span_input_adapter(IteratorType first, IteratorType last) Definition: json.hpp:6620 span_input_adapter(CharT b, std::size_t l) Definition: json.hpp:6613 contiguous_bytes_input_adapter ia Definition: json.hpp:6629 exception indicating executing a member function with a wrong type Definition: json.hpp:4541 static type_error create(int id_, const std::string &what_arg, BasicJsonContext context) Definition: json.hpp:4544 void fill_buffer() Definition: json.hpp:6468 std::char_traits< char >::int_type get_character() noexcept Definition: json.hpp:6447 BaseInputAdapter base_adapter Definition: json.hpp:6465 wide_string_input_adapter(BaseInputAdapter base) Definition: json.hpp:6444 char char_type Definition: json.hpp:6442 JSON Pointer defines a string syntax for identifying a specific value within a JSON document. Definition: json.hpp:13841 static BasicJsonType::size_type array_index(const string_t &s) Definition: json.hpp:14019 static BasicJsonType unflatten(const BasicJsonType &value) Definition: json.hpp:14612 friend json_pointer operator/(const json_pointer &lhs, string_t token) create a new JSON pointer by appending the unescaped token at the end of the JSON pointer Definition: json.hpp:13936 json_pointer< string_t > convert() && Definition: json.hpp:14647 void push_back(string_t &&token) append an unescaped token at the end of the reference pointer Definition: json.hpp:13995 friend json_pointer operator/(const json_pointer &lhs, std::size_t array_idx) create a new JSON pointer by appending the array-index-token at the end of the JSON pointer Definition: json.hpp:13943 typename string_t_helper< RefStringType >::type string_t Definition: json.hpp:13863 BasicJsonType & get_unchecked(BasicJsonType *ptr) const return a reference to the pointed to value Definition: json.hpp:14159 json_pointer & operator/=(std::size_t array_idx) append an array index at the end of this JSON pointer Definition: json.hpp:13921 json_pointer & operator/=(string_t token) append an unescaped reference token at the end of this JSON pointer Definition: json.hpp:13913 BasicJsonType & get_and_create(BasicJsonType &j) const create and return a reference to the pointed to value Definition: json.hpp:14079 string_t to_string() const return a string representation of the JSON pointer Definition: json.hpp:13873 json_pointer & operator/=(const json_pointer &ptr) append another JSON pointer at the end of this JSON pointer Definition: json.hpp:13903 BasicJsonType & get_checked(BasicJsonType *ptr) const Definition: json.hpp:14227 friend json_pointer operator/(const json_pointer &lhs, const json_pointer &rhs) create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer Definition: json.hpp:13928 bool contains(const BasicJsonType *ptr) const Definition: json.hpp:14383 static void flatten(const string_t &reference_string, const BasicJsonType &value, BasicJsonType &result) Definition: json.hpp:14540 static std::vector< string_t > split(const string_t &reference_string) split the string input to reference tokens Definition: json.hpp:14471 json_pointer< string_t > convert() const & Definition: json.hpp:14640 json_pointer parent_pointer() const returns the parent of this JSON pointer Definition: json.hpp:13950 friend std::ostream & operator<<(std::ostream &o, const json_pointer &ptr) write string representation of the JSON pointer to stream Definition: json.hpp:13894 void push_back(const string_t &token) append an unescaped token at the end of the reference pointer Definition: json.hpp:13988 const BasicJsonType & get_unchecked(const BasicJsonType *ptr) const return a const reference to the pointed to value Definition: json.hpp:14285 bool empty() const noexcept return whether pointer points to the root document Definition: json.hpp:14002 const BasicJsonType & get_checked(const BasicJsonType *ptr) const Definition: json.hpp:14334 decltype(get< N >(std::declval< ::nlohmann::detail::iteration_proxy_value< IteratorType > >())) type Definition: json.hpp:5380 #define NLOHMANN_BASIC_JSON_TPL_DECLARATION Definition: json.hpp:2596 #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON Definition: json.hpp:77 #define JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_ Definition: json.hpp:12119 #define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) Definition: json.hpp:2786 #define JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ Definition: json.hpp:12116 #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) Definition: json.hpp:1396 #define JSON_IMPLEMENT_OPERATOR(op, null_result, unordered_result, default_result) Definition: json.hpp:22882 std::istream & operator>>(std::istream &is, Block &block) Definition: slhaea.h:2534 const double e Definition: ew_input.hpp:68 bool is_integer(double value) Definition: flexibledecay_settings.cpp:39 void() C(cc)) coeff_t &arr void() A(aa)) coeff_t &arr void() B(bb)) coeff_t &arr constexpr Complex< T > operator*(const Complex< T > &a, const Complex< T > &b) noexcept Definition: complex.hpp:120 constexpr Complex< T > operator+(const Complex< T > &a, const Complex< T > &b) noexcept Definition: complex.hpp:78 const double * cbegin(const GSL_vector &v) const iterator to begin of GSL_vector Definition: gsl_vector.cpp:264 const double * cend(const GSL_vector &v) const iterator to end of GSL_vector Definition: gsl_vector.cpp:273 constexpr Complex< T > operator-(const Complex< T > &a, const Complex< T > &b) noexcept Definition: complex.hpp:96 end_tag end(T &&...) begin_tag begin(T &&...) char * append_exponent(char *buf, int e) appends a decimal representation of e to buf Definition: json.hpp:17835 cached_power get_cached_power_for_binary_exponent(int e) Definition: json.hpp:17235 char * format_buffer(char *buf, int len, int decimal_exponent, int min_exp, int max_exp) prettify v = buf * 10^decimal_exponent Definition: json.hpp:17887 void grisu2_digit_gen(char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus) Definition: json.hpp:17494 Target reinterpret_bits(const Source source) Definition: json.hpp:16955 boundaries compute_boundaries(FloatType value) Definition: json.hpp:17096 void grisu2_round(char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k) Definition: json.hpp:17453 void grisu2(char *buf, int &len, int &decimal_exponent, FloatType value) Definition: json.hpp:17795 int find_largest_pow10(const std::uint32_t n, std::uint32_t &pow10) Definition: json.hpp:17399 constexpr bool is_c_string() Definition: json.hpp:4166 constexpr bool is_transparent() Definition: json.hpp:4194 typename detected_or< Default, Op, Args... >::type detected_or_t Definition: json.hpp:306 typename actual_object_comparator< BasicJsonType >::type actual_object_comparator_t Definition: json.hpp:3596 std::function< bool(int, parse_event_t, BasicJsonType &)> parser_callback_t Definition: json.hpp:12220 std::tuple< Args... > from_json_tuple_impl_base(BasicJsonType &&j, index_sequence< Idx... >) Definition: json.hpp:5004 enable_if_t< is_range< R >::value, result_of_begin< decltype(std::declval< R & >())> > iterator_t Definition: json.hpp:3744 std::shared_ptr< output_adapter_protocol< CharType > > output_adapter_t a type to simplify interfaces Definition: json.hpp:14959 @ value the parser finished reading a JSON value @ key the parser read a key of a value in an object @ array_end the parser read ] and finished processing a JSON array @ array_start the parser read [ and started to process a JSON array @ object_start the parser read { and started to process a JSON object @ object_end the parser read } and finished processing a JSON object decltype(T::from_json(std::declval< Args >()...)) from_json_function Definition: json.hpp:3520 decltype(std::declval< T & >().binary(std::declval< Binary & >())) binary_function_t Definition: json.hpp:9059 make_index_sequence< sizeof...(Ts)> index_sequence_for Definition: json.hpp:3199 decltype(std::declval< T & >().number_integer(std::declval< Integer >())) number_integer_function_t Definition: json.hpp:9043 void from_json_array_impl(const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 0 >) Definition: json.hpp:4865 typename std::conditional< is_detected< detect_erase_with_key_type, typename BasicJsonType::object_t, KeyType >::value, std::true_type, std::false_type >::type has_erase_with_key_type Definition: json.hpp:4028 decltype(std::declval< T & >().key(std::declval< String & >())) key_function_t Definition: json.hpp:9067 typename T::difference_type difference_type_t Definition: json.hpp:3505 static void unescape(StringType &s) string unescaping as described in RFC 6901 (Sect. 4) Definition: json.hpp:3005 typename std::conditional< std::is_same< T, void >::value, json_default_base, T >::type json_base_class Definition: json.hpp:13795 make_integer_sequence< size_t, N > make_index_sequence Definition: json.hpp:3191 decltype(T::to_json(std::declval< Args >()...)) to_json_function Definition: json.hpp:3517 typename detector< nonesuch, void, Op, Args... >::type detected_t Definition: json.hpp:300 @ strict throw a type_error exception in case of invalid UTF-8 @ replace replace invalid UTF-8 sequences with U+FFFD std::integral_constant< bool, all_signed< Types... >::value||all_unsigned< Types... >::value > same_sign Definition: json.hpp:4073 void to_json(BasicJsonType &j, const T &b) Definition: json.hpp:5774 void from_json_tuple_impl(BasicJsonType &&j, std::tuple< Args... > &t, priority_tag< 3 >) Definition: json.hpp:5029 decltype(std::declval< T >().template get< U >()) get_template_function Definition: json.hpp:3523 typename T::reference reference_t Definition: json.hpp:3511 @ error throw a parse_error exception in case of a tag void replace_substring(StringType &s, const StringType &f, const StringType &t) replace all occurrences of a substring by another string Definition: json.hpp:2971 decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >())) parse_error_function_t Definition: json.hpp:9082 value_type_t< iterator_traits< iterator_t< T > > > range_value_t Definition: json.hpp:3747 typename std::conditional< is_usable_as_key_type< typename BasicJsonType::object_comparator_t, typename BasicJsonType::object_t::key_type, KeyTypeCVRef, RequireTransparentComparator, ExcludeObjectKeyType >::value &&!is_json_iterator_of< BasicJsonType, KeyType >::value, std::true_type, std::false_type >::type is_usable_as_basic_json_key_type Definition: json.hpp:4016 @ number_integer number value (signed integer) @ discarded discarded by the parser callback function @ binary binary array (ordered collection of bytes) @ object object (unordered set of name/value pairs) @ number_float number value (floating-point) @ number_unsigned number value (unsigned integer) std::integral_constant< bool,(std::is_signed< OfType >::value &&(sizeof(T)< sizeof(OfType)))||(same_sign< OfType, T >::value &&sizeof(OfType)==sizeof(T)) > never_out_of_range Definition: json.hpp:4078 void concat_into(OutStringType &out, const Arg &arg, Args &&... rest) Definition: json.hpp:4331 std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact Definition: json.hpp:309 decltype(std::declval< T & >().null()) null_function_t Definition: json.hpp:9035 void int_to_string(string_type &target, std::size_t value) Definition: json.hpp:5179 std::integral_constant< bool, Value > bool_constant Definition: json.hpp:4156 decltype(std::declval< T & >().start_object(std::declval< std::size_t >())) start_object_function_t Definition: json.hpp:9063 std::is_convertible< detected_t< Op, Args... >, To > is_detected_convertible Definition: json.hpp:313 integer_sequence< size_t, Ints... > index_sequence Definition: json.hpp:3137 auto get(const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key()) Definition: json.hpp:5342 decltype(std::declval< StringType & >().append(std::declval< Arg && >())) string_can_append Definition: json.hpp:4269 decltype(std::declval< ObjectType & >().erase(std::declval< KeyType >())) detect_erase_with_key_type Definition: json.hpp:4019 void get_arithmetic_value(const BasicJsonType &j, ArithmeticType &val) Definition: json.hpp:4678 std::size_t combine(std::size_t seed, std::size_t h) noexcept Definition: json.hpp:6004 decltype(std::declval< StringType & >()+=std::declval< Arg && >()) string_can_append_op Definition: json.hpp:4275 decltype(std::declval< T & >().boolean(std::declval< bool >())) boolean_function_t Definition: json.hpp:9039 typename std::remove_cv< typename std::remove_reference< T >::type >::type uncvref_t Definition: json.hpp:3081 decltype(std::declval< T & >().end_object()) end_object_function_t Definition: json.hpp:9070 typename std::enable_if< B, T >::type enable_if_t Definition: json.hpp:3095 constexpr std::array< T, sizeof...(Args)> make_array(Args &&... args) Definition: json.hpp:3222 decltype(std::declval< StringType & >().append(std::declval< const Arg & >().data(), std::declval< const Arg & >().size())) string_can_append_data Definition: json.hpp:4287 is_detected< string_can_append_iter, StringType, Arg > detect_string_can_append_iter Definition: json.hpp:4284 T conditional_static_cast(U value) Definition: json.hpp:4050 decltype(input_adapter(std::declval< const char * >(), std::declval< const char * >())) contiguous_bytes_input_adapter Definition: json.hpp:6578 is_detected< string_can_append_op, StringType, Arg > detect_string_can_append_op Definition: json.hpp:4278 void from_json(const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m) Definition: json.hpp:5069 typename make_void< Ts... >::type void_t Definition: json.hpp:255 is_detected< string_can_append, StringType, Arg > detect_string_can_append Definition: json.hpp:4272 constexpr bool value_in_range_of(T val) Definition: json.hpp:4150 typename T::key_compare detect_key_compare Definition: json.hpp:3580 decltype(begin(std::declval< T >()...)) result_of_begin Definition: json.hpp:3331 StringType escape(StringType s) string escaping as described in RFC 6901 (Sect. 4) Definition: json.hpp:2990 OutStringType concat(Args &&... args) Definition: json.hpp:4349 typename detector< nonesuch, void, Op, Args... >::value_t is_detected Definition: json.hpp:294 auto input_adapter(T(&array)[N]) -> decltype(input_adapter(array, array+N)) Definition: json.hpp:6596 std::array< T, sizeof...(Idx)> from_json_inplace_array_impl(BasicJsonType &&j, identity_tag< std::array< T, sizeof...(Idx)> >, index_sequence< Idx... >) Definition: json.hpp:4904 typename std::conditional< is_comparable< Comparator, ObjectKeyType, KeyTypeCVRef >::value &&!(ExcludeObjectKeyType &&std::is_same< KeyType, ObjectKeyType >::value) &&(!RequireTransparentComparator||is_detected< detect_is_transparent, Comparator >::value) &&!is_json_pointer< KeyType >::value, std::true_type, std::false_type >::type is_usable_as_key_type Definition: json.hpp:4000 std::size_t concat_length(const char, const Args &... rest) Definition: json.hpp:4246 decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >())) number_float_function_t Definition: json.hpp:9051 typename utility_internal::Gen< T, N >::type make_integer_sequence Definition: json.hpp:3183 typename T::mapped_type mapped_type_t Definition: json.hpp:3496 char * to_chars(char *first, const char *last, FloatType value) generates a decimal representation of the floating-point number value in [first, last). Definition: json.hpp:17972 decltype(std::declval< T & >().start_array(std::declval< std::size_t >())) start_array_function_t Definition: json.hpp:9074 decltype(std::declval< T & >().string(std::declval< String & >())) string_function_t Definition: json.hpp:9055 decltype(std::declval< StringType & >().append(std::declval< const Arg & >().begin(), std::declval< const Arg & >().end())) string_can_append_iter Definition: json.hpp:4281 typename T::key_type key_type_t Definition: json.hpp:3499 static bool little_endianness(int num=1) noexcept determine system byte order Definition: json.hpp:9198 decltype(std::declval< T & >().end_array()) end_array_function_t Definition: json.hpp:9077 decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >())) number_unsigned_function_t Definition: json.hpp:9047 typename T::value_type value_type_t Definition: json.hpp:3502 is_detected< string_can_append_data, StringType, Arg > detect_string_can_append_data Definition: json.hpp:4290 void to_json_tuple_impl(BasicJsonType &j, const Tuple &t, index_sequence< Idx... >) Definition: json.hpp:5780 typename T::iterator_category iterator_category_t Definition: json.hpp:3514 typename T::is_transparent detect_is_transparent Definition: json.hpp:3986 bool operator<(const json_pointer< RefStringTypeLhs > &lhs, const json_pointer< RefStringTypeRhs > &rhs) noexcept Definition: json.hpp:14786 bool operator!=(const StringType &lhs, const json_pointer< RefStringTypeRhs > &rhs) Definition: json.hpp:14779 bool operator==(const StringType &lhs, const json_pointer< RefStringTypeRhs > &rhs) Definition: json.hpp:14754 std::string to_string(const basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass > &j) user-defined to_string function for JSON values Definition: json.hpp:24456 Definition: multiindex.hpp:219 void swap(nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass > &j1, nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass > &j2) noexcept(//NOLINT(readability-inconsistent-declaration-parameter-name, cert-dcl58-cpp) is_nothrow_move_constructible< nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass > >::value &&//NOLINT(misc-redundant-expression, cppcoreguidelines-noexcept-swap, performance-noexcept-swap) is_nothrow_move_assignable< nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass > >::value) exchanges the values of two JSON objects Definition: json.hpp:24537 static auto to_json(BasicJsonType &j, TargetType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< TargetType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< TargetType >(val)), void()) convert any value type to a JSON value Definition: json.hpp:5857 static auto from_json(BasicJsonType &&j, TargetType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void()) convert a JSON value to any value type Definition: json.hpp:5837 static auto from_json(BasicJsonType &&j) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), detail::identity_tag< TargetType > {}))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), detail::identity_tag< TargetType > {})) convert a JSON value to any value type Definition: json.hpp:5847 data() noexcept=default data(size_type cnt, const basic_json &val) Definition: json.hpp:23504 typename std::conditional< has_key_compare< object_t >::value, typename object_t::key_compare, object_comparator_t >::type type Definition: json.hpp:3592 typename BasicJsonType::object_t object_t Definition: json.hpp:3589 typename BasicJsonType::default_object_comparator_t object_comparator_t Definition: json.hpp:3590 static constexpr int_type eof() noexcept Definition: json.hpp:3649 static int_type to_int_type(char_type c) noexcept Definition: json.hpp:3639 static char_type to_char_type(int_type i) noexcept Definition: json.hpp:3644 uint64_t int_type Definition: json.hpp:3636 signed char char_type Definition: json.hpp:3635 unsigned char char_type Definition: json.hpp:3611 uint64_t int_type Definition: json.hpp:3612 static int_type to_int_type(char_type c) noexcept Definition: json.hpp:3615 static char_type to_char_type(int_type i) noexcept Definition: json.hpp:3620 static constexpr int_type eof() noexcept Definition: json.hpp:3625 Definition: json.hpp:6538 static adapter_type create(const ContainerType &container) Definition: json.hpp:6546 decltype(input_adapter(begin(std::declval< ContainerType >()), end(std::declval< ContainerType >()))) adapter_type Definition: json.hpp:6544 std::true_type value_t Definition: json.hpp:289 Op< Args... > type Definition: json.hpp:290 std::false_type value_t Definition: json.hpp:282 diyfp minus Definition: json.hpp:17085 std::uint64_t f Definition: json.hpp:17223 static diyfp normalize(diyfp x) noexcept normalize x such that the significand is >= 2^(q-1) Definition: json.hpp:17054 static diyfp normalize_to(const diyfp &x, const int target_exponent) noexcept normalize x such that the result has the exponent E Definition: json.hpp:17071 constexpr diyfp(std::uint64_t f_, int e_) noexcept Definition: json.hpp:16971 static void construct(BasicJsonType &j, typename BasicJsonType::array_t &&arr) Definition: json.hpp:5542 static void construct(BasicJsonType &j, const CompatibleArrayType &arr) Definition: json.hpp:5554 static void construct(BasicJsonType &j, const typename BasicJsonType::array_t &arr) Definition: json.hpp:5532 static void construct(BasicJsonType &j, const std::vector< bool > &arr) Definition: json.hpp:5567 static void construct(BasicJsonType &j, const std::valarray< T > &arr) Definition: json.hpp:5583 static void construct(BasicJsonType &j, typename BasicJsonType::binary_t &&b) Definition: json.hpp:5480 static void construct(BasicJsonType &j, const typename BasicJsonType::binary_t &b) Definition: json.hpp:5471 static void construct(BasicJsonType &j, typename BasicJsonType::boolean_t b) noexcept Definition: json.hpp:5425 static void construct(BasicJsonType &j, typename BasicJsonType::number_float_t val) noexcept Definition: json.hpp:5493 static void construct(BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexcept Definition: json.hpp:5519 static void construct(BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexcept Definition: json.hpp:5506 static void construct(BasicJsonType &j, const CompatibleObjectType &obj) Definition: json.hpp:5623 static void construct(BasicJsonType &j, typename BasicJsonType::object_t &&obj) Definition: json.hpp:5612 static void construct(BasicJsonType &j, const typename BasicJsonType::object_t &obj) Definition: json.hpp:5602 static void construct(BasicJsonType &j, const typename BasicJsonType::string_t &s) Definition: json.hpp:5438 static void construct(BasicJsonType &j, const CompatibleStringType &str) Definition: json.hpp:5458 static void construct(BasicJsonType &j, typename BasicJsonType::string_t &&s) Definition: json.hpp:5447 auto operator()(const BasicJsonType &j, T &&val) const noexcept(noexcept(from_json(j, std::forward< T >(val)))) -> decltype(from_json(j, std::forward< T >(val))) Definition: json.hpp:5101 typename BasicJsonType::template json_serializer< T, void > serializer Definition: json.hpp:3542 typename BasicJsonType::template json_serializer< T, void > serializer Definition: json.hpp:3557 typename BasicJsonType::template json_serializer< T, void > serializer Definition: json.hpp:3572 T value_type Definition: json.hpp:3124 static constexpr std::size_t size() noexcept Definition: json.hpp:3125 primitive_iterator_t primitive_iterator generic iterator for all other types Definition: json.hpp:12855 std::numeric_limits< RealIntegerType > RealLimits Definition: json.hpp:3918 std::numeric_limits< CompatibleNumberIntegerType > CompatibleLimits Definition: json.hpp:3919 typename BasicJsonType::object_t object_t Definition: json.hpp:3769 range_value_t< ConstructibleArrayType > value_type Definition: json.hpp:3890 typename BasicJsonType::object_t object_t Definition: json.hpp:3793 ConstructibleStringType laundered_type Definition: json.hpp:3830 typename std::iterator_traits< T >::value_type value_type Definition: json.hpp:6498 static one test(decltype(&C::capacity)) static two test(...) typename std::add_lvalue_reference< T >::type t_ref Definition: json.hpp:3728 detected_t< result_of_end, t_ref > sentinel Definition: json.hpp:3731 detected_t< result_of_begin, t_ref > iterator Definition: json.hpp:3730 typename BasicJsonType::binary_t binary_t Definition: json.hpp:9126 typename BasicJsonType::string_t string_t Definition: json.hpp:9125 typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:9122 typename BasicJsonType::exception exception_t Definition: json.hpp:9127 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:9124 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:9123 typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:9092 typename BasicJsonType::binary_t binary_t Definition: json.hpp:9095 typename BasicJsonType::string_t string_t Definition: json.hpp:9094 typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:9091 typename BasicJsonType::exception exception_t Definition: json.hpp:9096 typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:9093 typename std::iterator_traits< iterator_type >::value_type char_type Definition: json.hpp:6509 static adapter_type create(IteratorType first, IteratorType last) Definition: json.hpp:6513 IteratorType iterator_type Definition: json.hpp:6508 static adapter_type create(IteratorType first, IteratorType last) Definition: json.hpp:6489 IteratorType iterator_type Definition: json.hpp:6485 typename std::iterator_traits< iterator_type >::value_type char_type Definition: json.hpp:6486 std::random_access_iterator_tag iterator_category Definition: json.hpp:3303 T * pointer Definition: json.hpp:3306 T value_type Definition: json.hpp:3304 T & reference Definition: json.hpp:3307 ptrdiff_t difference_type Definition: json.hpp:3305 typename It::difference_type difference_type Definition: json.hpp:3280 typename It::value_type value_type Definition: json.hpp:3281 typename It::iterator_category iterator_category Definition: json.hpp:3284 typename It::pointer pointer Definition: json.hpp:3282 typename It::reference reference Definition: json.hpp:3283 Default base class of the basic_json class. Definition: json.hpp:13788 void operator=(nonesuch const &)=delete void operator=(nonesuch &&)=delete nonesuch(nonesuch const &&)=delete nonesuch(nonesuch const &)=delete nonesuch()=delete ~nonesuch()=delete abstract output adapter interface Definition: json.hpp:14945 virtual void write_characters(const CharType *s, std::size_t length)=0 output_adapter_protocol(const output_adapter_protocol &)=default virtual ~output_adapter_protocol()=default output_adapter_protocol(output_adapter_protocol &&) noexcept=default output_adapter_protocol()=default virtual void write_character(CharType c)=0 struct to capture the start position of the current token Definition: json.hpp:3036 std::size_t chars_read_current_line the number of characters read in the current line Definition: json.hpp:3040 auto operator()(BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void()) Definition: json.hpp:5802 typename Extend< typename Gen< T, N/2 >::type, N/2, N % 2 >::type type Definition: json.hpp:3164 static constexpr bool test(T val) Definition: json.hpp:4134 static constexpr bool test(T) Definition: json.hpp:4143 static constexpr bool test(T val) Definition: json.hpp:4088 static constexpr bool test(T val) Definition: json.hpp:4108 static constexpr bool test(T val) Definition: json.hpp:4098 static constexpr bool test(T val) Definition: json.hpp:4118 static void fill_buffer(BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled) Definition: json.hpp:6379 static void fill_buffer(BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled) Definition: json.hpp:6321 StringType type Definition: json.hpp:13858 typename BasicJsonType::binary_t binary_t Definition: json.hpp:6675 virtual bool string(string_t &val)=0 a string value was read json_sax(const json_sax &)=default virtual bool start_object(std::size_t elements)=0 the beginning of an object was read typename BasicJsonType::number_float_t number_float_t Definition: json.hpp:6673 virtual bool number_float(number_float_t val, const string_t &s)=0 a floating-point number was read virtual bool number_unsigned(number_unsigned_t val)=0 an unsigned integer number was read virtual bool parse_error(std::size_t position, const std::string &last_token, const detail::exception &ex)=0 a parse error occurred typename BasicJsonType::string_t string_t Definition: json.hpp:6674 json_sax(json_sax &&) noexcept=default virtual bool number_integer(number_integer_t val)=0 an integer number was read virtual bool binary(binary_t &val)=0 a binary value was read virtual bool end_array()=0 the end of an array was read virtual bool start_array(std::size_t elements)=0 the beginning of an array was read virtual bool end_object()=0 the end of an object was read typename BasicJsonType::number_unsigned_t number_unsigned_t Definition: json.hpp:6672 virtual bool boolean(bool val)=0 a boolean value was read json_sax()=default typename BasicJsonType::number_integer_t number_integer_t Definition: json.hpp:6671 a minimal map-like container that preserves insertion order Definition: json.hpp:19034 void insert(InputIt first, InputIt last) Definition: json.hpp:19351 std::pair< iterator, bool > emplace(const key_type &key, T &&t) Definition: json.hpp:19058 size_type erase(const key_type &key) Definition: json.hpp:19166 ordered_map(std::initializer_list< value_type > init, const Allocator &alloc=Allocator()) Definition: json.hpp:19055 typename Container::size_type size_type Definition: json.hpp:19040 std::equal_to< Key > key_compare Definition: json.hpp:19045 iterator find(const key_type &key) Definition: json.hpp:19290 typename Container::const_iterator const_iterator Definition: json.hpp:19039 size_type erase(KeyType &&key) Definition: json.hpp:19187 iterator erase(iterator first, iterator last) Definition: json.hpp:19211 std::pair< iterator, bool > insert(value_type &&value) Definition: json.hpp:19328 typename Container::iterator iterator Definition: json.hpp:19038 ordered_map() noexcept(noexcept(Container())) Definition: json.hpp:19050 size_type count(const key_type &key) const Definition: json.hpp:19264 typename Container::value_type value_type Definition: json.hpp:19041 T & operator[](KeyType &&key) Definition: json.hpp:19093 std::vector< std::pair< const Key, T >, Allocator > Container Definition: json.hpp:19037 iterator erase(iterator pos) Definition: json.hpp:19206 ordered_map(const Allocator &alloc) noexcept(noexcept(Container(alloc))) Definition: json.hpp:19051 std::pair< iterator, bool > insert(const value_type &value) Definition: json.hpp:19333 const T & at(KeyType &&key) const Definition: json.hpp:19153 size_type count(KeyType &&key) const Definition: json.hpp:19278 ordered_map(It first, It last, const Allocator &alloc=Allocator()) Definition: json.hpp:19053 const T & operator[](KeyType &&key) const Definition: json.hpp:19105 const T & at(const key_type &key) const Definition: json.hpp:19138 const T & operator[](const key_type &key) const Definition: json.hpp:19098 std::pair< iterator, bool > emplace(KeyType &&key, T &&t) Definition: json.hpp:19073 T & operator[](const key_type &key) Definition: json.hpp:19086 const_iterator find(const key_type &key) const Definition: json.hpp:19316 typename std::enable_if< std::is_convertible< typename std::iterator_traits< InputIt >::iterator_category, std::input_iterator_tag >::value >::type require_input_iter Definition: json.hpp:19348 std::size_t operator()(const nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass > &j) const Definition: json.hpp:24506 bool operator()(::nlohmann::detail::value_t lhs, ::nlohmann::detail::value_t rhs) const noexcept compare two value_t enum values Definition: json.hpp:24520 json_value(number_float_t v) noexcept constructor for numbers (floating-point) Definition: json.hpp:19753 json_value(binary_t &&value) constructor for rvalue binary arrays (internal type) Definition: json.hpp:19854 void destroy(value_t t) Definition: json.hpp:19856 json_value(number_unsigned_t v) noexcept constructor for numbers (unsigned) Definition: json.hpp:19751 json_value(typename binary_t::container_type &&value) constructor for rvalue binary arrays Definition: json.hpp:19848 json_value(const typename binary_t::container_type &value) constructor for binary arrays Definition: json.hpp:19845 json_value()=default default constructor (for null values) json_value(const binary_t &value) constructor for binary arrays (internal type) Definition: json.hpp:19851 Generated on Mon Feb 26 2024 06:24:15 for FlexibleSUSY by 1.9.4 |