1 // __ _____ _____ _____ 2 // __| | __| | | | JSON for Modern C++ 3 // | | |__ | | | | | | version 3.11.2 4 // |_____|_____|_____|_|___| https://github.com/nlohmann/json 5 // 6 // SPDX-FileCopyrightText: 2013-2022 Niels Lohmann <https://nlohmann.me> 7 // SPDX-License-Identifier: MIT 8 9 #pragma once 10 11 // This file contains all macro definitions affecting or depending on the ABI 12 13 #ifndef JSON_SKIP_LIBRARY_VERSION_CHECK 14 #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) 15 #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 2 16 #warning "Already included a different version of the library!" 17 #endif 18 #endif 19 #endif 20 21 #define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) 22 #define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) 23 #define NLOHMANN_JSON_VERSION_PATCH 2 // NOLINT(modernize-macro-to-enum) 24 25 #ifndef JSON_DIAGNOSTICS 26 #define JSON_DIAGNOSTICS 0 27 #endif 28 29 #ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 30 #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 31 #endif 32 33 #if JSON_DIAGNOSTICS 34 #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag 35 #else 36 #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS 37 #endif 38 39 #if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 40 #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp 41 #else 42 #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON 43 #endif 44 45 #ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION 46 #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 47 #endif 48 49 // Construct the namespace ABI tags component 50 #define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b 51 #define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ 52 NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) 53 54 #define NLOHMANN_JSON_ABI_TAGS \ 55 NLOHMANN_JSON_ABI_TAGS_CONCAT( \ 56 NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ 57 NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) 58 59 // Construct the namespace version component 60 #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ 61 _v ## major ## _ ## minor ## _ ## patch 62 #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ 63 NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) 64 65 #if NLOHMANN_JSON_NAMESPACE_NO_VERSION 66 #define NLOHMANN_JSON_NAMESPACE_VERSION 67 #else 68 #define NLOHMANN_JSON_NAMESPACE_VERSION \ 69 NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ 70 NLOHMANN_JSON_VERSION_MINOR, \ 71 NLOHMANN_JSON_VERSION_PATCH) 72 #endif 73 74 // Combine namespace components 75 #define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b 76 #define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ 77 NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) 78 79 #ifndef NLOHMANN_JSON_NAMESPACE 80 #define NLOHMANN_JSON_NAMESPACE \ 81 nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ 82 NLOHMANN_JSON_ABI_TAGS, \ 83 NLOHMANN_JSON_NAMESPACE_VERSION) 84 #endif 85 86 #ifndef NLOHMANN_JSON_NAMESPACE_BEGIN 87 #define NLOHMANN_JSON_NAMESPACE_BEGIN \ 88 namespace nlohmann \ 89 { \ 90 inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ 91 NLOHMANN_JSON_ABI_TAGS, \ 92 NLOHMANN_JSON_NAMESPACE_VERSION) \ 93 { 94 #endif 95 96 #ifndef NLOHMANN_JSON_NAMESPACE_END 97 #define NLOHMANN_JSON_NAMESPACE_END \ 98 } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ 99 } // namespace nlohmann 100 #endif 101