From af8153347eab7f6fa33fa772875adce640570be1 Mon Sep 17 00:00:00 2001 From: George Arama Date: Thu, 30 May 2024 13:11:24 -0700 Subject: [PATCH] first pass --- .../inc/azure/core/internal/json/json.hpp | 30694 +++++++++------- 1 file changed, 17595 insertions(+), 13099 deletions(-) diff --git a/sdk/core/azure-core/inc/azure/core/internal/json/json.hpp b/sdk/core/azure-core/inc/azure/core/internal/json/json.hpp index 391c30077..3b1abb798 100644 --- a/sdk/core/azure-core/inc/azure/core/internal/json/json.hpp +++ b/sdk/core/azure-core/inc/azure/core/internal/json/json.hpp @@ -1,56 +1,101 @@ -/* - __ _____ _____ _____ - __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 3.8.0 -|_____|_____|_____|_|___| https://github.com/nlohmann/json +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT -Licensed under the MIT License . -SPDX-License-Identifier: MIT -Copyright (c) 2013-2019 Niels Lohmann . - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ #pragma once -// #define NLOHMANN_JSON_VERSION_MAJOR 3 -// #define NLOHMANN_JSON_VERSION_MINOR 8 -// #define NLOHMANN_JSON_VERSION_PATCH 0 - #include // all_of, find, for_each -#include // assert #include // nullptr_t, ptrdiff_t, size_t #include // hash, less #include // initializer_list +#ifndef JSON_NO_IO #include // istream, ostream +#endif // JSON_NO_IO #include // random_access_iterator_tag #include // unique_ptr -#include // accumulate #include // string, stoi, to_string #include // declval, forward, move, pair, swap #include // vector // #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT #include +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +// This file contains all macro definitions affecting or depending on the ABI + +// #define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +// #define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) +// #define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS +#define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON +#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS +#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else +#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON +#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else +#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi##a##b +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) + // #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT #include // transform #include // array @@ -64,2638 +109,83 @@ SOFTWARE. #include // pair, declval #include // valarray -// #include - -// Header is removed in C++20. -// See for more information. - -#if __cplusplus <= 201703L -#include // and, not, or -#endif - // #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT +#include // nullptr_t #include // exception +#if JSON_DIAGNOSTICS +#include // accumulate +#endif #include // runtime_error #include // to_string +#include // vector -// #include +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT +#include // array #include // size_t - -namespace Azure { namespace Core { namespace Json { namespace _internal { namespace detail { - /// struct to capture the start position of the current token - struct position_t - { - /// the total number of characters read - std::size_t chars_read_total = 0; - /// the number of characters read in the current line - std::size_t chars_read_current_line = 0; - /// the number of lines read - std::size_t lines_read = 0; - - /// conversion to size_t to preserve SAX interface - constexpr operator size_t() const { return chars_read_total; } - }; - -}}}}} // namespace Azure::Core::Json::_internal::detail +#include // uint8_t +#include // string // #include - -#include // pair -// #include -/* Hedley - https://nemequ.github.io/hedley - * Created by Evan Nemerson - * - * To the extent possible under law, the author(s) have dedicated all - * copyright and related and neighboring rights to this software to - * the public domain worldwide. This software is distributed without - * any warranty. - * - * For details, see . - * SPDX-License-Identifier: CC0-1.0 - */ - -#if !defined(_az_JSON_HEDLEY_VERSION) || (_az_JSON_HEDLEY_VERSION < 13) -#if defined(_az_JSON_HEDLEY_VERSION) -#undef _az_JSON_HEDLEY_VERSION -#endif -#define _az_JSON_HEDLEY_VERSION 13 - -#if defined(_az_JSON_HEDLEY_STRINGIFY_EX) -#undef _az_JSON_HEDLEY_STRINGIFY_EX -#endif -#define _az_JSON_HEDLEY_STRINGIFY_EX(x) #x - -#if defined(_az_JSON_HEDLEY_STRINGIFY) -#undef _az_JSON_HEDLEY_STRINGIFY -#endif -#define _az_JSON_HEDLEY_STRINGIFY(x) _az_JSON_HEDLEY_STRINGIFY_EX(x) - -#if defined(_az_JSON_HEDLEY_CONCAT_EX) -#undef _az_JSON_HEDLEY_CONCAT_EX -#endif -#define _az_JSON_HEDLEY_CONCAT_EX(a, b) a##b - -#if defined(_az_JSON_HEDLEY_CONCAT) -#undef _az_JSON_HEDLEY_CONCAT -#endif -#define _az_JSON_HEDLEY_CONCAT(a, b) _az_JSON_HEDLEY_CONCAT_EX(a, b) - -#if defined(_az_JSON_HEDLEY_CONCAT3_EX) -#undef _az_JSON_HEDLEY_CONCAT3_EX -#endif -#define _az_JSON_HEDLEY_CONCAT3_EX(a, b, c) a##b##c - -#if defined(_az_JSON_HEDLEY_CONCAT3) -#undef _az_JSON_HEDLEY_CONCAT3 -#endif -#define _az_JSON_HEDLEY_CONCAT3(a, b, c) _az_JSON_HEDLEY_CONCAT3_EX(a, b, c) - -#if defined(_az_JSON_HEDLEY_VERSION_ENCODE) -#undef _az_JSON_HEDLEY_VERSION_ENCODE -#endif -#define _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, revision) \ - (((major)*1000000) + ((minor)*1000) + (revision)) - -#if defined(_az_JSON_HEDLEY_VERSION_DECODE_MAJOR) -#undef _az_JSON_HEDLEY_VERSION_DECODE_MAJOR -#endif -#define _az_JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) - -#if defined(_az_JSON_HEDLEY_VERSION_DECODE_MINOR) -#undef _az_JSON_HEDLEY_VERSION_DECODE_MINOR -#endif -#define _az_JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) - -#if defined(_az_JSON_HEDLEY_VERSION_DECODE_REVISION) -#undef _az_JSON_HEDLEY_VERSION_DECODE_REVISION -#endif -#define _az_JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) - -#if defined(_az_JSON_HEDLEY_GNUC_VERSION) -#undef _az_JSON_HEDLEY_GNUC_VERSION -#endif -#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) -#define _az_JSON_HEDLEY_GNUC_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) -#elif defined(__GNUC__) -#define _az_JSON_HEDLEY_GNUC_VERSION _az_JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_VERSION_CHECK) -#undef _az_JSON_HEDLEY_GNUC_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_GNUC_VERSION) -#define _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_GNUC_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_MSVC_VERSION) -#undef _az_JSON_HEDLEY_MSVC_VERSION -#endif -#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) -#define _az_JSON_HEDLEY_MSVC_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - _MSC_FULL_VER / 10000000, \ - (_MSC_FULL_VER % 10000000) / 100000, \ - (_MSC_FULL_VER % 100000) / 100) -#elif defined(_MSC_FULL_VER) -#define _az_JSON_HEDLEY_MSVC_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - _MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) -#elif defined(_MSC_VER) -#define _az_JSON_HEDLEY_MSVC_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) -#endif - -#if defined(_az_JSON_HEDLEY_MSVC_VERSION_CHECK) -#undef _az_JSON_HEDLEY_MSVC_VERSION_CHECK -#endif -#if !defined(_MSC_VER) -#define _az_JSON_HEDLEY_MSVC_VERSION_CHECK(major, minor, patch) (0) -#elif defined(_MSC_VER) && (_MSC_VER >= 1400) -#define _az_JSON_HEDLEY_MSVC_VERSION_CHECK(major, minor, patch) \ - (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) -#elif defined(_MSC_VER) && (_MSC_VER >= 1200) -#define _az_JSON_HEDLEY_MSVC_VERSION_CHECK(major, minor, patch) \ - (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) -#else -#define _az_JSON_HEDLEY_MSVC_VERSION_CHECK(major, minor, patch) \ - (_MSC_VER >= ((major * 100) + (minor))) -#endif - -#if defined(_az_JSON_HEDLEY_INTEL_VERSION) -#undef _az_JSON_HEDLEY_INTEL_VERSION -#endif -#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) -#define _az_JSON_HEDLEY_INTEL_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) -#elif defined(__INTEL_COMPILER) -#define _az_JSON_HEDLEY_INTEL_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) -#endif - -#if defined(_az_JSON_HEDLEY_INTEL_VERSION_CHECK) -#undef _az_JSON_HEDLEY_INTEL_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_INTEL_VERSION) -#define _az_JSON_HEDLEY_INTEL_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_INTEL_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_INTEL_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_PGI_VERSION) -#undef _az_JSON_HEDLEY_PGI_VERSION -#endif -#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) -#define _az_JSON_HEDLEY_PGI_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) -#endif - -#if defined(_az_JSON_HEDLEY_PGI_VERSION_CHECK) -#undef _az_JSON_HEDLEY_PGI_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_PGI_VERSION) -#define _az_JSON_HEDLEY_PGI_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_PGI_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_PGI_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_SUNPRO_VERSION) -#undef _az_JSON_HEDLEY_SUNPRO_VERSION -#endif -#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) -#define _az_JSON_HEDLEY_SUNPRO_VERSION \ - _az_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) -#elif defined(__SUNPRO_C) -#define _az_JSON_HEDLEY_SUNPRO_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C)&0xf) -#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) -#define _az_JSON_HEDLEY_SUNPRO_VERSION \ - _az_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) -#elif defined(__SUNPRO_CC) -#define _az_JSON_HEDLEY_SUNPRO_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - (__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC)&0xf) -#endif - -#if defined(_az_JSON_HEDLEY_SUNPRO_VERSION_CHECK) -#undef _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_SUNPRO_VERSION) -#define _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_SUNPRO_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_EMSCRIPTEN_VERSION) -#undef _az_JSON_HEDLEY_EMSCRIPTEN_VERSION -#endif -#if defined(__EMSCRIPTEN__) -#define _az_JSON_HEDLEY_EMSCRIPTEN_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) -#endif - -#if defined(_az_JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) -#undef _az_JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_EMSCRIPTEN_VERSION) -#define _az_JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_EMSCRIPTEN_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_ARM_VERSION) -#undef _az_JSON_HEDLEY_ARM_VERSION -#endif -#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) -#define _az_JSON_HEDLEY_ARM_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __ARMCOMPILER_VERSION / 1000000, \ - (__ARMCOMPILER_VERSION % 1000000) / 10000, \ - (__ARMCOMPILER_VERSION % 10000) / 100) -#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) -#define _az_JSON_HEDLEY_ARM_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __ARMCC_VERSION / 1000000, \ - (__ARMCC_VERSION % 1000000) / 10000, \ - (__ARMCC_VERSION % 10000) / 100) -#endif - -#if defined(_az_JSON_HEDLEY_ARM_VERSION_CHECK) -#undef _az_JSON_HEDLEY_ARM_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_ARM_VERSION) -#define _az_JSON_HEDLEY_ARM_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_ARM_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_ARM_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_IBM_VERSION) -#undef _az_JSON_HEDLEY_IBM_VERSION -#endif -#if defined(__ibmxl__) -#define _az_JSON_HEDLEY_IBM_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) -#elif defined(__xlC__) && defined(__xlC_ver__) -#define _az_JSON_HEDLEY_IBM_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) -#elif defined(__xlC__) -#define _az_JSON_HEDLEY_IBM_VERSION _az_JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) -#endif - -#if defined(_az_JSON_HEDLEY_IBM_VERSION_CHECK) -#undef _az_JSON_HEDLEY_IBM_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_IBM_VERSION) -#define _az_JSON_HEDLEY_IBM_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_IBM_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_IBM_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TI_VERSION) -#undef _az_JSON_HEDLEY_TI_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) \ - && (defined(__TMS470__) || defined(__TI_ARM__) || defined(__MSP430__) \ - || defined(__TMS320C2000__)) -#if (__TI_COMPILER_VERSION__ >= 16000000) -#define _az_JSON_HEDLEY_TI_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __TI_COMPILER_VERSION__ / 1000000, \ - (__TI_COMPILER_VERSION__ % 1000000) / 1000, \ - (__TI_COMPILER_VERSION__ % 1000)) -#endif -#endif - -#if defined(_az_JSON_HEDLEY_TI_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TI_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TI_VERSION) -#define _az_JSON_HEDLEY_TI_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TI_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TI_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL2000_VERSION) -#undef _az_JSON_HEDLEY_TI_CL2000_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) -#define _az_JSON_HEDLEY_TI_CL2000_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __TI_COMPILER_VERSION__ / 1000000, \ - (__TI_COMPILER_VERSION__ % 1000000) / 1000, \ - (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TI_CL2000_VERSION) -#define _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TI_CL2000_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL430_VERSION) -#undef _az_JSON_HEDLEY_TI_CL430_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) -#define _az_JSON_HEDLEY_TI_CL430_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __TI_COMPILER_VERSION__ / 1000000, \ - (__TI_COMPILER_VERSION__ % 1000000) / 1000, \ - (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TI_CL430_VERSION) -#define _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TI_CL430_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TI_ARMCL_VERSION) -#undef _az_JSON_HEDLEY_TI_ARMCL_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) -#define _az_JSON_HEDLEY_TI_ARMCL_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __TI_COMPILER_VERSION__ / 1000000, \ - (__TI_COMPILER_VERSION__ % 1000000) / 1000, \ - (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TI_ARMCL_VERSION) -#define _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TI_ARMCL_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL6X_VERSION) -#undef _az_JSON_HEDLEY_TI_CL6X_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) -#define _az_JSON_HEDLEY_TI_CL6X_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __TI_COMPILER_VERSION__ / 1000000, \ - (__TI_COMPILER_VERSION__ % 1000000) / 1000, \ - (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TI_CL6X_VERSION) -#define _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TI_CL6X_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL7X_VERSION) -#undef _az_JSON_HEDLEY_TI_CL7X_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) -#define _az_JSON_HEDLEY_TI_CL7X_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __TI_COMPILER_VERSION__ / 1000000, \ - (__TI_COMPILER_VERSION__ % 1000000) / 1000, \ - (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TI_CL7X_VERSION) -#define _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TI_CL7X_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CLPRU_VERSION) -#undef _az_JSON_HEDLEY_TI_CLPRU_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) -#define _az_JSON_HEDLEY_TI_CLPRU_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __TI_COMPILER_VERSION__ / 1000000, \ - (__TI_COMPILER_VERSION__ % 1000000) / 1000, \ - (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(_az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TI_CLPRU_VERSION) -#define _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TI_CLPRU_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_CRAY_VERSION) -#undef _az_JSON_HEDLEY_CRAY_VERSION -#endif -#if defined(_CRAYC) -#if defined(_RELEASE_PATCHLEVEL) -#define _az_JSON_HEDLEY_CRAY_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) -#else -#define _az_JSON_HEDLEY_CRAY_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) -#endif -#endif - -#if defined(_az_JSON_HEDLEY_CRAY_VERSION_CHECK) -#undef _az_JSON_HEDLEY_CRAY_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_CRAY_VERSION) -#define _az_JSON_HEDLEY_CRAY_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_CRAY_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_CRAY_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_IAR_VERSION) -#undef _az_JSON_HEDLEY_IAR_VERSION -#endif -#if defined(__IAR_SYSTEMS_ICC__) -#if __VER__ > 1000 -#define _az_JSON_HEDLEY_IAR_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) -#else -#define _az_JSON_HEDLEY_IAR_VERSION _az_JSON_HEDLEY_VERSION_ENCODE(VER / 100, __VER__ % 100, 0) -#endif -#endif - -#if defined(_az_JSON_HEDLEY_IAR_VERSION_CHECK) -#undef _az_JSON_HEDLEY_IAR_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_IAR_VERSION) -#define _az_JSON_HEDLEY_IAR_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_IAR_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_IAR_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_TINYC_VERSION) -#undef _az_JSON_HEDLEY_TINYC_VERSION -#endif -#if defined(__TINYC__) -#define _az_JSON_HEDLEY_TINYC_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) -#endif - -#if defined(_az_JSON_HEDLEY_TINYC_VERSION_CHECK) -#undef _az_JSON_HEDLEY_TINYC_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_TINYC_VERSION) -#define _az_JSON_HEDLEY_TINYC_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_TINYC_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_TINYC_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_DMC_VERSION) -#undef _az_JSON_HEDLEY_DMC_VERSION -#endif -#if defined(__DMC__) -#define _az_JSON_HEDLEY_DMC_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) -#endif - -#if defined(_az_JSON_HEDLEY_DMC_VERSION_CHECK) -#undef _az_JSON_HEDLEY_DMC_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_DMC_VERSION) -#define _az_JSON_HEDLEY_DMC_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_DMC_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_DMC_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_COMPCERT_VERSION) -#undef _az_JSON_HEDLEY_COMPCERT_VERSION -#endif -#if defined(__COMPCERT_VERSION__) -#define _az_JSON_HEDLEY_COMPCERT_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE( \ - __COMPCERT_VERSION__ / 10000, \ - (__COMPCERT_VERSION__ / 100) % 100, \ - __COMPCERT_VERSION__ % 100) -#endif - -#if defined(_az_JSON_HEDLEY_COMPCERT_VERSION_CHECK) -#undef _az_JSON_HEDLEY_COMPCERT_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_COMPCERT_VERSION) -#define _az_JSON_HEDLEY_COMPCERT_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_COMPCERT_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_COMPCERT_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_PELLES_VERSION) -#undef _az_JSON_HEDLEY_PELLES_VERSION -#endif -#if defined(__POCC__) -#define _az_JSON_HEDLEY_PELLES_VERSION \ - _az_JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) -#endif - -#if defined(_az_JSON_HEDLEY_PELLES_VERSION_CHECK) -#undef _az_JSON_HEDLEY_PELLES_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_PELLES_VERSION) -#define _az_JSON_HEDLEY_PELLES_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_PELLES_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_PELLES_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_VERSION) -#undef _az_JSON_HEDLEY_GCC_VERSION -#endif -#if defined(_az_JSON_HEDLEY_GNUC_VERSION) && !defined(__clang__) \ - && !defined(_az_JSON_HEDLEY_INTEL_VERSION) && !defined(_az_JSON_HEDLEY_PGI_VERSION) \ - && !defined(_az_JSON_HEDLEY_ARM_VERSION) && !defined(_az_JSON_HEDLEY_TI_VERSION) \ - && !defined(_az_JSON_HEDLEY_TI_ARMCL_VERSION) && !defined(_az_JSON_HEDLEY_TI_CL430_VERSION) \ - && !defined(_az_JSON_HEDLEY_TI_CL2000_VERSION) && !defined(_az_JSON_HEDLEY_TI_CL6X_VERSION) \ - && !defined(_az_JSON_HEDLEY_TI_CL7X_VERSION) && !defined(_az_JSON_HEDLEY_TI_CLPRU_VERSION) \ - && !defined(__COMPCERT__) -#define _az_JSON_HEDLEY_GCC_VERSION _az_JSON_HEDLEY_GNUC_VERSION -#endif - -#if defined(_az_JSON_HEDLEY_GCC_VERSION_CHECK) -#undef _az_JSON_HEDLEY_GCC_VERSION_CHECK -#endif -#if defined(_az_JSON_HEDLEY_GCC_VERSION) -#define _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) \ - (_az_JSON_HEDLEY_GCC_VERSION >= _az_JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else -#define _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) (0) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_ATTRIBUTE) -#undef _az_JSON_HEDLEY_HAS_ATTRIBUTE -#endif -#if defined(__has_attribute) -#define _az_JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) -#else -#define _az_JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) -#undef _az_JSON_HEDLEY_GNUC_HAS_ATTRIBUTE -#endif -#if defined(__has_attribute) -#define _az_JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \ - __has_attribute(attribute) -#else -#define _az_JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \ - _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_HAS_ATTRIBUTE) -#undef _az_JSON_HEDLEY_GCC_HAS_ATTRIBUTE -#endif -#if defined(__has_attribute) -#define _az_JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute, major, minor, patch) __has_attribute(attribute) -#else -#define _az_JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute, major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE) -#undef _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE -#endif -#if defined(__has_cpp_attribute) && defined(__cplusplus) \ - && (!defined(_az_JSON_HEDLEY_SUNPRO_VERSION) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 15, 0)) -#define _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) -#else -#define _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) -#undef _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS -#endif -#if !defined(__cplusplus) || !defined(__has_cpp_attribute) -#define _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns, attribute) (0) -#elif !defined(_az_JSON_HEDLEY_PGI_VERSION) && !defined(_az_JSON_HEDLEY_IAR_VERSION) \ - && (!defined(_az_JSON_HEDLEY_SUNPRO_VERSION) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 15, 0)) \ - && (!defined(_az_JSON_HEDLEY_MSVC_VERSION) || _az_JSON_HEDLEY_MSVC_VERSION_CHECK(19, 20, 0)) -#define _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns, attribute) \ - _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) -#else -#define _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns, attribute) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) -#undef _az_JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE -#endif -#if defined(__has_cpp_attribute) && defined(__cplusplus) -#define _az_JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch) \ - __has_cpp_attribute(attribute) -#else -#define _az_JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch) \ - _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) -#undef _az_JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE -#endif -#if defined(__has_cpp_attribute) && defined(__cplusplus) -#define _az_JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch) \ - __has_cpp_attribute(attribute) -#else -#define _az_JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_BUILTIN) -#undef _az_JSON_HEDLEY_HAS_BUILTIN -#endif -#if defined(__has_builtin) -#define _az_JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) -#else -#define _az_JSON_HEDLEY_HAS_BUILTIN(builtin) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_HAS_BUILTIN) -#undef _az_JSON_HEDLEY_GNUC_HAS_BUILTIN -#endif -#if defined(__has_builtin) -#define _az_JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin, major, minor, patch) __has_builtin(builtin) -#else -#define _az_JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin, major, minor, patch) \ - _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_HAS_BUILTIN) -#undef _az_JSON_HEDLEY_GCC_HAS_BUILTIN -#endif -#if defined(__has_builtin) -#define _az_JSON_HEDLEY_GCC_HAS_BUILTIN(builtin, major, minor, patch) __has_builtin(builtin) -#else -#define _az_JSON_HEDLEY_GCC_HAS_BUILTIN(builtin, major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_FEATURE) -#undef _az_JSON_HEDLEY_HAS_FEATURE -#endif -#if defined(__has_feature) -#define _az_JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) -#else -#define _az_JSON_HEDLEY_HAS_FEATURE(feature) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_HAS_FEATURE) -#undef _az_JSON_HEDLEY_GNUC_HAS_FEATURE -#endif -#if defined(__has_feature) -#define _az_JSON_HEDLEY_GNUC_HAS_FEATURE(feature, major, minor, patch) __has_feature(feature) -#else -#define _az_JSON_HEDLEY_GNUC_HAS_FEATURE(feature, major, minor, patch) \ - _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_HAS_FEATURE) -#undef _az_JSON_HEDLEY_GCC_HAS_FEATURE -#endif -#if defined(__has_feature) -#define _az_JSON_HEDLEY_GCC_HAS_FEATURE(feature, major, minor, patch) __has_feature(feature) -#else -#define _az_JSON_HEDLEY_GCC_HAS_FEATURE(feature, major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_EXTENSION) -#undef _az_JSON_HEDLEY_HAS_EXTENSION -#endif -#if defined(__has_extension) -#define _az_JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) -#else -#define _az_JSON_HEDLEY_HAS_EXTENSION(extension) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_HAS_EXTENSION) -#undef _az_JSON_HEDLEY_GNUC_HAS_EXTENSION -#endif -#if defined(__has_extension) -#define _az_JSON_HEDLEY_GNUC_HAS_EXTENSION(extension, major, minor, patch) \ - __has_extension(extension) -#else -#define _az_JSON_HEDLEY_GNUC_HAS_EXTENSION(extension, major, minor, patch) \ - _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_HAS_EXTENSION) -#undef _az_JSON_HEDLEY_GCC_HAS_EXTENSION -#endif -#if defined(__has_extension) -#define _az_JSON_HEDLEY_GCC_HAS_EXTENSION(extension, major, minor, patch) __has_extension(extension) -#else -#define _az_JSON_HEDLEY_GCC_HAS_EXTENSION(extension, major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) -#undef _az_JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE -#endif -#if defined(__has_declspec_attribute) -#define _az_JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) -#else -#define _az_JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) -#undef _az_JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE -#endif -#if defined(__has_declspec_attribute) -#define _az_JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch) \ - __has_declspec_attribute(attribute) -#else -#define _az_JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch) \ - _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) -#undef _az_JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE -#endif -#if defined(__has_declspec_attribute) -#define _az_JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch) \ - __has_declspec_attribute(attribute) -#else -#define _az_JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_HAS_WARNING) -#undef _az_JSON_HEDLEY_HAS_WARNING -#endif -#if defined(__has_warning) -#define _az_JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) -#else -#define _az_JSON_HEDLEY_HAS_WARNING(warning) (0) -#endif - -#if defined(_az_JSON_HEDLEY_GNUC_HAS_WARNING) -#undef _az_JSON_HEDLEY_GNUC_HAS_WARNING -#endif -#if defined(__has_warning) -#define _az_JSON_HEDLEY_GNUC_HAS_WARNING(warning, major, minor, patch) __has_warning(warning) -#else -#define _az_JSON_HEDLEY_GNUC_HAS_WARNING(warning, major, minor, patch) \ - _az_JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_GCC_HAS_WARNING) -#undef _az_JSON_HEDLEY_GCC_HAS_WARNING -#endif -#if defined(__has_warning) -#define _az_JSON_HEDLEY_GCC_HAS_WARNING(warning, major, minor, patch) __has_warning(warning) -#else -#define _az_JSON_HEDLEY_GCC_HAS_WARNING(warning, major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -/* _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for - HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ -#if defined(_az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) -#undef _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ -#endif -#if defined(__cplusplus) -#if _az_JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") -#if _az_JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ - _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ - xpr _az_JSON_HEDLEY_DIAGNOSTIC_POP -#else -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ - xpr _az_JSON_HEDLEY_DIAGNOSTIC_POP -#endif -#endif -#endif -#if !defined(_az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x -#endif - -#if defined(_az_JSON_HEDLEY_CONST_CAST) -#undef _az_JSON_HEDLEY_CONST_CAST -#endif -#if defined(__cplusplus) -#define _az_JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) -#elif _az_JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 6, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_CONST_CAST(T, expr) \ - (__extension__({ \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL((T)(expr)); \ - _az_JSON_HEDLEY_DIAGNOSTIC_POP \ - })) -#else -#define _az_JSON_HEDLEY_CONST_CAST(T, expr) ((T)(expr)) -#endif - -#if defined(_az_JSON_HEDLEY_REINTERPRET_CAST) -#undef _az_JSON_HEDLEY_REINTERPRET_CAST -#endif -#if defined(__cplusplus) -#define _az_JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) -#else -#define _az_JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T)(expr)) -#endif - -#if defined(_az_JSON_HEDLEY_STATIC_CAST) -#undef _az_JSON_HEDLEY_STATIC_CAST -#endif -#if defined(__cplusplus) -#define _az_JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) -#else -#define _az_JSON_HEDLEY_STATIC_CAST(T, expr) ((T)(expr)) -#endif - -#if defined(_az_JSON_HEDLEY_CPP_CAST) -#undef _az_JSON_HEDLEY_CPP_CAST -#endif -#if defined(__cplusplus) -#if _az_JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") -#define _az_JSON_HEDLEY_CPP_CAST(T, expr) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic ignored \"-Wold-style-cast\"")( \ - (T)(expr)) _az_JSON_HEDLEY_DIAGNOSTIC_POP -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 3, 0) -#define _az_JSON_HEDLEY_CPP_CAST(T, expr) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_suppress=Pe137") \ - _az_JSON_HEDLEY_DIAGNOSTIC_POP #else -#define _az_JSON_HEDLEY_CPP_CAST(T, expr) ((T)(expr)) -#endif -#else -#define _az_JSON_HEDLEY_CPP_CAST(T, expr) (expr) -#endif - -#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || defined(__clang__) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 0, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) || _az_JSON_HEDLEY_PGI_VERSION_CHECK(18, 4, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 7, 0) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(2, 0, 1) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 0, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) \ - || _az_JSON_HEDLEY_CRAY_VERSION_CHECK(5, 0, 0) \ - || _az_JSON_HEDLEY_TINYC_VERSION_CHECK(0, 9, 17) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(8, 0, 0) \ - || (_az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) && defined(__C99_PRAGMA_OPERATOR)) -#define _az_JSON_HEDLEY_PRAGMA(value) _Pragma(#value) -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(15, 0, 0) -#define _az_JSON_HEDLEY_PRAGMA(value) __pragma(value) -#else -#define _az_JSON_HEDLEY_PRAGMA(value) -#endif - -#if defined(_az_JSON_HEDLEY_DIAGNOSTIC_PUSH) -#undef _az_JSON_HEDLEY_DIAGNOSTIC_PUSH -#endif -#if defined(_az_JSON_HEDLEY_DIAGNOSTIC_POP) -#undef _az_JSON_HEDLEY_DIAGNOSTIC_POP -#endif -#if defined(__clang__) -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") -#elif _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 6, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(15, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) -#elif _az_JSON_HEDLEY_ARM_VERSION_CHECK(5, 6, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") -#elif _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 4, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") -#elif _az_JSON_HEDLEY_PELLES_VERSION_CHECK(2, 90, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") -#else -#define _az_JSON_HEDLEY_DIAGNOSTIC_PUSH -#define _az_JSON_HEDLEY_DIAGNOSTIC_POP -#endif - -#if defined(_az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) -#undef _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED -#endif -#if _az_JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED \ - _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") -#elif _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") -#elif _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 3, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(15, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable : 4996)) -#elif _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 13, 0) && !defined(__cplusplus) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED \ - _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 13, 0) && defined(__cplusplus) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED \ - _Pragma("error_messages(off,symdeprecated,symdeprecated2)") -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") -#elif _az_JSON_HEDLEY_PELLES_VERSION_CHECK(2, 90, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") -#else -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED -#endif - -#if defined(_az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) -#undef _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS -#endif -#if _az_JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ - _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") -#elif _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") -#elif _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 3, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ - _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(15, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable : 4068)) -#elif _az_JSON_HEDLEY_TI_VERSION_CHECK(16, 9, 0) || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8, 0, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 3, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") -#elif _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") -#else -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS -#endif - -#if defined(_az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) -#undef _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES -#endif -#if _az_JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES \ - _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 6, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -#elif _az_JSON_HEDLEY_INTEL_VERSION_CHECK(17, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(19, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable : 5030)) -#elif _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 14, 0) && defined(__cplusplus) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES \ - _Pragma("error_messages(off,attrskipunsup)") -#elif _az_JSON_HEDLEY_TI_VERSION_CHECK(18, 1, 0) || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8, 3, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") -#else -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES -#endif - -#if defined(_az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) -#undef _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL -#endif -#if _az_JSON_HEDLEY_HAS_WARNING("-Wcast-qual") -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ - _Pragma("clang diagnostic ignored \"-Wcast-qual\"") -#elif _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 0, 0) -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ - _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") -#else -#define _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL -#endif - -#if defined(_az_JSON_HEDLEY_DEPRECATED) -#undef _az_JSON_HEDLEY_DEPRECATED -#endif -#if defined(_az_JSON_HEDLEY_DEPRECATED_FOR) -#undef _az_JSON_HEDLEY_DEPRECATED_FOR -#endif -#if _az_JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0) -#define _az_JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " #since)) -#define _az_JSON_HEDLEY_DEPRECATED_FOR(since, replacement) \ - __declspec(deprecated("Since " #since "; use " #replacement)) -#elif defined(__cplusplus) && (__cplusplus >= 201402L) -#define _az_JSON_HEDLEY_DEPRECATED(since) \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) -#define _az_JSON_HEDLEY_DEPRECATED_FOR(since, replacement) \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_( \ - [[deprecated("Since " #since "; use " #replacement)]]) -#elif _az_JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 5, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(5, 6, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 13, 0) \ - || _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) || _az_JSON_HEDLEY_TI_VERSION_CHECK(18, 1, 0) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8, 3, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 3, 0) -#define _az_JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) -#define _az_JSON_HEDLEY_DEPRECATED_FOR(since, replacement) \ - __attribute__((__deprecated__("Since " #since "; use " #replacement))) -#elif _az_JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 1, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) -#define _az_JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(13, 10, 0) \ - || _az_JSON_HEDLEY_PELLES_VERSION_CHECK(6, 50, 0) -#define _az_JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) -#define _az_JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") -#define _az_JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") -#else -#define _az_JSON_HEDLEY_DEPRECATED(since) -#define _az_JSON_HEDLEY_DEPRECATED_FOR(since, replacement) -#endif - -#if defined(_az_JSON_HEDLEY_UNAVAILABLE) -#undef _az_JSON_HEDLEY_UNAVAILABLE -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(warning) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 3, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_UNAVAILABLE(available_since) \ - __attribute__((__warning__("Not available until " #available_since))) -#else -#define _az_JSON_HEDLEY_UNAVAILABLE(available_since) -#endif - -#if defined(_az_JSON_HEDLEY_WARN_UNUSED_RESULT) -#undef _az_JSON_HEDLEY_WARN_UNUSED_RESULT -#endif -#if defined(_az_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) -#undef _az_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG -#endif -#if (_az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) -#elif _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) -#elif _az_JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 4, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) \ - || (_az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 15, 0) && defined(__cplusplus)) \ - || _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) -#elif defined(_Check_return_) /* SAL */ -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ -#else -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT -#define _az_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) -#endif - -#if defined(_az_JSON_HEDLEY_SENTINEL) -#undef _az_JSON_HEDLEY_SENTINEL -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 0, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(5, 4, 0) -#define _az_JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) -#else -#define _az_JSON_HEDLEY_SENTINEL(position) -#endif - -#if defined(_az_JSON_HEDLEY_NO_RETURN) -#undef _az_JSON_HEDLEY_NO_RETURN -#endif -#if _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_NO_RETURN __noreturn -#elif _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) -#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#define _az_JSON_HEDLEY_NO_RETURN _Noreturn -#elif defined(__cplusplus) && (__cplusplus >= 201103L) -#define _az_JSON_HEDLEY_NO_RETURN \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) -#elif _az_JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 2, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 11, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 10, 0) -#define _az_JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(13, 10, 0) -#define _az_JSON_HEDLEY_NO_RETURN __declspec(noreturn) -#elif _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6, 0, 0) && defined(__cplusplus) -#define _az_JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") -#elif _az_JSON_HEDLEY_COMPCERT_VERSION_CHECK(3, 2, 0) -#define _az_JSON_HEDLEY_NO_RETURN __attribute((noreturn)) -#elif _az_JSON_HEDLEY_PELLES_VERSION_CHECK(9, 0, 0) -#define _az_JSON_HEDLEY_NO_RETURN __declspec(noreturn) -#else -#define _az_JSON_HEDLEY_NO_RETURN -#endif - -#if defined(_az_JSON_HEDLEY_NO_ESCAPE) -#undef _az_JSON_HEDLEY_NO_ESCAPE -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(noescape) -#define _az_JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) -#else -#define _az_JSON_HEDLEY_NO_ESCAPE -#endif - -#if defined(_az_JSON_HEDLEY_UNREACHABLE) -#undef _az_JSON_HEDLEY_UNREACHABLE -#endif -#if defined(_az_JSON_HEDLEY_UNREACHABLE_RETURN) -#undef _az_JSON_HEDLEY_UNREACHABLE_RETURN -#endif -#if defined(_az_JSON_HEDLEY_ASSUME) -#undef _az_JSON_HEDLEY_ASSUME -#endif -#if _az_JSON_HEDLEY_MSVC_VERSION_CHECK(13, 10, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_ASSUME(expr) __assume(expr) -#elif _az_JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) -#define _az_JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) -#elif _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 2, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4, 0, 0) -#if defined(__cplusplus) -#define _az_JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) -#else -#define _az_JSON_HEDLEY_ASSUME(expr) _nassert(expr) -#endif -#endif -#if ( \ - _az_JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(_az_JSON_HEDLEY_ARM_VERSION))) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 5, 0) || _az_JSON_HEDLEY_PGI_VERSION_CHECK(18, 10, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_IBM_VERSION_CHECK(13, 1, 5) -#define _az_JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() -#elif defined(_az_JSON_HEDLEY_ASSUME) -#define _az_JSON_HEDLEY_UNREACHABLE() _az_JSON_HEDLEY_ASSUME(0) -#endif -#if !defined(_az_JSON_HEDLEY_ASSUME) -#if defined(_az_JSON_HEDLEY_UNREACHABLE) -#define _az_JSON_HEDLEY_ASSUME(expr) \ - _az_JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (_az_JSON_HEDLEY_UNREACHABLE(), 1))) -#else -#define _az_JSON_HEDLEY_ASSUME(expr) _az_JSON_HEDLEY_STATIC_CAST(void, expr) -#endif -#endif -#if defined(_az_JSON_HEDLEY_UNREACHABLE) -#if _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 2, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4, 0, 0) -#define _az_JSON_HEDLEY_UNREACHABLE_RETURN(value) \ - return (_az_JSON_HEDLEY_STATIC_CAST(void, _az_JSON_HEDLEY_ASSUME(0)), (value)) -#else -#define _az_JSON_HEDLEY_UNREACHABLE_RETURN(value) _az_JSON_HEDLEY_UNREACHABLE() -#endif -#else -#define _az_JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) -#endif -#if !defined(_az_JSON_HEDLEY_UNREACHABLE) -#define _az_JSON_HEDLEY_UNREACHABLE() _az_JSON_HEDLEY_ASSUME(0) -#endif - -_az_JSON_HEDLEY_DIAGNOSTIC_PUSH -#if _az_JSON_HEDLEY_HAS_WARNING("-Wpedantic") -#pragma clang diagnostic ignored "-Wpedantic" -#endif -#if _az_JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) -#pragma clang diagnostic ignored "-Wc++98-compat-pedantic" -#endif -#if _az_JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros", 4, 0, 0) -#if defined(__clang__) -#pragma clang diagnostic ignored "-Wvariadic-macros" -#elif defined(_az_JSON_HEDLEY_GCC_VERSION) -#pragma GCC diagnostic ignored "-Wvariadic-macros" -#endif -#endif -#if defined(_az_JSON_HEDLEY_NON_NULL) -#undef _az_JSON_HEDLEY_NON_NULL -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 3, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) -#define _az_JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) -#else -#define _az_JSON_HEDLEY_NON_NULL(...) -#endif - _az_JSON_HEDLEY_DIAGNOSTIC_POP - -#if defined(_az_JSON_HEDLEY_PRINTF_FORMAT) -#undef _az_JSON_HEDLEY_PRINTF_FORMAT -#endif -#if defined(__MINGW32__) && _az_JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format, 4, 4, 0) \ - && !defined(__USE_MINGW_ANSI_STDIO) -#define _az_JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check) \ - __attribute__((__format__(ms_printf, string_idx, first_to_check))) -#elif defined(__MINGW32__) && _az_JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format, 4, 4, 0) \ - && defined(__USE_MINGW_ANSI_STDIO) -#define _az_JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check) \ - __attribute__((__format__(gnu_printf, string_idx, first_to_check))) -#elif _az_JSON_HEDLEY_HAS_ATTRIBUTE(format) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 1, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(5, 6, 0) \ - || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check) \ - __attribute__((__format__(__printf__, string_idx, first_to_check))) -#elif _az_JSON_HEDLEY_PELLES_VERSION_CHECK(6, 0, 0) -#define _az_JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check) \ - __declspec(vaformat(printf, string_idx, first_to_check)) -#else -#define _az_JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check) -#endif - -#if defined(_az_JSON_HEDLEY_CONSTEXPR) -#undef _az_JSON_HEDLEY_CONSTEXPR -#endif -#if defined(__cplusplus) -#if __cplusplus >= 201103L -#define _az_JSON_HEDLEY_CONSTEXPR _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) -#endif -#endif -#if !defined(_az_JSON_HEDLEY_CONSTEXPR) -#define _az_JSON_HEDLEY_CONSTEXPR -#endif - -#if defined(_az_JSON_HEDLEY_PREDICT) -#undef _az_JSON_HEDLEY_PREDICT -#endif -#if defined(_az_JSON_HEDLEY_LIKELY) -#undef _az_JSON_HEDLEY_LIKELY -#endif -#if defined(_az_JSON_HEDLEY_UNLIKELY) -#undef _az_JSON_HEDLEY_UNLIKELY -#endif -#if defined(_az_JSON_HEDLEY_UNPREDICTABLE) -#undef _az_JSON_HEDLEY_UNPREDICTABLE -#endif -#if _az_JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) -#define _az_JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) -#endif -#if _az_JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(9, 0, 0) -#define _az_JSON_HEDLEY_PREDICT(expr, value, probability) \ - __builtin_expect_with_probability((expr), (value), (probability)) -#define _az_JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ - __builtin_expect_with_probability(!!(expr), 1, (probability)) -#define _az_JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ - __builtin_expect_with_probability(!!(expr), 0, (probability)) -#define _az_JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) -#define _az_JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) -#elif _az_JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 0, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || (_az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 15, 0) && defined(__cplusplus)) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 7, 0) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(3, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) \ - || _az_JSON_HEDLEY_TINYC_VERSION_CHECK(0, 9, 27) \ - || _az_JSON_HEDLEY_CRAY_VERSION_CHECK(8, 1, 0) -#define _az_JSON_HEDLEY_PREDICT(expr, expected, probability) \ - (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) \ - : (_az_JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) -#define _az_JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ - (__extension__({ \ - double hedley_probability_ = (probability); \ - ((hedley_probability_ >= 0.9) \ - ? __builtin_expect(!!(expr), 1) \ - : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ - })) -#define _az_JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ - (__extension__({ \ - double hedley_probability_ = (probability); \ - ((hedley_probability_ >= 0.9) \ - ? __builtin_expect(!!(expr), 0) \ - : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ - })) -#define _az_JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) -#define _az_JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) -#else -#define _az_JSON_HEDLEY_PREDICT(expr, expected, probability) \ - (_az_JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) -#define _az_JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) -#define _az_JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) -#define _az_JSON_HEDLEY_LIKELY(expr) (!!(expr)) -#define _az_JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) -#endif -#if !defined(_az_JSON_HEDLEY_UNPREDICTABLE) -#define _az_JSON_HEDLEY_UNPREDICTABLE(expr) _az_JSON_HEDLEY_PREDICT(expr, 1, 0.5) -#endif - -#if defined(_az_JSON_HEDLEY_MALLOC) -#undef _az_JSON_HEDLEY_MALLOC -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 1, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 11, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_IBM_VERSION_CHECK(12, 1, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_MALLOC __attribute__((__malloc__)) -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 10, 0) -#define _az_JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0) -#define _az_JSON_HEDLEY_MALLOC __declspec(restrict) -#else -#define _az_JSON_HEDLEY_MALLOC -#endif - -#if defined(_az_JSON_HEDLEY_PURE) -#undef _az_JSON_HEDLEY_PURE -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(pure) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(2, 96, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 11, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) \ - || _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) -#define _az_JSON_HEDLEY_PURE __attribute__((__pure__)) -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 10, 0) -#define _az_JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") -#elif defined(__cplusplus) \ - && (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(2, 0, 1) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4, 0, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0)) -#define _az_JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") -#else -#define _az_JSON_HEDLEY_PURE -#endif - -#if defined(_az_JSON_HEDLEY_CONST) -#undef _az_JSON_HEDLEY_CONST -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(const) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(2, 5, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 11, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) \ - || _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) -#define _az_JSON_HEDLEY_CONST __attribute__((__const__)) -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 10, 0) -#define _az_JSON_HEDLEY_CONST _Pragma("no_side_effect") -#else -#define _az_JSON_HEDLEY_CONST _az_JSON_HEDLEY_PURE -#endif - -#if defined(_az_JSON_HEDLEY_RESTRICT) -#undef _az_JSON_HEDLEY_RESTRICT -#endif -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) -#define _az_JSON_HEDLEY_RESTRICT restrict -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 1, 0) || _az_JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) \ - || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) || _az_JSON_HEDLEY_PGI_VERSION_CHECK(17, 10, 0) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 2, 4) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || (_az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 14, 0) && defined(__cplusplus)) \ - || _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) || defined(__clang__) -#define _az_JSON_HEDLEY_RESTRICT __restrict -#elif _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 3, 0) && !defined(__cplusplus) -#define _az_JSON_HEDLEY_RESTRICT _Restrict -#else -#define _az_JSON_HEDLEY_RESTRICT -#endif - -#if defined(_az_JSON_HEDLEY_INLINE) -#undef _az_JSON_HEDLEY_INLINE -#endif -#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) \ - || (defined(__cplusplus) && (__cplusplus >= 199711L)) -#define _az_JSON_HEDLEY_INLINE inline -#elif defined(_az_JSON_HEDLEY_GCC_VERSION) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(6, 2, 0) -#define _az_JSON_HEDLEY_INLINE __inline__ -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(12, 0, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(3, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 2, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8, 0, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_INLINE __inline -#else -#define _az_JSON_HEDLEY_INLINE -#endif - -#if defined(_az_JSON_HEDLEY_ALWAYS_INLINE) -#undef _az_JSON_HEDLEY_ALWAYS_INLINE -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 0, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 11, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) _az_JSON_HEDLEY_INLINE -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(12, 0, 0) -#define _az_JSON_HEDLEY_ALWAYS_INLINE __forceinline -#elif defined(__cplusplus) \ - && (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0)) -#define _az_JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") -#else -#define _az_JSON_HEDLEY_ALWAYS_INLINE _az_JSON_HEDLEY_INLINE -#endif - -#if defined(_az_JSON_HEDLEY_NEVER_INLINE) -#undef _az_JSON_HEDLEY_NEVER_INLINE -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 0, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 11, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) || _az_JSON_HEDLEY_IBM_VERSION_CHECK(10, 1, 0) \ - || _az_JSON_HEDLEY_TI_VERSION_CHECK(15, 12, 0) \ - || (_az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4, 8, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5, 2, 0) \ - || (_az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6, 4, 0) \ - || (_az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 0, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(4, 3, 0) \ - || (_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0) \ - || _az_JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) \ - || _az_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2, 1, 0) -#define _az_JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(13, 10, 0) -#define _az_JSON_HEDLEY_NEVER_INLINE __declspec(noinline) -#elif _az_JSON_HEDLEY_PGI_VERSION_CHECK(10, 2, 0) -#define _az_JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") -#elif _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6, 0, 0) && defined(__cplusplus) -#define _az_JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") -#elif _az_JSON_HEDLEY_COMPCERT_VERSION_CHECK(3, 2, 0) -#define _az_JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) -#elif _az_JSON_HEDLEY_PELLES_VERSION_CHECK(9, 0, 0) -#define _az_JSON_HEDLEY_NEVER_INLINE __declspec(noinline) -#else -#define _az_JSON_HEDLEY_NEVER_INLINE -#endif - -#if defined(_az_JSON_HEDLEY_PRIVATE) -#undef _az_JSON_HEDLEY_PRIVATE -#endif -#if defined(_az_JSON_HEDLEY_PUBLIC) -#undef _az_JSON_HEDLEY_PUBLIC -#endif -#if defined(_az_JSON_HEDLEY_IMPORT) -#undef _az_JSON_HEDLEY_IMPORT -#endif -#if defined(_WIN32) || defined(__CYGWIN__) -#define _az_JSON_HEDLEY_PRIVATE -#define _az_JSON_HEDLEY_PUBLIC __declspec(dllexport) -#define _az_JSON_HEDLEY_IMPORT __declspec(dllimport) -#else -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 3, 0) \ - || _az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 11, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) \ - || _az_JSON_HEDLEY_IBM_VERSION_CHECK(13, 1, 0) \ - || (defined(__TI_EABI__) \ - && ((_az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 2, 0) \ - && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7, 5, 0))) -#define _az_JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) -#define _az_JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) -#else -#define _az_JSON_HEDLEY_PRIVATE -#define _az_JSON_HEDLEY_PUBLIC -#endif -#define _az_JSON_HEDLEY_IMPORT extern -#endif - -#if defined(_az_JSON_HEDLEY_NO_THROW) -#undef _az_JSON_HEDLEY_NO_THROW -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 3, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(13, 1, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) -#define _az_JSON_HEDLEY_NO_THROW __declspec(nothrow) -#else -#define _az_JSON_HEDLEY_NO_THROW -#endif - -#if defined(_az_JSON_HEDLEY_FALL_THROUGH) -#undef _az_JSON_HEDLEY_FALL_THROUGH -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(7, 0, 0) -#define _az_JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) -#elif _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang, fallthrough) -#define _az_JSON_HEDLEY_FALL_THROUGH \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) -#elif _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) -#define _az_JSON_HEDLEY_FALL_THROUGH \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) -#elif defined(__fallthrough) /* SAL */ -#define _az_JSON_HEDLEY_FALL_THROUGH __fallthrough -#else -#define _az_JSON_HEDLEY_FALL_THROUGH -#endif - -#if defined(_az_JSON_HEDLEY_RETURNS_NON_NULL) -#undef _az_JSON_HEDLEY_RETURNS_NON_NULL -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 9, 0) -#define _az_JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) -#elif defined(_Ret_notnull_) /* SAL */ -#define _az_JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ -#else -#define _az_JSON_HEDLEY_RETURNS_NON_NULL -#endif - -#if defined(_az_JSON_HEDLEY_ARRAY_PARAM) -#undef _az_JSON_HEDLEY_ARRAY_PARAM -#endif -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__STDC_NO_VLA__) \ - && !defined(__cplusplus) && !defined(_az_JSON_HEDLEY_PGI_VERSION) \ - && !defined(_az_JSON_HEDLEY_TINYC_VERSION) -#define _az_JSON_HEDLEY_ARRAY_PARAM(name) (name) -#else -#define _az_JSON_HEDLEY_ARRAY_PARAM(name) -#endif - -#if defined(_az_JSON_HEDLEY_IS_CONSTANT) -#undef _az_JSON_HEDLEY_IS_CONSTANT -#endif -#if defined(_az_JSON_HEDLEY_REQUIRE_CONSTEXPR) -#undef _az_JSON_HEDLEY_REQUIRE_CONSTEXPR -#endif -/* _az_JSON_HEDLEY_IS_CONSTEXPR_ is for - HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ -#if defined(_az_JSON_HEDLEY_IS_CONSTEXPR_) -#undef _az_JSON_HEDLEY_IS_CONSTEXPR_ -#endif -#if _az_JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 4, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_TINYC_VERSION_CHECK(0, 9, 19) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(4, 1, 0) \ - || _az_JSON_HEDLEY_IBM_VERSION_CHECK(13, 1, 0) \ - || _az_JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6, 1, 0) \ - || (_az_JSON_HEDLEY_SUNPRO_VERSION_CHECK(5, 10, 0) && !defined(__cplusplus)) \ - || _az_JSON_HEDLEY_CRAY_VERSION_CHECK(8, 1, 0) -#define _az_JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) -#endif -#if !defined(__cplusplus) -#if _az_JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(3, 4, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) \ - || _az_JSON_HEDLEY_IBM_VERSION_CHECK(13, 1, 0) || _az_JSON_HEDLEY_CRAY_VERSION_CHECK(8, 1, 0) \ - || _az_JSON_HEDLEY_ARM_VERSION_CHECK(5, 4, 0) || _az_JSON_HEDLEY_TINYC_VERSION_CHECK(0, 9, 24) -#if defined(__INTPTR_TYPE__) -#define _az_JSON_HEDLEY_IS_CONSTEXPR_(expr) \ - __builtin_types_compatible_p( \ - __typeof__((1 ? (void*)((__INTPTR_TYPE__)((expr)*0)) : (int*)0)), int*) -#else -#include -#define _az_JSON_HEDLEY_IS_CONSTEXPR_(expr) \ - __builtin_types_compatible_p(__typeof__((1 ? (void*)((intptr_t)((expr)*0)) : (int*)0)), int*) -#endif -#elif ( \ - defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) \ - && !defined(_az_JSON_HEDLEY_SUNPRO_VERSION) && !defined(_az_JSON_HEDLEY_PGI_VERSION) \ - && !defined(_az_JSON_HEDLEY_IAR_VERSION)) \ - || _az_JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 9, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(17, 0, 0) \ - || _az_JSON_HEDLEY_IBM_VERSION_CHECK(12, 1, 0) || _az_JSON_HEDLEY_ARM_VERSION_CHECK(5, 3, 0) -#if defined(__INTPTR_TYPE__) -#define _az_JSON_HEDLEY_IS_CONSTEXPR_(expr) \ - _Generic((1 ? (void*)((__INTPTR_TYPE__)((expr)*0)) : (int*)0), int* : 1, void* : 0) -#else -#include -#define _az_JSON_HEDLEY_IS_CONSTEXPR_(expr) \ - _Generic((1 ? (void*)((intptr_t)*0) : (int*)0), int* : 1, void* : 0) -#endif -#elif defined(_az_JSON_HEDLEY_GCC_VERSION) || defined(_az_JSON_HEDLEY_INTEL_VERSION) \ - || defined(_az_JSON_HEDLEY_TINYC_VERSION) || defined(_az_JSON_HEDLEY_TI_ARMCL_VERSION) \ - || _az_JSON_HEDLEY_TI_CL430_VERSION_CHECK(18, 12, 0) \ - || defined(_az_JSON_HEDLEY_TI_CL2000_VERSION) || defined(_az_JSON_HEDLEY_TI_CL6X_VERSION) \ - || defined(_az_JSON_HEDLEY_TI_CL7X_VERSION) || defined(_az_JSON_HEDLEY_TI_CLPRU_VERSION) \ - || defined(__clang__) -#define _az_JSON_HEDLEY_IS_CONSTEXPR_(expr) \ - (sizeof(void) != sizeof(*(1 ? ((void*)((expr)*0L)) : ((struct { char v[sizeof(void) * 2]; }*)1)))) -#endif -#endif -#if defined(_az_JSON_HEDLEY_IS_CONSTEXPR_) -#if !defined(_az_JSON_HEDLEY_IS_CONSTANT) -#define _az_JSON_HEDLEY_IS_CONSTANT(expr) _az_JSON_HEDLEY_IS_CONSTEXPR_(expr) -#endif -#define _az_JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) \ - (_az_JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) -#else -#if !defined(_az_JSON_HEDLEY_IS_CONSTANT) -#define _az_JSON_HEDLEY_IS_CONSTANT(expr) (0) -#endif -#define _az_JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) -#endif - -#if defined(_az_JSON_HEDLEY_BEGIN_C_DECLS) -#undef _az_JSON_HEDLEY_BEGIN_C_DECLS -#endif -#if defined(_az_JSON_HEDLEY_END_C_DECLS) -#undef _az_JSON_HEDLEY_END_C_DECLS -#endif -#if defined(_az_JSON_HEDLEY_C_DECL) -#undef _az_JSON_HEDLEY_C_DECL -#endif -#if defined(__cplusplus) -#define _az_JSON_HEDLEY_BEGIN_C_DECLS \ - extern "C" \ - { -#define _az_JSON_HEDLEY_END_C_DECLS } -#define _az_JSON_HEDLEY_C_DECL extern "C" -#else -#define _az_JSON_HEDLEY_BEGIN_C_DECLS -#define _az_JSON_HEDLEY_END_C_DECLS -#define _az_JSON_HEDLEY_C_DECL -#endif - -#if defined(_az_JSON_HEDLEY_STATIC_ASSERT) -#undef _az_JSON_HEDLEY_STATIC_ASSERT -#endif -#if !defined(__cplusplus) \ - && ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) \ - || _az_JSON_HEDLEY_HAS_FEATURE(c_static_assert) \ - || _az_JSON_HEDLEY_GCC_VERSION_CHECK(6, 0, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) || defined(_Static_assert)) -#define _az_JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) -#elif (defined(__cplusplus) && (__cplusplus >= 201103L)) \ - || _az_JSON_HEDLEY_MSVC_VERSION_CHECK(16, 0, 0) -#define _az_JSON_HEDLEY_STATIC_ASSERT(expr, message) \ - _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) -#else -#define _az_JSON_HEDLEY_STATIC_ASSERT(expr, message) -#endif - -#if defined(_az_JSON_HEDLEY_NULL) -#undef _az_JSON_HEDLEY_NULL -#endif -#if defined(__cplusplus) -#if __cplusplus >= 201103L -#define _az_JSON_HEDLEY_NULL _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) -#elif defined(NULL) -#define _az_JSON_HEDLEY_NULL NULL -#else -#define _az_JSON_HEDLEY_NULL _az_JSON_HEDLEY_STATIC_CAST(void*, 0) -#endif -#elif defined(NULL) -#define _az_JSON_HEDLEY_NULL NULL -#else -#define _az_JSON_HEDLEY_NULL ((void*)0) -#endif - -#if defined(_az_JSON_HEDLEY_MESSAGE) -#undef _az_JSON_HEDLEY_MESSAGE -#endif -#if _az_JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") -#define _az_JSON_HEDLEY_MESSAGE(msg) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ - _az_JSON_HEDLEY_PRAGMA(message msg) _az_JSON_HEDLEY_DIAGNOSTIC_POP -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 4, 0) || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_MESSAGE(msg) _az_JSON_HEDLEY_PRAGMA(message msg) -#elif _az_JSON_HEDLEY_CRAY_VERSION_CHECK(5, 0, 0) -#define _az_JSON_HEDLEY_MESSAGE(msg) _az_JSON_HEDLEY_PRAGMA(_CRI message msg) -#elif _az_JSON_HEDLEY_IAR_VERSION_CHECK(8, 0, 0) -#define _az_JSON_HEDLEY_MESSAGE(msg) _az_JSON_HEDLEY_PRAGMA(message(msg)) -#elif _az_JSON_HEDLEY_PELLES_VERSION_CHECK(2, 0, 0) -#define _az_JSON_HEDLEY_MESSAGE(msg) _az_JSON_HEDLEY_PRAGMA(message(msg)) -#else -#define _az_JSON_HEDLEY_MESSAGE(msg) -#endif - -#if defined(_az_JSON_HEDLEY_WARNING) -#undef _az_JSON_HEDLEY_WARNING -#endif -#if _az_JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") -#define _az_JSON_HEDLEY_WARNING(msg) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _az_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ - _az_JSON_HEDLEY_PRAGMA(clang warning msg) _az_JSON_HEDLEY_DIAGNOSTIC_POP -#elif _az_JSON_HEDLEY_GCC_VERSION_CHECK(4, 8, 0) || _az_JSON_HEDLEY_PGI_VERSION_CHECK(18, 4, 0) \ - || _az_JSON_HEDLEY_INTEL_VERSION_CHECK(13, 0, 0) -#define _az_JSON_HEDLEY_WARNING(msg) _az_JSON_HEDLEY_PRAGMA(GCC warning msg) -#elif _az_JSON_HEDLEY_MSVC_VERSION_CHECK(15, 0, 0) -#define _az_JSON_HEDLEY_WARNING(msg) _az_JSON_HEDLEY_PRAGMA(message(msg)) -#else -#define _az_JSON_HEDLEY_WARNING(msg) _az_JSON_HEDLEY_MESSAGE(msg) -#endif - -#if defined(_az_JSON_HEDLEY_REQUIRE) -#undef _az_JSON_HEDLEY_REQUIRE -#endif -#if defined(_az_JSON_HEDLEY_REQUIRE_MSG) -#undef _az_JSON_HEDLEY_REQUIRE_MSG -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) -#if _az_JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") -#define _az_JSON_HEDLEY_REQUIRE(expr) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ - __attribute__((diagnose_if(!(expr), #expr, "error"))) _az_JSON_HEDLEY_DIAGNOSTIC_POP -#define _az_JSON_HEDLEY_REQUIRE_MSG(expr, msg) \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ - __attribute__((diagnose_if(!(expr), msg, "error"))) _az_JSON_HEDLEY_DIAGNOSTIC_POP -#else -#define _az_JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) -#define _az_JSON_HEDLEY_REQUIRE_MSG(expr, msg) __attribute__((diagnose_if(!(expr), msg, "error"))) -#endif -#else -#define _az_JSON_HEDLEY_REQUIRE(expr) -#define _az_JSON_HEDLEY_REQUIRE_MSG(expr, msg) -#endif - -#if defined(_az_JSON_HEDLEY_FLAGS) -#undef _az_JSON_HEDLEY_FLAGS -#endif -#if _az_JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) -#define _az_JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) -#endif - -#if defined(_az_JSON_HEDLEY_FLAGS_CAST) -#undef _az_JSON_HEDLEY_FLAGS_CAST -#endif -#if _az_JSON_HEDLEY_INTEL_VERSION_CHECK(19, 0, 0) -#define _az_JSON_HEDLEY_FLAGS_CAST(T, expr) \ - (__extension__({ \ - _az_JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(disable:188)")((T)(expr)); \ - _az_JSON_HEDLEY_DIAGNOSTIC_POP \ - })) -#else -#define _az_JSON_HEDLEY_FLAGS_CAST(T, expr) _az_JSON_HEDLEY_STATIC_CAST(T, expr) -#endif - -#if defined(_az_JSON_HEDLEY_EMPTY_BASES) -#undef _az_JSON_HEDLEY_EMPTY_BASES -#endif -#if _az_JSON_HEDLEY_MSVC_VERSION_CHECK(19, 0, 23918) \ - && !_az_JSON_HEDLEY_MSVC_VERSION_CHECK(20, 0, 0) -#define _az_JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) -#else -#define _az_JSON_HEDLEY_EMPTY_BASES -#endif - -/* Remaining macros are deprecated. */ - -#if defined(_az_JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) -#undef _az_JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK -#endif -#if defined(__clang__) -#define _az_JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major, minor, patch) (0) -#else -#define _az_JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major, minor, patch) \ - _az_JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch) -#endif - -#if defined(_az_JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) -#undef _az_JSON_HEDLEY_CLANG_HAS_ATTRIBUTE -#endif -#define _az_JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) _az_JSON_HEDLEY_HAS_ATTRIBUTE(attribute) - -#if defined(_az_JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) -#undef _az_JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE -#endif -#define _az_JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) \ - _az_JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) - -#if defined(_az_JSON_HEDLEY_CLANG_HAS_BUILTIN) -#undef _az_JSON_HEDLEY_CLANG_HAS_BUILTIN -#endif -#define _az_JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) _az_JSON_HEDLEY_HAS_BUILTIN(builtin) - -#if defined(_az_JSON_HEDLEY_CLANG_HAS_FEATURE) -#undef _az_JSON_HEDLEY_CLANG_HAS_FEATURE -#endif -#define _az_JSON_HEDLEY_CLANG_HAS_FEATURE(feature) _az_JSON_HEDLEY_HAS_FEATURE(feature) - -#if defined(_az_JSON_HEDLEY_CLANG_HAS_EXTENSION) -#undef _az_JSON_HEDLEY_CLANG_HAS_EXTENSION -#endif -#define _az_JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) _az_JSON_HEDLEY_HAS_EXTENSION(extension) - -#if defined(_az_JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) -#undef _az_JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE -#endif -#define _az_JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) \ - _az_JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) - -#if defined(_az_JSON_HEDLEY_CLANG_HAS_WARNING) -#undef _az_JSON_HEDLEY_CLANG_HAS_WARNING -#endif -#define _az_JSON_HEDLEY_CLANG_HAS_WARNING(warning) _az_JSON_HEDLEY_HAS_WARNING(warning) - -#endif /* !defined(_az_JSON_HEDLEY_VERSION) || (_az_JSON_HEDLEY_VERSION < X) */ - -// This file contains all internal macro definitions -// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them - -// exclude unsupported compilers -#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) -#if defined(__clang__) -#if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 -#error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" -#endif -#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) -#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 -#error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" -#endif -#endif -#endif - -// C++ language standard detection -#if (defined(__cplusplus) && __cplusplus >= 201703L) \ - || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 -#define _az_JSON_HAS_CPP_17 -#define _az_JSON_HAS_CPP_14 -#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) -#define _az_JSON_HAS_CPP_14 -#endif - -// disable float-equal warnings on GCC/clang -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - -// disable documentation warnings on clang -#if defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdocumentation" -#endif - -// allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) \ - && !defined(JSON_NOEXCEPTION) -#define _az_JSON_THROW(exception) throw exception -#define _az_JSON_TRY try -#define _az_JSON_CATCH(exception) catch (exception) -#define _az_JSON_INTERNAL_CATCH(exception) catch (exception) -#else -#include -#define _az_JSON_THROW(exception) std::abort() -#define _az_JSON_TRY if (true) -#define _az_JSON_CATCH(exception) if (false) -#define _az_JSON_INTERNAL_CATCH(exception) if (false) -#endif - -// override exception macros -#if defined(_az_JSON_THROW_USER) -#undef _az_JSON_THROW -#define _az_JSON_THROW _az_JSON_THROW_USER -#endif -#if defined(_az_JSON_TRY_USER) -#undef _az_JSON_TRY -#define _az_JSON_TRY _az_JSON_TRY_USER -#endif -#if defined(_az_JSON_CATCH_USER) -#undef _az_JSON_CATCH -#define _az_JSON_CATCH _az_JSON_CATCH_USER -#undef _az_JSON_INTERNAL_CATCH -#define _az_JSON_INTERNAL_CATCH _az_JSON_CATCH_USER -#endif -#if defined(_az_JSON_INTERNAL_CATCH_USER) -#undef _az_JSON_INTERNAL_CATCH -#define _az_JSON_INTERNAL_CATCH _az_JSON_INTERNAL_CATCH_USER -#endif - -// Ugly macros to avoid uglier copy-paste when specializing basic_json. They -// may be removed in the future once the class is split. - -#define _az_NLOHMANN_BASIC_JSON_TPL_DECLARATION \ - template < \ - template \ - class ObjectType, \ - template \ - class ArrayType, \ - class StringType, \ - class BooleanType, \ - class NumberIntegerType, \ - class NumberUnsignedType, \ - class NumberFloatType, \ - template \ - class AllocatorType, \ - template \ - class JSONSerializer, \ - class BinaryType> - -#define _az_NLOHMANN_BASIC_JSON_TPL \ - basic_json< \ - ObjectType, \ - ArrayType, \ - StringType, \ - BooleanType, \ - NumberIntegerType, \ - NumberUnsignedType, \ - NumberFloatType, \ - AllocatorType, \ - JSONSerializer, \ - BinaryType> - - namespace Azure -{ - namespace Core { namespace Json { namespace _internal { namespace detail { - //////////////// - // exceptions // - //////////////// - - /*! - @brief general exception of the @ref basic_json class - - This class is an extension of `std::exception` objects with a member @a id for - exception ids. It is used as the base class for all exceptions thrown by the - @ref basic_json class. This class can hence be used as "wildcard" to catch - exceptions. - - Subclasses: - - @ref parse_error for exceptions indicating a parse error - - @ref invalid_iterator for exceptions indicating errors with iterators - - @ref type_error for exceptions indicating executing a member function with - a wrong type - - @ref out_of_range for exceptions indicating access out of the defined range - - @ref other_error for exceptions indicating other library errors - - \@internal - @note To have nothrow-copy-constructible exceptions, we internally use - `std::runtime_error` which can cope with arbitrary-length error messages. - Intermediate strings are built with static functions and then passed to - the actual constructor. - \@endinternal - - \@liveexample{The following code shows how arbitrary library exceptions can be - caught.,exception} - - @since version 3.0.0 - */ - class exception : public std::exception { - public: - /// returns the explanatory string - const char* what() const noexcept override { return m.what(); } - - /// the id of the exception - const int id; - - protected: - _az_JSON_HEDLEY_NON_NULL(3) exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} - - static std::string name(const std::string& ename, int id_) - { - return "[json.exception." + ename + "." + std::to_string(id_) + "] "; - } - - private: - /// an exception object as storage for error messages - std::runtime_error m; - }; - - /*! - @brief exception indicating a parse error - - This exception is thrown by the library when a parse error occurs. Parse errors - can occur during the deserialization of JSON text, CBOR, MessagePack, as well - as when using JSON Patch. - - Member @a byte holds the byte index of the last read character in the input - file. - - Exceptions have ids 1xx. - - name / id | example message | description - ------------------------------ | --------------- | ------------------------- - json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string - literal | This error indicates a syntax error while deserializing a JSON text. The error message - describes that an unexpected token (character) was encountered, and the member @a byte indicates - the error position. json.exception.parse_error.102 | parse error at 14: missing or wrong low - surrogate | JSON uses the `\\uxxxx` format to describe Unicode characters. Code points above - above 0xFFFF are split into two `\\uxxxx` entries ("surrogate pairs"). This error indicates that - the surrogate pair is incomplete or contains an invalid code point. - json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode - supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. - json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC - 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document - that represents an array of objects. json.exception.parse_error.105 | parse error: operation - must have string member 'op' | An operation of a JSON Patch document must contain exactly one - "op" member, whose value indicates the operation to perform. Its value must be one of "add", - "remove", "replace", "move", "copy", or "test"; other values are errors. - json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An - array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or - any number without a leading `0`. json.exception.parse_error.107 | parse error: JSON pointer - must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string - containing a sequence of zero or more reference tokens, each prefixed by a `/` character. - json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or - '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. - json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer - array index must be a number. json.exception.parse_error.110 | parse error at 1: cannot read 2 - bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete - value has been read. json.exception.parse_error.112 | parse error at 1: error reading CBOR; last - byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an - unsupported byte was read. json.exception.parse_error.113 | parse error at 2: expected a CBOR - string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. - json.exception.parse_error.114 | parse error: Unsupported BSON record type 0x0F | The parsing of - the corresponding BSON record type is not implemented (yet). - - @note For an input with n bytes, 1 is the index of the first character and n+1 - is the index of the terminating null byte or the end of file. This also - holds true when reading a byte vector (CBOR or MessagePack). - - \@liveexample{The following code shows how a `parse_error` exception can be - caught.,parse_error} - - @sa - @ref exception for the base class of the library exceptions - @sa - @ref invalid_iterator for exceptions indicating errors with iterators - @sa - @ref type_error for exceptions indicating executing a member function with - a wrong type - @sa - @ref out_of_range for exceptions indicating access out of the defined range - @sa - @ref other_error for exceptions indicating other library errors - - @since version 3.0.0 - */ - class parse_error : public exception { - public: - /*! - @brief create a parse error exception - @param[in] id_ the id of the exception - @param[in] pos the position where the error occurred (or with - chars_read_total=0 if the position cannot be - determined) - @param[in] what_arg the explanatory string - @return parse_error object - */ - static parse_error create(int id_, const position_t& pos, const std::string& what_arg) - { - std::string w = exception::name("parse_error", id_) + "parse error" + position_string(pos) - + ": " + what_arg; - return parse_error(id_, pos.chars_read_total, w.c_str()); - } - - static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) - { - std::string w = exception::name("parse_error", id_) + "parse error" - + (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") + ": " + what_arg; - return parse_error(id_, byte_, w.c_str()); - } - - /*! - @brief byte index of the parse error - - The byte index of the last read character in the input file. - - @note For an input with n bytes, 1 is the index of the first character and - n+1 is the index of the terminating null byte or the end of file. - This also holds true when reading a byte vector (CBOR or MessagePack). - */ - const std::size_t byte; - - private: - parse_error(int id_, std::size_t byte_, const char* what_arg) - : exception(id_, what_arg), byte(byte_) - { - } - - static std::string position_string(const position_t& pos) - { - return " at line " + std::to_string(pos.lines_read + 1) + ", column " - + std::to_string(pos.chars_read_current_line); - } - }; - - /*! - @brief exception indicating errors with iterators - - This exception is thrown if iterators passed to a library function do not match - the expected semantics. - - Exceptions have ids 2xx. - - name / id | example message | description - ----------------------------------- | --------------- | ------------------------- - json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to - constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not - belong to the same container. Therefore, the range (@a first, @a last) is invalid. - json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or - insert function, the passed iterator @a pos does not belong to the JSON value for which the - function was called. It hence does not define a valid position for the deletion/insertion. - json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator - passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON - value from which values shall be erased. It hence does not define a valid range to delete values - from. json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for - a primitive type (number, boolean, or string) is passed to a constructor or an erase function, - this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single - stored value is expressed. All other ranges are invalid. json.exception.invalid_iterator.205 | - iterator out of range | When an iterator for a primitive type (number, boolean, or string) is - passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the - only way to address the stored value. All other iterators are invalid. - json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators - passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value - and hence to not define a valid range. json.exception.invalid_iterator.207 | cannot use key() - for non-object iterators | The key() member function can only be used on iterators belonging to - a JSON object, because other types do not have a concept of a key. - json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The - operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, - because JSON objects are unordered. json.exception.invalid_iterator.209 | cannot use offsets - with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators - belonging to a JSON object, because JSON objects are unordered. - json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the - insert function are not compatible, meaning they do not belong to the same container. Therefore, - the range (@a first, @a last) is invalid. json.exception.invalid_iterator.211 | passed iterators - may not belong to container | The iterator range passed to the insert function must not be a - subrange of the container to insert to. json.exception.invalid_iterator.212 | cannot compare - iterators of different containers | When two iterators are compared, they must belong to the - same container. json.exception.invalid_iterator.213 | cannot compare order of object iterators | - The order of object iterators cannot be compared, because JSON objects are unordered. - json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either - the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, - or string), but the iterator is different to @ref begin(). - - \@liveexample{The following code shows how an `invalid_iterator` exception can be - caught.,invalid_iterator} - - @sa - @ref exception for the base class of the library exceptions - @sa - @ref parse_error for exceptions indicating a parse error - @sa - @ref type_error for exceptions indicating executing a member function with - a wrong type - @sa - @ref out_of_range for exceptions indicating access out of the defined range - @sa - @ref other_error for exceptions indicating other library errors - - @since version 3.0.0 - */ - class invalid_iterator : public exception { - public: - static invalid_iterator create(int id_, const std::string& what_arg) - { - std::string w = exception::name("invalid_iterator", id_) + what_arg; - return invalid_iterator(id_, w.c_str()); - } - - private: - _az_JSON_HEDLEY_NON_NULL(3) invalid_iterator(int id_, const char* what_arg) - : exception(id_, what_arg) - { - } - }; - - /*! - @brief exception indicating executing a member function with a wrong type - - This exception is thrown in case of a type error; that is, a library function is - executed on a JSON value whose type does not match the expected semantics. - - Exceptions have ids 3xx. - - name / id | example message | description - ----------------------------- | --------------- | ------------------------- - json.exception.type_error.301 | cannot create object from initializer list | To create an object - from an initializer list, the initializer list must consist only of a list of pairs whose first - element is a string. When this constraint is violated, an array is created instead. - json.exception.type_error.302 | type must be object, but is array | During implicit or explicit - value conversion, the JSON type must be compatible to the target type. For instance, a JSON - string can only be converted into string types, but not into numbers or boolean types. - json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | - To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the - type of the reference must match the value type. For instance, for a JSON array, the @a - ReferenceType must be @ref array_t &. json.exception.type_error.304 | cannot use at() with - string | The @ref at() member functions can only be executed for certain JSON types. - json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member - functions can only be executed for certain JSON types. json.exception.type_error.306 | cannot - use value() with string | The @ref value() member functions can only be executed for certain - JSON types. json.exception.type_error.307 | cannot use erase() with string | The @ref erase() - member functions can only be executed for certain JSON types. json.exception.type_error.308 | - cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions - can only be executed for certain JSON types. json.exception.type_error.309 | cannot use insert() - with | The - @ref insert() member functions can only be executed for certain JSON types. - json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions - can only be executed for certain JSON types. json.exception.type_error.311 | cannot use - emplace_back() with string | The @ref emplace_back() member function can only be executed for - certain JSON types. json.exception.type_error.312 | cannot use update() with string | The @ref - update() member functions can only be executed for certain JSON types. - json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function - converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The - JSON Pointers must not overlap, because then the resulting value would not be well defined. - json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function - only works for an object whose keys are JSON Pointers. json.exception.type_error.315 | values in - object must be primitive | The @ref unflatten function only works for an object whose keys are - JSON Pointers and whose values are primitive. json.exception.type_error.316 | invalid UTF-8 byte - at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if - you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | - json.exception.type_error.317 | JSON value cannot be serialized to requested format | The - dynamic type of the object cannot be represented in the requested serialization format (e.g. a - raw `true` or `null` JSON object cannot be serialized to BSON) | - - \@liveexample{The following code shows how a `type_error` exception can be - caught.,type_error} - - @sa - @ref exception for the base class of the library exceptions - @sa - @ref parse_error for exceptions indicating a parse error - @sa - @ref invalid_iterator for exceptions indicating errors with iterators - @sa - @ref out_of_range for exceptions indicating access out of the defined range - @sa - @ref other_error for exceptions indicating other library errors - - @since version 3.0.0 - */ - class type_error : public exception { - public: - static type_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("type_error", id_) + what_arg; - return type_error(id_, w.c_str()); - } - - private: - _az_JSON_HEDLEY_NON_NULL(3) type_error(int id_, const char* what_arg) - : exception(id_, what_arg) - { - } - }; - - /*! - @brief exception indicating access out of the defined range - - This exception is thrown in case a library function is called on an input - parameter that exceeds the expected range, for instance in case of array - indices or nonexisting object keys. - - Exceptions have ids 4xx. - - name / id | example message | description - ------------------------------- | --------------- | ------------------------- - json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i - is larger than @a size-1. json.exception.out_of_range.402 | array index '-' (3) is out of range - | The special array index `-` in a JSON Pointer never describes a valid element of the array, - but the index past the end. That is, it can only be used to add elements at this position, but - not to read it. json.exception.out_of_range.403 | key 'foo' not found | The provided key was not - found in the JSON object. json.exception.out_of_range.404 | unresolved reference token 'foo' | A - reference token in a JSON Pointer could not be resolved. json.exception.out_of_range.405 | JSON - pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the - root element of the JSON value. json.exception.out_of_range.406 | number overflow parsing - '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. - json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and - BSON only support integer numbers up to 9223372036854775807. | json.exception.out_of_range.408 | - excessive array size: 8658170730974374167 | The size (following `#`) of an UBJSON array or - object exceeds the maximal capacity. | json.exception.out_of_range.409 | BSON key cannot contain - code point U+0000 (at byte 2) | Key identifiers to be serialized to BSON cannot contain code - point U+0000, since the key is stored as zero-terminated c-string | - - \@liveexample{The following code shows how an `out_of_range` exception can be - caught.,out_of_range} - - @sa - @ref exception for the base class of the library exceptions - @sa - @ref parse_error for exceptions indicating a parse error - @sa - @ref invalid_iterator for exceptions indicating errors with iterators - @sa - @ref type_error for exceptions indicating executing a member function with - a wrong type - @sa - @ref other_error for exceptions indicating other library errors - - @since version 3.0.0 - */ - class out_of_range : public exception { - public: - static out_of_range create(int id_, const std::string& what_arg) - { - std::string w = exception::name("out_of_range", id_) + what_arg; - return out_of_range(id_, w.c_str()); - } - - private: - _az_JSON_HEDLEY_NON_NULL(3) out_of_range(int id_, const char* what_arg) - : exception(id_, what_arg) - { - } - }; - - /*! - @brief exception indicating other library errors - - This exception is thrown in case of errors that cannot be classified with the - other exception types. - - Exceptions have ids 5xx. - - name / id | example message | description - ------------------------------ | --------------- | ------------------------- - json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A - JSON Patch operation 'test' failed. The unsuccessful operation is also printed. - - @sa - @ref exception for the base class of the library exceptions - @sa - @ref parse_error for exceptions indicating a parse error - @sa - @ref invalid_iterator for exceptions indicating errors with iterators - @sa - @ref type_error for exceptions indicating executing a member function with - a wrong type - @sa - @ref out_of_range for exceptions indicating access out of the defined range - - \@liveexample{The following code shows how an `other_error` exception can be - caught.,other_error} - - @since version 3.0.0 - */ - class other_error : public exception { - public: - static other_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("other_error", id_) + what_arg; - return other_error(id_, w.c_str()); - } - - private: - _az_JSON_HEDLEY_NON_NULL(3) other_error(int id_, const char* what_arg) - : exception(id_, what_arg) - { - } - }; - }}}} // namespace Core::Json::_internal::detail -} // namespace Azure - -// #include - -// #include - -#include // size_t -#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type - -// #include - -namespace Azure { namespace Core { namespace Json { namespace _internal { namespace detail { - // alias templates to reduce boilerplate - template using enable_if_t = typename std::enable_if::type; - - template - using uncvref_t = typename std::remove_cv::type>::type; - - // implementation of C++14 index_sequence and affiliates - // source: https://stackoverflow.com/a/32223343 - template struct index_sequence - { - using type = index_sequence; - using value_type = std::size_t; - static constexpr std::size_t size() noexcept { return sizeof...(Ints); } - }; - - template struct merge_and_renumber; - - template - struct merge_and_renumber, index_sequence> - : index_sequence - { - }; - - template - struct make_index_sequence : merge_and_renumber< - typename make_index_sequence::type, - typename make_index_sequence::type> - { - }; - - template <> struct make_index_sequence<0> : index_sequence<> - { - }; - template <> struct make_index_sequence<1> : index_sequence<0> - { - }; - - template using index_sequence_for = make_index_sequence; - - // dispatch utility (taken from ranges-v3) - template struct priority_tag : priority_tag - { - }; - template <> struct priority_tag<0> - { - }; - - // taken from ranges-v3 - template struct static_const - { - static constexpr T value{}; - }; - - template constexpr T static_const::value; -}}}}} // namespace Azure::Core::Json::_internal::detail - -// #include - -#include // numeric_limits -#include // false_type, is_constructible, is_integral, is_same, true_type -#include // declval - -// #include - -// #include - -#include // random_access_iterator_tag +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#include // #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +// #include namespace Azure { namespace Core { namespace Json { namespace _internal { namespace detail { + template struct make_void { using type = void; }; template using void_t = typename make_void::type; + }}}}} // namespace Azure::Core::Json::_internal::detail -// #include - namespace Azure { namespace Core { namespace Json { namespace _internal { namespace detail { - template struct iterator_types - { - }; - template - struct iterator_types< - It, - void_t< - typename It::difference_type, - typename It::value_type, - typename It::pointer, - typename It::reference, - typename It::iterator_category>> - { - using difference_type = typename It::difference_type; - using value_type = typename It::value_type; - using pointer = typename It::pointer; - using reference = typename It::reference; - using iterator_category = typename It::iterator_category; - }; - - // This is required as some compilers implement std::iterator_traits in a way that - // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. - template struct iterator_traits - { - }; - - template - struct iterator_traits::value>> : iterator_types - { - }; - - template struct iterator_traits::value>> - { - using iterator_category = std::random_access_iterator_tag; - using value_type = T; - using difference_type = ptrdiff_t; - using pointer = T*; - using reference = T&; - }; -}}}}} // namespace Azure::Core::Json::_internal::detail - -// #include - -// #include - -// #include - -#include - -// #include - -// https://en.cppreference.com/w/cpp/experimental/is_detected -namespace Azure { namespace Core { namespace Json { namespace _internal { namespace detail { + // https://en.cppreference.com/w/cpp/experimental/is_detected struct nonesuch { nonesuch() = delete; @@ -2723,6 +213,11 @@ namespace Azure { namespace Core { namespace Json { namespace _internal { namesp template