• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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