1 | // Copyright (C) 2022 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | |
4 | #ifndef QTDEPRECATIONMARKERS_H |
5 | #define QTDEPRECATIONMARKERS_H |
6 | |
7 | #include <QtCore/qtconfigmacros.h> |
8 | #include <QtCore/qtversionchecks.h> |
9 | #include <QtCore/qcompilerdetection.h> // for Q_DECL_DEPRECATED |
10 | |
11 | #if 0 |
12 | #pragma qt_class(QtDeprecationMarkers) |
13 | #pragma qt_sync_stop_processing |
14 | #endif |
15 | |
16 | QT_BEGIN_NAMESPACE |
17 | |
18 | #if defined(QT_NO_DEPRECATED) |
19 | # undef QT_DEPRECATED |
20 | # undef QT_DEPRECATED_X |
21 | # undef QT_DEPRECATED_VARIABLE |
22 | # undef QT_DEPRECATED_CONSTRUCTOR |
23 | #elif !defined(QT_NO_DEPRECATED_WARNINGS) |
24 | # undef QT_DEPRECATED |
25 | # define QT_DEPRECATED Q_DECL_DEPRECATED |
26 | # undef QT_DEPRECATED_X |
27 | # define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text) |
28 | # undef QT_DEPRECATED_VARIABLE |
29 | # define QT_DEPRECATED_VARIABLE Q_DECL_VARIABLE_DEPRECATED |
30 | # undef QT_DEPRECATED_CONSTRUCTOR |
31 | # define QT_DEPRECATED_CONSTRUCTOR Q_DECL_CONSTRUCTOR_DEPRECATED explicit |
32 | #else |
33 | # undef QT_DEPRECATED |
34 | # define QT_DEPRECATED |
35 | # undef QT_DEPRECATED_X |
36 | # define QT_DEPRECATED_X(text) |
37 | # undef QT_DEPRECATED_VARIABLE |
38 | # define QT_DEPRECATED_VARIABLE |
39 | # undef QT_DEPRECATED_CONSTRUCTOR |
40 | # define QT_DEPRECATED_CONSTRUCTOR |
41 | # undef Q_DECL_ENUMERATOR_DEPRECATED |
42 | # define Q_DECL_ENUMERATOR_DEPRECATED |
43 | # undef Q_DECL_ENUMERATOR_DEPRECATED_X |
44 | # define Q_DECL_ENUMERATOR_DEPRECATED_X(ignored) |
45 | #endif |
46 | |
47 | // If the deprecated macro is defined, use its value |
48 | #if !defined(QT_DISABLE_DEPRECATED_UP_TO) && defined(QT_DISABLE_DEPRECATED_BEFORE) |
49 | # define QT_DISABLE_DEPRECATED_UP_TO QT_DISABLE_DEPRECATED_BEFORE |
50 | #endif |
51 | |
52 | // If the deprecated macro is defined, use its value |
53 | #if !defined(QT_WARN_DEPRECATED_UP_TO) && defined(QT_DEPRECATED_WARNINGS_SINCE) |
54 | # define QT_WARN_DEPRECATED_UP_TO QT_DEPRECATED_WARNINGS_SINCE |
55 | #endif |
56 | |
57 | #ifndef QT_WARN_DEPRECATED_UP_TO |
58 | # ifdef QT_DISABLE_DEPRECATED_UP_TO |
59 | # define QT_WARN_DEPRECATED_UP_TO QT_DISABLE_DEPRECATED_UP_TO |
60 | # else |
61 | # define QT_WARN_DEPRECATED_UP_TO QT_VERSION |
62 | # endif |
63 | #endif |
64 | |
65 | #ifndef QT_DISABLE_DEPRECATED_UP_TO |
66 | #define QT_DISABLE_DEPRECATED_UP_TO QT_VERSION_CHECK(5, 0, 0) |
67 | #endif |
68 | |
69 | /* |
70 | QT_DEPRECATED_SINCE(major, minor) evaluates as true if the Qt version is greater than |
71 | the deprecation point specified. |
72 | |
73 | Use it to specify from which version of Qt a function or class has been deprecated |
74 | |
75 | Example: |
76 | #if QT_DEPRECATED_SINCE(5,1) |
77 | QT_DEPRECATED void deprecatedFunction(); //function deprecated since Qt 5.1 |
78 | #endif |
79 | |
80 | */ |
81 | #ifdef QT_DEPRECATED |
82 | #define QT_DEPRECATED_SINCE(major, minor) (QT_VERSION_CHECK(major, minor, 0) > QT_DISABLE_DEPRECATED_UP_TO) |
83 | #else |
84 | #define QT_DEPRECATED_SINCE(major, minor) 0 |
85 | #endif |
86 | |
87 | /* |
88 | QT_DEPRECATED_VERSION(major, minor) and QT_DEPRECATED_VERSION_X(major, minor, text) |
89 | outputs a deprecation warning if QT_WARN_DEPRECATED_UP_TO is equal to or greater |
90 | than the version specified as major, minor. This makes it possible to deprecate a |
91 | function without annoying a user who needs to stay compatible with a specified minimum |
92 | version and therefore can't use the new function. |
93 | */ |
94 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 12, 0) |
95 | # define QT_DEPRECATED_VERSION_X_5_12(text) QT_DEPRECATED_X(text) |
96 | # define QT_DEPRECATED_VERSION_5_12 QT_DEPRECATED |
97 | #else |
98 | # define QT_DEPRECATED_VERSION_X_5_12(text) |
99 | # define QT_DEPRECATED_VERSION_5_12 |
100 | #endif |
101 | |
102 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 13, 0) |
103 | # define QT_DEPRECATED_VERSION_X_5_13(text) QT_DEPRECATED_X(text) |
104 | # define QT_DEPRECATED_VERSION_5_13 QT_DEPRECATED |
105 | #else |
106 | # define QT_DEPRECATED_VERSION_X_5_13(text) |
107 | # define QT_DEPRECATED_VERSION_5_13 |
108 | #endif |
109 | |
110 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 14, 0) |
111 | # define QT_DEPRECATED_VERSION_X_5_14(text) QT_DEPRECATED_X(text) |
112 | # define QT_DEPRECATED_VERSION_5_14 QT_DEPRECATED |
113 | #else |
114 | # define QT_DEPRECATED_VERSION_X_5_14(text) |
115 | # define QT_DEPRECATED_VERSION_5_14 |
116 | #endif |
117 | |
118 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 15, 0) |
119 | # define QT_DEPRECATED_VERSION_X_5_15(text) QT_DEPRECATED_X(text) |
120 | # define QT_DEPRECATED_VERSION_5_15 QT_DEPRECATED |
121 | #else |
122 | # define QT_DEPRECATED_VERSION_X_5_15(text) |
123 | # define QT_DEPRECATED_VERSION_5_15 |
124 | #endif |
125 | |
126 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 0, 0) |
127 | # define QT_DEPRECATED_VERSION_X_6_0(text) QT_DEPRECATED_X(text) |
128 | # define QT_DEPRECATED_VERSION_6_0 QT_DEPRECATED |
129 | #else |
130 | # define QT_DEPRECATED_VERSION_X_6_0(text) |
131 | # define QT_DEPRECATED_VERSION_6_0 |
132 | #endif |
133 | |
134 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 1, 0) |
135 | # define QT_DEPRECATED_VERSION_X_6_1(text) QT_DEPRECATED_X(text) |
136 | # define QT_DEPRECATED_VERSION_6_1 QT_DEPRECATED |
137 | #else |
138 | # define QT_DEPRECATED_VERSION_X_6_1(text) |
139 | # define QT_DEPRECATED_VERSION_6_1 |
140 | #endif |
141 | |
142 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 2, 0) |
143 | # define QT_DEPRECATED_VERSION_X_6_2(text) QT_DEPRECATED_X(text) |
144 | # define QT_DEPRECATED_VERSION_6_2 QT_DEPRECATED |
145 | #else |
146 | # define QT_DEPRECATED_VERSION_X_6_2(text) |
147 | # define QT_DEPRECATED_VERSION_6_2 |
148 | #endif |
149 | |
150 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 3, 0) |
151 | # define QT_DEPRECATED_VERSION_X_6_3(text) QT_DEPRECATED_X(text) |
152 | # define QT_DEPRECATED_VERSION_6_3 QT_DEPRECATED |
153 | #else |
154 | # define QT_DEPRECATED_VERSION_X_6_3(text) |
155 | # define QT_DEPRECATED_VERSION_6_3 |
156 | #endif |
157 | |
158 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 4, 0) |
159 | # define QT_DEPRECATED_VERSION_X_6_4(text) QT_DEPRECATED_X(text) |
160 | # define QT_DEPRECATED_VERSION_6_4 QT_DEPRECATED |
161 | #else |
162 | # define QT_DEPRECATED_VERSION_X_6_4(text) |
163 | # define QT_DEPRECATED_VERSION_6_4 |
164 | #endif |
165 | |
166 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 5, 0) |
167 | # define QT_DEPRECATED_VERSION_X_6_5(text) QT_DEPRECATED_X(text) |
168 | # define QT_DEPRECATED_VERSION_6_5 QT_DEPRECATED |
169 | #else |
170 | # define QT_DEPRECATED_VERSION_X_6_5(text) |
171 | # define QT_DEPRECATED_VERSION_6_5 |
172 | #endif |
173 | |
174 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 6, 0) |
175 | # define QT_DEPRECATED_VERSION_X_6_6(text) QT_DEPRECATED_X(text) |
176 | # define QT_DEPRECATED_VERSION_6_6 QT_DEPRECATED |
177 | #else |
178 | # define QT_DEPRECATED_VERSION_X_6_6(text) |
179 | # define QT_DEPRECATED_VERSION_6_6 |
180 | #endif |
181 | |
182 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 7, 0) |
183 | # define QT_DEPRECATED_VERSION_X_6_7(text) QT_DEPRECATED_X(text) |
184 | # define QT_DEPRECATED_VERSION_6_7 QT_DEPRECATED |
185 | #else |
186 | # define QT_DEPRECATED_VERSION_X_6_7(text) |
187 | # define QT_DEPRECATED_VERSION_6_7 |
188 | #endif |
189 | |
190 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 8, 0) |
191 | # define QT_DEPRECATED_VERSION_X_6_8(text) QT_DEPRECATED_X(text) |
192 | # define QT_DEPRECATED_VERSION_6_8 QT_DEPRECATED |
193 | #else |
194 | # define QT_DEPRECATED_VERSION_X_6_8(text) |
195 | # define QT_DEPRECATED_VERSION_6_8 |
196 | #endif |
197 | |
198 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 9, 0) |
199 | # define QT_DEPRECATED_VERSION_X_6_9(text) QT_DEPRECATED_X(text) |
200 | # define QT_DEPRECATED_VERSION_6_9 QT_DEPRECATED |
201 | #else |
202 | # define QT_DEPRECATED_VERSION_X_6_9(text) |
203 | # define QT_DEPRECATED_VERSION_6_9 |
204 | #endif |
205 | |
206 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 10, 0) |
207 | # define QT_DEPRECATED_VERSION_X_6_10(text) QT_DEPRECATED_X(text) |
208 | # define QT_DEPRECATED_VERSION_6_10 QT_DEPRECATED |
209 | #else |
210 | # define QT_DEPRECATED_VERSION_X_6_10(text) |
211 | # define QT_DEPRECATED_VERSION_6_10 |
212 | #endif |
213 | |
214 | #if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 11, 0) |
215 | # define QT_DEPRECATED_VERSION_X_6_11(text) QT_DEPRECATED_X(text) |
216 | # define QT_DEPRECATED_VERSION_6_11 QT_DEPRECATED |
217 | #else |
218 | # define QT_DEPRECATED_VERSION_X_6_11(text) |
219 | # define QT_DEPRECATED_VERSION_6_11 |
220 | #endif |
221 | |
222 | #define QT_DEPRECATED_VERSION_X_5(minor, text) QT_DEPRECATED_VERSION_X_5_##minor(text) |
223 | #define QT_DEPRECATED_VERSION_X(major, minor, text) QT_DEPRECATED_VERSION_X_##major##_##minor(text) |
224 | |
225 | #define QT_DEPRECATED_VERSION_5(minor) QT_DEPRECATED_VERSION_5_##minor |
226 | #define QT_DEPRECATED_VERSION(major, minor) QT_DEPRECATED_VERSION_##major##_##minor |
227 | |
228 | /* |
229 | QT_IF_DEPRECATED_SINCE(major, minor, whenTrue, whenFalse) expands to |
230 | \a whenTrue if the specified (\a major, \a minor) version is less than or |
231 | equal to the deprecation version defined by QT_DISABLE_DEPRECATED_UP_TO, |
232 | and to \a whenFalse otherwise. |
233 | |
234 | Currently used for QT_INLINE_SINCE(maj, min), but can also be helpful for |
235 | other macros of that kind. |
236 | |
237 | The implementation uses QT_DEPRECATED_SINCE(maj, min) to define a bunch of |
238 | helper QT_IF_DEPRECATED_SINCE_X_Y macros, which expand to \a whenTrue or |
239 | \a whenFalse depending on the value of QT_DEPRECATED_SINCE. |
240 | |
241 | If you need to use QT_IF_DEPRECATED_SINCE() for a (major, minor) version, |
242 | that is not yet covered by the list below, you need to copy the definition |
243 | and change the major and minor versions accordingly. For example, for |
244 | version (X, Y), you will need to add |
245 | |
246 | \code |
247 | #if QT_DEPRECATED_SINCE(X, Y) |
248 | # define QT_IF_DEPRECATED_SINCE_X_Y(whenTrue, whenFalse) whenFalse |
249 | #else |
250 | # define QT_IF_DEPRECATED_SINCE_X_Y(whenTrue, whenFalse) whenTrue |
251 | #endif |
252 | \endcode |
253 | */ |
254 | |
255 | #define QT_IF_DEPRECATED_SINCE(major, minor, whenTrue, whenFalse) \ |
256 | QT_IF_DEPRECATED_SINCE_ ## major ## _ ## minor(whenTrue, whenFalse) |
257 | |
258 | #if QT_DEPRECATED_SINCE(6, 0) |
259 | # define QT_IF_DEPRECATED_SINCE_6_0(whenTrue, whenFalse) whenFalse |
260 | #else |
261 | # define QT_IF_DEPRECATED_SINCE_6_0(whenTrue, whenFalse) whenTrue |
262 | #endif |
263 | |
264 | #if QT_DEPRECATED_SINCE(6, 1) |
265 | # define QT_IF_DEPRECATED_SINCE_6_1(whenTrue, whenFalse) whenFalse |
266 | #else |
267 | # define QT_IF_DEPRECATED_SINCE_6_1(whenTrue, whenFalse) whenTrue |
268 | #endif |
269 | |
270 | #if QT_DEPRECATED_SINCE(6, 2) |
271 | # define QT_IF_DEPRECATED_SINCE_6_2(whenTrue, whenFalse) whenFalse |
272 | #else |
273 | # define QT_IF_DEPRECATED_SINCE_6_2(whenTrue, whenFalse) whenTrue |
274 | #endif |
275 | |
276 | #if QT_DEPRECATED_SINCE(6, 3) |
277 | # define QT_IF_DEPRECATED_SINCE_6_3(whenTrue, whenFalse) whenFalse |
278 | #else |
279 | # define QT_IF_DEPRECATED_SINCE_6_3(whenTrue, whenFalse) whenTrue |
280 | #endif |
281 | |
282 | #if QT_DEPRECATED_SINCE(6, 4) |
283 | # define QT_IF_DEPRECATED_SINCE_6_4(whenTrue, whenFalse) whenFalse |
284 | #else |
285 | # define QT_IF_DEPRECATED_SINCE_6_4(whenTrue, whenFalse) whenTrue |
286 | #endif |
287 | |
288 | #if QT_DEPRECATED_SINCE(6, 5) |
289 | # define QT_IF_DEPRECATED_SINCE_6_5(whenTrue, whenFalse) whenFalse |
290 | #else |
291 | # define QT_IF_DEPRECATED_SINCE_6_5(whenTrue, whenFalse) whenTrue |
292 | #endif |
293 | |
294 | #if QT_DEPRECATED_SINCE(6, 6) |
295 | # define QT_IF_DEPRECATED_SINCE_6_6(whenTrue, whenFalse) whenFalse |
296 | #else |
297 | # define QT_IF_DEPRECATED_SINCE_6_6(whenTrue, whenFalse) whenTrue |
298 | #endif |
299 | |
300 | #if QT_DEPRECATED_SINCE(6, 7) |
301 | # define QT_IF_DEPRECATED_SINCE_6_7(whenTrue, whenFalse) whenFalse |
302 | #else |
303 | # define QT_IF_DEPRECATED_SINCE_6_7(whenTrue, whenFalse) whenTrue |
304 | #endif |
305 | |
306 | #if QT_DEPRECATED_SINCE(6, 8) |
307 | # define QT_IF_DEPRECATED_SINCE_6_8(whenTrue, whenFalse) whenFalse |
308 | #else |
309 | # define QT_IF_DEPRECATED_SINCE_6_8(whenTrue, whenFalse) whenTrue |
310 | #endif |
311 | |
312 | #if QT_DEPRECATED_SINCE(6, 9) |
313 | # define QT_IF_DEPRECATED_SINCE_6_9(whenTrue, whenFalse) whenFalse |
314 | #else |
315 | # define QT_IF_DEPRECATED_SINCE_6_9(whenTrue, whenFalse) whenTrue |
316 | #endif |
317 | |
318 | #if QT_DEPRECATED_SINCE(6, 10) |
319 | # define QT_IF_DEPRECATED_SINCE_6_10(whenTrue, whenFalse) whenFalse |
320 | #else |
321 | # define QT_IF_DEPRECATED_SINCE_6_10(whenTrue, whenFalse) whenTrue |
322 | #endif |
323 | |
324 | #if QT_DEPRECATED_SINCE(6, 11) |
325 | # define QT_IF_DEPRECATED_SINCE_6_11(whenTrue, whenFalse) whenFalse |
326 | #else |
327 | # define QT_IF_DEPRECATED_SINCE_6_11(whenTrue, whenFalse) whenTrue |
328 | #endif |
329 | |
330 | #ifdef __cplusplus |
331 | // A tag to help mark stuff deprecated (cf. QStringViewLiteral) |
332 | namespace QtPrivate { |
333 | enum class Deprecated_t {}; |
334 | constexpr inline Deprecated_t Deprecated = {}; |
335 | } |
336 | #endif |
337 | |
338 | #ifdef QT_ASCII_CAST_WARNINGS |
339 | # define QT_ASCII_CAST_WARN \ |
340 | Q_DECL_DEPRECATED_X("Use fromUtf8, QStringLiteral, or QLatin1StringView") |
341 | #else |
342 | # define QT_ASCII_CAST_WARN |
343 | #endif |
344 | |
345 | QT_END_NAMESPACE |
346 | |
347 | #endif // QTDEPRECATIONMARKERS_H |
348 | |