Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qtdeprecationmarkers.h
Go to the documentation of this file.
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// Qt-Security score:significant reason:default
4
5#ifndef QTDEPRECATIONMARKERS_H
6#define QTDEPRECATIONMARKERS_H
7
8#include <QtCore/qtconfigmacros.h>
9#include <QtCore/qtclasshelpermacros.h>
10#include <QtCore/qtdeprecationdefinitions.h>
11#include <QtCore/qtversionchecks.h>
12#include <QtCore/qcompilerdetection.h> // for Q_DECL_DEPRECATED
13
14#if 0
15#pragma qt_class(QtDeprecationMarkers)
16#pragma qt_sync_stop_processing
17#endif
18
19QT_BEGIN_NAMESPACE
20
21#if defined(QT_NO_DEPRECATED)
22/* undef, so as to cause compile-errors when they're used outside #if QT_DEPRECATED_SINCE blocks */
23# undef QT_DEPRECATED
24# undef QT_DEPRECATED_X
25# undef QT_DEPRECATED_VARIABLE
26# undef QT_DEPRECATED_CONSTRUCTOR
27# undef QT_DEPRECATED_MACRO
28#elif !defined(QT_NO_DEPRECATED_WARNINGS)
29# undef QT_DEPRECATED
30# define QT_DEPRECATED Q_DECL_DEPRECATED
31# undef QT_DEPRECATED_X
32# define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text)
33# undef QT_DEPRECATED_VARIABLE
34# define QT_DEPRECATED_VARIABLE Q_DECL_VARIABLE_DEPRECATED
35# undef QT_DEPRECATED_CONSTRUCTOR
36# define QT_DEPRECATED_CONSTRUCTOR Q_DECL_CONSTRUCTOR_DEPRECATED explicit
37# undef QT_DEPRECATED_MACRO
38# define QT_DEPRECATED_MACRO(macro, text) Q_DECL_DEPRECATED_MACRO(macro, text)
39#else
40# undef QT_DEPRECATED
41# define QT_DEPRECATED
42# undef QT_DEPRECATED_X
43# define QT_DEPRECATED_X(text)
44# undef QT_DEPRECATED_VARIABLE
45# define QT_DEPRECATED_VARIABLE
46# undef QT_DEPRECATED_CONSTRUCTOR
47# define QT_DEPRECATED_CONSTRUCTOR
48# undef QT_DEPRECATED_MACRO
49# define QT_DEPRECATED_MACRO(macro, text)
50# undef Q_DECL_ENUMERATOR_DEPRECATED
51# define Q_DECL_ENUMERATOR_DEPRECATED
52# undef Q_DECL_ENUMERATOR_DEPRECATED_X
53# define Q_DECL_ENUMERATOR_DEPRECATED_X(ignored)
54#endif
55
56/*
57 QT_DEPRECATED_SINCE(major, minor) evaluates as true if the Qt version is greater than
58 the deprecation point specified.
59
60 Use it to specify from which version of Qt a function or class has been deprecated
61
62 Example:
63 #if QT_DEPRECATED_SINCE(5,1)
64 QT_DEPRECATED void deprecatedFunction(); //function deprecated since Qt 5.1
65 #endif
66
67*/
68#ifdef QT_DEPRECATED
69#define QT_DEPRECATED_SINCE(major, minor) (QT_VERSION_CHECK(major, minor, 0) > QT_DISABLE_DEPRECATED_UP_TO)
70#else
71#define QT_DEPRECATED_SINCE(major, minor) 0
72#endif
73
74/*
75 QT_REMOVAL_QT{VER}_DEPRECATED_SINCE(major, minor)
76
77 The macro should be used if the API is deprecated and should be removed
78 in the {VER} major release.
79
80 The \a major and \a minor parameters specify the deprecation version.
81
82 For now, we provide the macros to remove the deprecated APIs in Qt 7
83 and in Qt 8.
84
85 Example:
86
87 \code
88 #if QT_REMOVAL_QT7_DEPRECATED_SINCE(6, 9)
89 QT_DEPRECATED_VERSION_X_6_9("The reason for the deprecation")
90 void deprecatedFunc();
91 #endif
92 \endcode
93
94 The \c {deprecatedFunc()} function is deprecated since Qt 6.9, and will be
95 completely removed in Qt 7.0.
96*/
97#define QT_DEPRECATED_TO_BE_REMOVED_HELPER(dep_major, dep_minor, rem_major)
98 (QT_DEPRECATED_SINCE(dep_major, dep_minor) && (QT_VERSION < QT_VERSION_CHECK(rem_major, 0, 0)))
99
100// For APIs that should be removed in Qt 7
101#define QT_REMOVAL_QT7_DEPRECATED_SINCE(major, minor)
103
104// For APIs that should be removed in Qt 8
105#define QT_REMOVAL_QT8_DEPRECATED_SINCE(major, minor)
107
108/*
109 QT_DEPRECATED_VERSION(major, minor) and QT_DEPRECATED_VERSION_X(major, minor, text)
110 outputs a deprecation warning if QT_WARN_DEPRECATED_UP_TO is equal to or greater
111 than the version specified as major, minor. This makes it possible to deprecate a
112 function without annoying a user who needs to stay compatible with a specified minimum
113 version and therefore can't use the new function.
114*/
115#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 12, 0)
116# define QT_DEPRECATED_VERSION_X_5_12(text) QT_DEPRECATED_X(text)
117# define QT_DEPRECATED_VERSION_5_12 QT_DEPRECATED
118#else
119# define QT_DEPRECATED_VERSION_X_5_12(text)
120# define QT_DEPRECATED_VERSION_5_12
121#endif
122
123#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 13, 0)
124# define QT_DEPRECATED_VERSION_X_5_13(text) QT_DEPRECATED_X(text)
125# define QT_DEPRECATED_VERSION_5_13 QT_DEPRECATED
126#else
127# define QT_DEPRECATED_VERSION_X_5_13(text)
128# define QT_DEPRECATED_VERSION_5_13
129#endif
130
131#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 14, 0)
132# define QT_DEPRECATED_VERSION_X_5_14(text) QT_DEPRECATED_X(text)
133# define QT_DEPRECATED_VERSION_5_14 QT_DEPRECATED
134#else
135# define QT_DEPRECATED_VERSION_X_5_14(text)
136# define QT_DEPRECATED_VERSION_5_14
137#endif
138
139#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(5, 15, 0)
140# define QT_DEPRECATED_VERSION_X_5_15(text) QT_DEPRECATED_X(text)
141# define QT_DEPRECATED_VERSION_5_15 QT_DEPRECATED
142#else
143# define QT_DEPRECATED_VERSION_X_5_15(text)
144# define QT_DEPRECATED_VERSION_5_15
145#endif
146
147#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 0, 0)
148# define QT_DEPRECATED_VERSION_X_6_0(text) QT_DEPRECATED_X(text)
149# define QT_DEPRECATED_VERSION_6_0 QT_DEPRECATED
150#else
151# define QT_DEPRECATED_VERSION_X_6_0(text)
152# define QT_DEPRECATED_VERSION_6_0
153#endif
154
155#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 1, 0)
156# define QT_DEPRECATED_VERSION_X_6_1(text) QT_DEPRECATED_X(text)
157# define QT_DEPRECATED_VERSION_6_1 QT_DEPRECATED
158#else
159# define QT_DEPRECATED_VERSION_X_6_1(text)
160# define QT_DEPRECATED_VERSION_6_1
161#endif
162
163#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 2, 0)
164# define QT_DEPRECATED_VERSION_X_6_2(text) QT_DEPRECATED_X(text)
165# define QT_DEPRECATED_VERSION_6_2 QT_DEPRECATED
166#else
167# define QT_DEPRECATED_VERSION_X_6_2(text)
168# define QT_DEPRECATED_VERSION_6_2
169#endif
170
171#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 3, 0)
172# define QT_DEPRECATED_VERSION_X_6_3(text) QT_DEPRECATED_X(text)
173# define QT_DEPRECATED_VERSION_6_3 QT_DEPRECATED
174#else
175# define QT_DEPRECATED_VERSION_X_6_3(text)
176# define QT_DEPRECATED_VERSION_6_3
177#endif
178
179#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 4, 0)
180# define QT_DEPRECATED_VERSION_X_6_4(text) QT_DEPRECATED_X(text)
181# define QT_DEPRECATED_VERSION_6_4 QT_DEPRECATED
182#else
183# define QT_DEPRECATED_VERSION_X_6_4(text)
184# define QT_DEPRECATED_VERSION_6_4
185#endif
186
187#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 5, 0)
188# define QT_DEPRECATED_VERSION_X_6_5(text) QT_DEPRECATED_X(text)
189# define QT_DEPRECATED_VERSION_6_5 QT_DEPRECATED
190#else
191# define QT_DEPRECATED_VERSION_X_6_5(text)
192# define QT_DEPRECATED_VERSION_6_5
193#endif
194
195#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 6, 0)
196# define QT_DEPRECATED_VERSION_X_6_6(text) QT_DEPRECATED_X(text)
197# define QT_DEPRECATED_VERSION_6_6 QT_DEPRECATED
198#else
199# define QT_DEPRECATED_VERSION_X_6_6(text)
200# define QT_DEPRECATED_VERSION_6_6
201#endif
202
203#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 7, 0)
204# define QT_DEPRECATED_VERSION_X_6_7(text) QT_DEPRECATED_X(text)
205# define QT_DEPRECATED_VERSION_6_7 QT_DEPRECATED
206#else
207# define QT_DEPRECATED_VERSION_X_6_7(text)
208# define QT_DEPRECATED_VERSION_6_7
209#endif
210
211#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 8, 0)
212# define QT_DEPRECATED_VERSION_X_6_8(text) QT_DEPRECATED_X(text)
213# define QT_DEPRECATED_VERSION_6_8 QT_DEPRECATED
214#else
215# define QT_DEPRECATED_VERSION_X_6_8(text)
216# define QT_DEPRECATED_VERSION_6_8
217#endif
218
219#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 9, 0)
220# define QT_DEPRECATED_VERSION_X_6_9(text) QT_DEPRECATED_X(text)
221# define QT_DEPRECATED_VERSION_6_9 QT_DEPRECATED
222#else
223# define QT_DEPRECATED_VERSION_X_6_9(text)
224# define QT_DEPRECATED_VERSION_6_9
225#endif
226
227#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 10, 0)
228# define QT_DEPRECATED_VERSION_X_6_10(text) QT_DEPRECATED_X(text)
229# define QT_DEPRECATED_VERSION_6_10 QT_DEPRECATED
230#else
231# define QT_DEPRECATED_VERSION_X_6_10(text)
232# define QT_DEPRECATED_VERSION_6_10
233#endif
234
235#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 11, 0)
236# define QT_DEPRECATED_VERSION_X_6_11(text) QT_DEPRECATED_X(text)
237# define QT_DEPRECATED_VERSION_6_11 QT_DEPRECATED
238#else
239# define QT_DEPRECATED_VERSION_X_6_11(text)
240# define QT_DEPRECATED_VERSION_6_11
241#endif
242
243/* QT_DEPRECATED_MACRO is \since 6.12, so there are no versioned ones before that */
244
245#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 12, 0)
246# define QT_DEPRECATED_VERSION_X_6_12(text) QT_DEPRECATED_X(text)
247# define QT_DEPRECATED_VERSION_6_12 QT_DEPRECATED
248# define QT_DEPRECATED_MACRO_6_12(macro, text) QT_DEPRECATED_MACRO(macro, text)
249#else
250# define QT_DEPRECATED_VERSION_X_6_12(text)
251# define QT_DEPRECATED_VERSION_6_12
252# define QT_DEPRECATED_MACRO_6_12(macro, text)
253#endif
254
255#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 13, 0)
256# define QT_DEPRECATED_VERSION_X_6_13(text) QT_DEPRECATED_X(text)
257# define QT_DEPRECATED_VERSION_6_13 QT_DEPRECATED
258# define QT_DEPRECATED_MACRO_6_13(macro, text) QT_DEPRECATED_MACRO(macro, text)
259#else
260# define QT_DEPRECATED_VERSION_X_6_13(text)
261# define QT_DEPRECATED_VERSION_6_13
262# define QT_DEPRECATED_MACRO_6_13(macro, text)
263#endif
264
265#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 14, 0)
266# define QT_DEPRECATED_VERSION_X_6_14(text) QT_DEPRECATED_X(text)
267# define QT_DEPRECATED_VERSION_6_14 QT_DEPRECATED
268# define QT_DEPRECATED_MACRO_6_14(macro, text) QT_DEPRECATED_MACRO(macro, text)
269#else
270# define QT_DEPRECATED_VERSION_X_6_14(text)
271# define QT_DEPRECATED_VERSION_6_14
272# define QT_DEPRECATED_MACRO_6_14(macro, text)
273#endif
274
275#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 15, 0)
276# define QT_DEPRECATED_VERSION_X_6_15(text) QT_DEPRECATED_X(text)
277# define QT_DEPRECATED_VERSION_6_15 QT_DEPRECATED
278# define QT_DEPRECATED_MACRO_6_15(macro, text) QT_DEPRECATED_MACRO(macro, text)
279#else
280# define QT_DEPRECATED_VERSION_X_6_15(text)
281# define QT_DEPRECATED_VERSION_6_15
282# define QT_DEPRECATED_MACRO_6_15(macro, text)
283#endif
284
285#if QT_WARN_DEPRECATED_UP_TO >= QT_VERSION_CHECK(6, 16, 0)
286# define QT_DEPRECATED_VERSION_X_6_16(text) QT_DEPRECATED_X(text)
287# define QT_DEPRECATED_VERSION_6_16 QT_DEPRECATED
288# define QT_DEPRECATED_MACRO_6_16(macro, text) QT_DEPRECATED_MACRO(macro, text)
289#else
290# define QT_DEPRECATED_VERSION_X_6_16(text)
291# define QT_DEPRECATED_VERSION_6_16
292# define QT_DEPRECATED_MACRO_6_16(macro, text)
293#endif
294
295#define QT_DEPRECATED_VERSION_X_5(minor, text) QT_DEPRECATED_VERSION_X_5_##minor(text)
296#define QT_DEPRECATED_VERSION_X(major, minor, text) QT_DEPRECATED_VERSION_X_##major##_##minor(text)
297
298#define QT_DEPRECATED_VERSION_5(minor) QT_DEPRECATED_VERSION_5_##minor
299#define QT_DEPRECATED_VERSION(major, minor) QT_DEPRECATED_VERSION_##major##_##minor
300
301/*
302 QT_IF_DEPRECATED_SINCE(major, minor, whenTrue, whenFalse) expands to
303 \a whenTrue if the specified (\a major, \a minor) version is less than or
304 equal to the deprecation version defined by QT_DISABLE_DEPRECATED_UP_TO,
305 and to \a whenFalse otherwise.
306
307 Currently used for QT_INLINE_SINCE(maj, min), but can also be helpful for
308 other macros of that kind.
309
310 The implementation uses QT_DEPRECATED_SINCE(maj, min) to define a bunch of
311 helper QT_IF_DEPRECATED_SINCE_X_Y macros, which expand to \a whenTrue or
312 \a whenFalse depending on the value of QT_DEPRECATED_SINCE.
313
314 If you need to use QT_IF_DEPRECATED_SINCE() for a (major, minor) version,
315 that is not yet covered by the list below, you need to copy the definition
316 and change the major and minor versions accordingly. For example, for
317 version (X, Y), you will need to add
318
319 \code
320 #if QT_DEPRECATED_SINCE(X, Y)
321 # define QT_IF_DEPRECATED_SINCE_X_Y(whenTrue, whenFalse) whenFalse
322 #else
323 # define QT_IF_DEPRECATED_SINCE_X_Y(whenTrue, whenFalse) whenTrue
324 #endif
325 \endcode
326*/
327
328#define QT_IF_DEPRECATED_SINCE(major, minor, whenTrue, whenFalse)
329 QT_IF_DEPRECATED_SINCE_ ## major ## _ ## minor(whenTrue, whenFalse)
330
331#if QT_DEPRECATED_SINCE(6, 0)
332# define QT_IF_DEPRECATED_SINCE_6_0(whenTrue, whenFalse) whenFalse
333#else
334# define QT_IF_DEPRECATED_SINCE_6_0(whenTrue, whenFalse) whenTrue
335#endif
336
337#if QT_DEPRECATED_SINCE(6, 1)
338# define QT_IF_DEPRECATED_SINCE_6_1(whenTrue, whenFalse) whenFalse
339#else
340# define QT_IF_DEPRECATED_SINCE_6_1(whenTrue, whenFalse) whenTrue
341#endif
342
343#if QT_DEPRECATED_SINCE(6, 2)
344# define QT_IF_DEPRECATED_SINCE_6_2(whenTrue, whenFalse) whenFalse
345#else
346# define QT_IF_DEPRECATED_SINCE_6_2(whenTrue, whenFalse) whenTrue
347#endif
348
349#if QT_DEPRECATED_SINCE(6, 3)
350# define QT_IF_DEPRECATED_SINCE_6_3(whenTrue, whenFalse) whenFalse
351#else
352# define QT_IF_DEPRECATED_SINCE_6_3(whenTrue, whenFalse) whenTrue
353#endif
354
355#if QT_DEPRECATED_SINCE(6, 4)
356# define QT_IF_DEPRECATED_SINCE_6_4(whenTrue, whenFalse) whenFalse
357#else
358# define QT_IF_DEPRECATED_SINCE_6_4(whenTrue, whenFalse) whenTrue
359#endif
360
361#if QT_DEPRECATED_SINCE(6, 5)
362# define QT_IF_DEPRECATED_SINCE_6_5(whenTrue, whenFalse) whenFalse
363#else
364# define QT_IF_DEPRECATED_SINCE_6_5(whenTrue, whenFalse) whenTrue
365#endif
366
367#if QT_DEPRECATED_SINCE(6, 6)
368# define QT_IF_DEPRECATED_SINCE_6_6(whenTrue, whenFalse) whenFalse
369#else
370# define QT_IF_DEPRECATED_SINCE_6_6(whenTrue, whenFalse) whenTrue
371#endif
372
373#if QT_DEPRECATED_SINCE(6, 7)
374# define QT_IF_DEPRECATED_SINCE_6_7(whenTrue, whenFalse) whenFalse
375#else
376# define QT_IF_DEPRECATED_SINCE_6_7(whenTrue, whenFalse) whenTrue
377#endif
378
379#if QT_DEPRECATED_SINCE(6, 8)
380# define QT_IF_DEPRECATED_SINCE_6_8(whenTrue, whenFalse) whenFalse
381#else
382# define QT_IF_DEPRECATED_SINCE_6_8(whenTrue, whenFalse) whenTrue
383#endif
384
385#if QT_DEPRECATED_SINCE(6, 9)
386# define QT_IF_DEPRECATED_SINCE_6_9(whenTrue, whenFalse) whenFalse
387#else
388# define QT_IF_DEPRECATED_SINCE_6_9(whenTrue, whenFalse) whenTrue
389#endif
390
391#if QT_DEPRECATED_SINCE(6, 10)
392# define QT_IF_DEPRECATED_SINCE_6_10(whenTrue, whenFalse) whenFalse
393#else
394# define QT_IF_DEPRECATED_SINCE_6_10(whenTrue, whenFalse) whenTrue
395#endif
396
397#if QT_DEPRECATED_SINCE(6, 11)
398# define QT_IF_DEPRECATED_SINCE_6_11(whenTrue, whenFalse) whenFalse
399#else
400# define QT_IF_DEPRECATED_SINCE_6_11(whenTrue, whenFalse) whenTrue
401#endif
402
403#if QT_DEPRECATED_SINCE(6, 12)
404# define QT_IF_DEPRECATED_SINCE_6_12(whenTrue, whenFalse) whenFalse
405#else
406# define QT_IF_DEPRECATED_SINCE_6_12(whenTrue, whenFalse) whenTrue
407#endif
408
409#if QT_DEPRECATED_SINCE(6, 13)
410# define QT_IF_DEPRECATED_SINCE_6_13(whenTrue, whenFalse) whenFalse
411#else
412# define QT_IF_DEPRECATED_SINCE_6_13(whenTrue, whenFalse) whenTrue
413#endif
414
415#if QT_DEPRECATED_SINCE(6, 14)
416# define QT_IF_DEPRECATED_SINCE_6_14(whenTrue, whenFalse) whenFalse
417#else
418# define QT_IF_DEPRECATED_SINCE_6_14(whenTrue, whenFalse) whenTrue
419#endif
420
421#if QT_DEPRECATED_SINCE(6, 15)
422# define QT_IF_DEPRECATED_SINCE_6_15(whenTrue, whenFalse) whenFalse
423#else
424# define QT_IF_DEPRECATED_SINCE_6_15(whenTrue, whenFalse) whenTrue
425#endif
426
427#if QT_DEPRECATED_SINCE(6, 16)
428# define QT_IF_DEPRECATED_SINCE_6_16(whenTrue, whenFalse) whenFalse
429#else
430# define QT_IF_DEPRECATED_SINCE_6_16(whenTrue, whenFalse) whenTrue
431#endif
432
433#ifdef __cplusplus
434// A tag to help mark stuff deprecated (cf. QStringViewLiteral)
435namespace QtPrivate {
436inline QT_DEFINE_TAG(Deprecated);
437}
438#endif
439
440#ifdef QT_ASCII_CAST_WARNINGS
441# define QT_ASCII_CAST_WARN
442 Q_DECL_DEPRECATED_X("Use fromUtf8, QStringLiteral, or QLatin1StringView")
443#else
444# define QT_ASCII_CAST_WARN
445#endif
446
447QT_END_NAMESPACE
448
449#endif // QTDEPRECATIONMARKERS_H
#define QT_DEPRECATED
#define QT_DEPRECATED_TO_BE_REMOVED_HELPER(dep_major, dep_minor, rem_major)
#define QT_DEPRECATED_SINCE(major, minor)