22#ifndef QT_BOOTSTRAPPED
23#include <QtCore/private/qconfig_p.h>
24#include <QtCore/private/qtcore-config_p.h>
32# define QT_SUPPORTS_INIT_PRIORITY 1
35# define Q_DECL_INIT_PRIORITY(nn) \
36 __pragma(warning(disable: 4075)) \
37 __pragma(init_seg(".CRT$XCK" QT_STRINGIFY(nn))) Q_DECL_UNUSED
38#elif defined(Q_OS_QNX)
40# define QT_SUPPORTS_INIT_PRIORITY 0
41#elif defined(Q_OS_WIN) || defined(Q_OF_ELF)
42# define QT_SUPPORTS_INIT_PRIORITY 1
45# define Q_DECL_INIT_PRIORITY(nn) __attribute__((init_priority(2000 + nn), used))
46#elif defined(QT_SHARED)
48# define QT_SUPPORTS_INIT_PRIORITY -1
49# define Q_DECL_INIT_PRIORITY(nn) Q_DECL_UNUSED
51# define QT_SUPPORTS_INIT_PRIORITY 0
54#if defined(__cplusplus)
61#if !__has_builtin(__builtin_available)
62#include <initializer_list>
63#include <QtCore/qoperatingsystemversion.h>
64#include <QtCore/qversionnumber.h>
68struct qt_clang_builtin_available_os_version_data {
73static inline bool qt_clang_builtin_available(
74 const std::initializer_list<qt_clang_builtin_available_os_version_data> &versions)
80 current.majorVersion(),
81 current.minorVersion(),
94#define QT_AVAILABLE_OS_VER(os, ver) \
95 QT_PREPEND_NAMESPACE(qt_clang_builtin_available_os_version_data){\
96 QT_PREPEND_NAMESPACE(QOperatingSystemVersion)::os, #ver}
97#define QT_AVAILABLE_CAT(L, R) QT_AVAILABLE_CAT_(L, R)
98#define QT_AVAILABLE_CAT_(L, R) L ## R
99#define QT_AVAILABLE_EXPAND(...) QT_AVAILABLE_OS_VER(__VA_ARGS__)
100#define QT_AVAILABLE_SPLIT(os_ver) QT_AVAILABLE_EXPAND(QT_AVAILABLE_CAT(QT_AVAILABLE_SPLIT_, os_ver))
101#define QT_AVAILABLE_SPLIT_macOS MacOS,
102#define QT_AVAILABLE_SPLIT_iOS IOS,
103#define QT_AVAILABLE_SPLIT_tvOS TvOS,
104#define QT_AVAILABLE_SPLIT_watchOS WatchOS,
105#define QT_BUILTIN_AVAILABLE0(e) \
106 QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({})
107#define QT_BUILTIN_AVAILABLE1(a, e) \
108 QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a)})
109#define QT_BUILTIN_AVAILABLE2(a, b, e) \
110 QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a), \
111 QT_AVAILABLE_SPLIT(b)})
112#define QT_BUILTIN_AVAILABLE3(a, b, c, e) \
113 QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a), \
114 QT_AVAILABLE_SPLIT(b), \
115 QT_AVAILABLE_SPLIT(c)})
116#define QT_BUILTIN_AVAILABLE4(a, b, c, d, e) \
117 QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a), \
118 QT_AVAILABLE_SPLIT(b), \
119 QT_AVAILABLE_SPLIT(c), \
120 QT_AVAILABLE_SPLIT(d)})
121#define QT_BUILTIN_AVAILABLE_ARG(arg0, arg1, arg2, arg3, arg4, arg5, ...) arg5
122#define QT_BUILTIN_AVAILABLE_CHOOSER(...) QT_BUILTIN_AVAILABLE_ARG(__VA_ARGS__, \
123 QT_BUILTIN_AVAILABLE4, \
124 QT_BUILTIN_AVAILABLE3, \
125 QT_BUILTIN_AVAILABLE2, \
126 QT_BUILTIN_AVAILABLE1, \
127 QT_BUILTIN_AVAILABLE0, )
128#define __builtin_available(...) QT_BUILTIN_AVAILABLE_CHOOSER(__VA_ARGS__)(__VA_ARGS__)
static constexpr OSType currentType()
Returns the current OS type without constructing a QOperatingSystemVersion instance.
static QOperatingSystemVersion current()
[0]
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static Q_CORE_EXPORT QVersionNumber fromString(QAnyStringView string, qsizetype *suffixIndex=nullptr)
QSet< QString >::iterator it
Combined button and popup list for selecting options.