175
|
1 // __ _____ _____ _____
|
|
2 // __| | __| | | | JSON for Modern C++
|
|
3 // | | |__ | | | | | | version 3.11.3
|
|
4 // |_____|_____|_____|_|___| https://github.com/nlohmann/json
|
|
5 //
|
|
6 // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me>
|
|
7 // SPDX-License-Identifier: MIT
|
|
8
|
|
9 #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
|
|
10 #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
|
|
11
|
|
12 #include <cstdint> // int64_t, uint64_t
|
|
13 #include <map> // map
|
|
14 #include <memory> // allocator
|
|
15 #include <string> // string
|
|
16 #include <vector> // vector
|
|
17
|
|
18 // #include <nlohmann/detail/abi_macros.hpp>
|
|
19 // __ _____ _____ _____
|
|
20 // __| | __| | | | JSON for Modern C++
|
|
21 // | | |__ | | | | | | version 3.11.3
|
|
22 // |_____|_____|_____|_|___| https://github.com/nlohmann/json
|
|
23 //
|
|
24 // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me>
|
|
25 // SPDX-License-Identifier: MIT
|
|
26
|
|
27
|
|
28
|
|
29 // This file contains all macro definitions affecting or depending on the ABI
|
|
30
|
|
31 #ifndef JSON_SKIP_LIBRARY_VERSION_CHECK
|
|
32 #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH)
|
|
33 #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3
|
|
34 #warning "Already included a different version of the library!"
|
|
35 #endif
|
|
36 #endif
|
|
37 #endif
|
|
38
|
|
39 #define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum)
|
|
40 #define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum)
|
|
41 #define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum)
|
|
42
|
|
43 #ifndef JSON_DIAGNOSTICS
|
|
44 #define JSON_DIAGNOSTICS 0
|
|
45 #endif
|
|
46
|
|
47 #ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
|
48 #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0
|
|
49 #endif
|
|
50
|
|
51 #if JSON_DIAGNOSTICS
|
|
52 #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag
|
|
53 #else
|
|
54 #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS
|
|
55 #endif
|
|
56
|
|
57 #if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
|
58 #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp
|
|
59 #else
|
|
60 #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON
|
|
61 #endif
|
|
62
|
|
63 #ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION
|
|
64 #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0
|
|
65 #endif
|
|
66
|
|
67 // Construct the namespace ABI tags component
|
|
68 #define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b
|
|
69 #define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \
|
|
70 NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b)
|
|
71
|
|
72 #define NLOHMANN_JSON_ABI_TAGS \
|
|
73 NLOHMANN_JSON_ABI_TAGS_CONCAT( \
|
|
74 NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \
|
|
75 NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON)
|
|
76
|
|
77 // Construct the namespace version component
|
|
78 #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \
|
|
79 _v ## major ## _ ## minor ## _ ## patch
|
|
80 #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \
|
|
81 NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch)
|
|
82
|
|
83 #if NLOHMANN_JSON_NAMESPACE_NO_VERSION
|
|
84 #define NLOHMANN_JSON_NAMESPACE_VERSION
|
|
85 #else
|
|
86 #define NLOHMANN_JSON_NAMESPACE_VERSION \
|
|
87 NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \
|
|
88 NLOHMANN_JSON_VERSION_MINOR, \
|
|
89 NLOHMANN_JSON_VERSION_PATCH)
|
|
90 #endif
|
|
91
|
|
92 // Combine namespace components
|
|
93 #define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b
|
|
94 #define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \
|
|
95 NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b)
|
|
96
|
|
97 #ifndef NLOHMANN_JSON_NAMESPACE
|
|
98 #define NLOHMANN_JSON_NAMESPACE \
|
|
99 nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \
|
|
100 NLOHMANN_JSON_ABI_TAGS, \
|
|
101 NLOHMANN_JSON_NAMESPACE_VERSION)
|
|
102 #endif
|
|
103
|
|
104 #ifndef NLOHMANN_JSON_NAMESPACE_BEGIN
|
|
105 #define NLOHMANN_JSON_NAMESPACE_BEGIN \
|
|
106 namespace nlohmann \
|
|
107 { \
|
|
108 inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \
|
|
109 NLOHMANN_JSON_ABI_TAGS, \
|
|
110 NLOHMANN_JSON_NAMESPACE_VERSION) \
|
|
111 {
|
|
112 #endif
|
|
113
|
|
114 #ifndef NLOHMANN_JSON_NAMESPACE_END
|
|
115 #define NLOHMANN_JSON_NAMESPACE_END \
|
|
116 } /* namespace (inline namespace) NOLINT(readability/namespace) */ \
|
|
117 } // namespace nlohmann
|
|
118 #endif
|
|
119
|
|
120
|
|
121 /*!
|
|
122 @brief namespace for Niels Lohmann
|
|
123 @see https://github.com/nlohmann
|
|
124 @since version 1.0.0
|
|
125 */
|
|
126 NLOHMANN_JSON_NAMESPACE_BEGIN
|
|
127
|
|
128 /*!
|
|
129 @brief default JSONSerializer template argument
|
|
130
|
|
131 This serializer ignores the template arguments and uses ADL
|
|
132 ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl))
|
|
133 for serialization.
|
|
134 */
|
|
135 template<typename T = void, typename SFINAE = void>
|
|
136 struct adl_serializer;
|
|
137
|
|
138 /// a class to store JSON values
|
|
139 /// @sa https://json.nlohmann.me/api/basic_json/
|
|
140 template<template<typename U, typename V, typename... Args> class ObjectType =
|
|
141 std::map,
|
|
142 template<typename U, typename... Args> class ArrayType = std::vector,
|
|
143 class StringType = std::string, class BooleanType = bool,
|
|
144 class NumberIntegerType = std::int64_t,
|
|
145 class NumberUnsignedType = std::uint64_t,
|
|
146 class NumberFloatType = double,
|
|
147 template<typename U> class AllocatorType = std::allocator,
|
|
148 template<typename T, typename SFINAE = void> class JSONSerializer =
|
|
149 adl_serializer,
|
|
150 class BinaryType = std::vector<std::uint8_t>, // cppcheck-suppress syntaxError
|
|
151 class CustomBaseClass = void>
|
|
152 class basic_json;
|
|
153
|
|
154 /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document
|
|
155 /// @sa https://json.nlohmann.me/api/json_pointer/
|
|
156 template<typename RefStringType>
|
|
157 class json_pointer;
|
|
158
|
|
159 /*!
|
|
160 @brief default specialization
|
|
161 @sa https://json.nlohmann.me/api/json/
|
|
162 */
|
|
163 using json = basic_json<>;
|
|
164
|
|
165 /// @brief a minimal map-like container that preserves insertion order
|
|
166 /// @sa https://json.nlohmann.me/api/ordered_map/
|
|
167 template<class Key, class T, class IgnoredLess, class Allocator>
|
|
168 struct ordered_map;
|
|
169
|
|
170 /// @brief specialization that maintains the insertion order of object keys
|
|
171 /// @sa https://json.nlohmann.me/api/ordered_json/
|
|
172 using ordered_json = basic_json<nlohmann::ordered_map>;
|
|
173
|
|
174 NLOHMANN_JSON_NAMESPACE_END
|
|
175
|
|
176 #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
|