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
qoperatingsystemversion.h
Go to the documentation of this file.
1// Copyright (C) 2021 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#include <QtCore/qglobal.h>
6#include <QtCore/qcompare.h>
7#include <QtCore/qversionnumber.h>
8
9#ifndef QOPERATINGSYSTEMVERSION_H
10#define QOPERATINGSYSTEMVERSION_H
11
12QT_BEGIN_NAMESPACE
13
14#if 0
15# pragma qt_class(QOperatingSystemVersionBase)
16# pragma qt_class(QOperatingSystemVersion)
17# pragma qt_sync_stop_processing // we have some ifdef'ery fooling syncqt
18#endif
19
20class QString;
21
23{
24public:
25 // ### Qt 7: Keep synchronized with the copy in QOperatingSystemVersion until Qt7,
26 // then remove this comment :)
37
39 int vmajor, int vminor = -1, int vmicro = -1)
40 : m_os(osType),
41 m_major(vmajor),
42 m_minor(vminor),
43 m_micro(vmicro)
44 { }
45
46 static Q_CORE_EXPORT QOperatingSystemVersionBase current();
47 static Q_CORE_EXPORT QString name(QOperatingSystemVersionBase osversion);
48 static Q_CORE_EXPORT bool isAnyOfType(std::initializer_list<OSType> types, OSType type);
49
50 static constexpr OSType currentType()
51 {
52#if defined(Q_OS_WIN)
53 return Windows;
54#elif defined(Q_OS_MACOS)
55 return MacOS;
56#elif defined(Q_OS_IOS)
57 return IOS;
58#elif defined(Q_OS_TVOS)
59 return TvOS;
60#elif defined(Q_OS_WATCHOS)
61 return WatchOS;
62#elif defined(Q_OS_VISIONOS)
63 return VisionOS;
64#elif defined(Q_OS_ANDROID)
65 return Android;
66#else
67 return Unknown;
68#endif
69 }
70
71 inline QVersionNumber version() const { return QVersionNumber(m_major, m_minor, m_micro); }
72
73 constexpr int majorVersion() const { return m_major; }
74 constexpr int minorVersion() const { return m_minor; }
75 constexpr int microVersion() const { return m_micro; }
76
77 constexpr int segmentCount() const
78 { return m_micro >= 0 ? 3 : m_minor >= 0 ? 2 : m_major >= 0 ? 1 : 0; }
79
80 inline bool isAnyOfType(std::initializer_list<OSType> types) const
81 {
82 return QOperatingSystemVersionBase::isAnyOfType(types, type());
83 }
84 constexpr OSType type() const { return m_os; }
85 inline QString name() const { return name(*this); }
86
87protected:
89 QOperatingSystemVersionBase v2) noexcept;
90
92 const QOperatingSystemVersionBase &rhs) noexcept
93 {
94 if (lhs.type() != rhs.type())
95 return Qt::partial_ordering::unordered;
96 const int res = QOperatingSystemVersionBase::compare(lhs, rhs);
97 return Qt::compareThreeWay(res, 0);
98 }
99#ifdef __cpp_lib_three_way_comparison
100 friend std::partial_ordering
102 { return compareThreeWay(lhs, rhs); }
103#else
104 friend bool
107
108 friend bool
110 { return is_gteq(compareThreeWay(lhs, rhs)); }
111
112 friend bool
114 { return is_lt(compareThreeWay(lhs, rhs)); }
115
116 friend bool
118 { return is_lteq(compareThreeWay(lhs, rhs)); }
119#endif
120
122private:
123 static QOperatingSystemVersionBase current_impl();
124
125 OSType m_os;
126 int m_major;
127 int m_minor;
128 int m_micro;
129};
130
131#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) && !defined(Q_QDOC)
132class QOperatingSystemVersionUnexported : public QOperatingSystemVersionBase
133{
134public:
135 using QOperatingSystemVersionBase::QOperatingSystemVersionBase;
136 constexpr QOperatingSystemVersionUnexported(QOperatingSystemVersionBase other) noexcept
137 : QOperatingSystemVersionBase(other) {}
138#else
140{
141 using QOperatingSystemVersionUnexported = QOperatingSystemVersionBase;
142public:
143#endif
144
145 // ### Qt7: Regroup with the rest below
153
154#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) && !defined(Q_QDOC)
155};
156
158{
159#endif
160public:
161 // ### Qt7: Remove. Keep synchronized with QOperatingSystemVersionBase::OSType until then!
162#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
163 enum OSType {
164 Unknown = 0,
165 Windows,
166 MacOS,
167 IOS,
168 TvOS,
169 WatchOS,
170 Android,
171 VisionOS,
172 };
173#endif
174
175 // ### Qt7: remove the branch with static const variables. Then group and
176 // sort the inline ones. Until then, new entries should be added to
177 // QOperatingSystemVersionUnexported.
178#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
183
193
208#else
213
223
238#endif
239
251
255
257
259 : QOperatingSystemVersionUnexported(osversion) {}
260
261 constexpr QOperatingSystemVersion(OSType osType, int vmajor, int vminor = -1, int vmicro = -1)
262 : QOperatingSystemVersionUnexported(QOperatingSystemVersionBase::OSType(osType), vmajor, vminor,
263 vmicro)
264 {
265 }
266
267 QT_CORE_INLINE_SINCE(6, 3)
269
270 static constexpr OSType currentType()
271 {
273 }
274
275#if QT_CORE_REMOVED_SINCE(6, 3) || defined(Q_QDOC)
277
278 constexpr int majorVersion() const { return QOperatingSystemVersionBase::majorVersion(); }
279 constexpr int minorVersion() const { return QOperatingSystemVersionBase::minorVersion(); }
280 constexpr int microVersion() const { return QOperatingSystemVersionBase::microVersion(); }
281
282 constexpr int segmentCount() const
284#endif // QT_CORE_REMOVED_SINCE(6, 3)
285
286 constexpr OSType type() const { return OSType(QOperatingSystemVersionBase::type()); }
287 QT7_ONLY(Q_CORE_EXPORT) bool isAnyOfType(std::initializer_list<OSType> types) const;
288#if QT_CORE_REMOVED_SINCE(6, 3) || defined(Q_QDOC)
289 QString name() const;
290#endif
291
292private:
293 QOperatingSystemVersion() = default;
294
295#if QT_CORE_REMOVED_SINCE(6, 3)
296 // ### Qt 7: Remove. It's only here for backwards compat with previous inline calls.
297 [[maybe_unused]] static int compare(const QOperatingSystemVersion &v1,
299#endif
300};
302
303#ifndef QT_NO_DEBUG_STREAM
304class QDebug;
305Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QOperatingSystemVersion &ov);
306#endif
307
308#if QT_CORE_INLINE_IMPL_SINCE(6, 3)
309QOperatingSystemVersion QOperatingSystemVersion::current()
310{
311 return QOperatingSystemVersionBase::current();
312}
313#endif // QT_CORE_INLINE_IMPL_SINCE(6, 3)
314
315QT_END_NAMESPACE
316
317#endif // QOPERATINGSYSTEMVERSION_H
friend bool operator<=(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs) noexcept
friend bool operator<(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs) noexcept
friend bool operator>=(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs) noexcept
constexpr QOperatingSystemVersionBase(OSType osType, int vmajor, int vminor=-1, int vmicro=-1)
bool isAnyOfType(std::initializer_list< OSType > types) const
static Q_CORE_EXPORT bool isAnyOfType(std::initializer_list< OSType > types, OSType type)
friend bool operator>(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs) noexcept
friend Qt::partial_ordering compareThreeWay(const QOperatingSystemVersionBase &lhs, const QOperatingSystemVersionBase &rhs) noexcept
static constexpr OSType currentType()
static Q_CORE_EXPORT int compare(QOperatingSystemVersionBase v1, QOperatingSystemVersionBase v2) noexcept
static constexpr QOperatingSystemVersionBase MacOSSequoia
static constexpr QOperatingSystemVersionBase MacOSTahoe
static constexpr QOperatingSystemVersionBase Windows11_21H2
\variable QOperatingSystemVersion::Windows11_21H2
static constexpr QOperatingSystemVersionBase AndroidNougat
\variable QOperatingSystemVersion::AndroidNougat
static constexpr QOperatingSystemVersionBase Android10
\variable QOperatingSystemVersion::Android10
static constexpr QOperatingSystemVersionBase MacOSSierra
\variable QOperatingSystemVersion::MacOSSierra
static constexpr QOperatingSystemVersionBase OSXYosemite
\variable QOperatingSystemVersion::OSXYosemite
static constexpr QOperatingSystemVersionBase Android12L
\variable QOperatingSystemVersion::Android12L
static constexpr QOperatingSystemVersionBase Windows10_1909
\variable QOperatingSystemVersion::Windows10_1909
static constexpr QOperatingSystemVersionBase AndroidKitKat
\variable QOperatingSystemVersion::AndroidKitKat
static constexpr QOperatingSystemVersionBase AndroidJellyBean
\variable QOperatingSystemVersion::MacOSSonoma
static constexpr QOperatingSystemVersionBase AndroidOreo_MR1
\variable QOperatingSystemVersion::AndroidOreo_MR1
static constexpr QOperatingSystemVersionBase Android13
\variable QOperatingSystemVersion::Android13
static constexpr QOperatingSystemVersionBase MacOSCatalina
\variable QOperatingSystemVersion::MacOSCatalina
static constexpr QOperatingSystemVersionBase AndroidLollipop_MR1
\variable QOperatingSystemVersion::AndroidLollipop_MR1
static constexpr QOperatingSystemVersionBase Windows10
\variable QOperatingSystemVersion::Windows10
static constexpr QOperatingSystemVersionBase Windows10_1903
\variable QOperatingSystemVersion::Windows10_1903
static constexpr QOperatingSystemVersionBase Android12
\variable QOperatingSystemVersion::Android12
static constexpr OSType currentType()
Returns the current OS type without constructing a QOperatingSystemVersion instance.
static constexpr QOperatingSystemVersionBase Windows11_23H2
static constexpr QOperatingSystemVersionBase OSXElCapitan
\variable QOperatingSystemVersion::OSXElCapitan
static constexpr QOperatingSystemVersionBase MacOSMojave
\variable QOperatingSystemVersion::MacOSMojave
static constexpr QOperatingSystemVersionBase Windows8
\variable QOperatingSystemVersion::Windows8
static constexpr QOperatingSystemVersionBase AndroidNougat_MR1
\variable QOperatingSystemVersion::AndroidNougat_MR1
static constexpr QOperatingSystemVersionBase Android14
static constexpr QOperatingSystemVersionBase Windows10_2004
\variable QOperatingSystemVersion::Windows10_2004
static constexpr QOperatingSystemVersionBase MacOSHighSierra
\variable QOperatingSystemVersion::MacOSHighSierra
static constexpr QOperatingSystemVersionBase Windows10_21H2
\variable QOperatingSystemVersion::Windows10_21H2
constexpr QOperatingSystemVersion(const QOperatingSystemVersionBase &osversion)
static constexpr QOperatingSystemVersionBase AndroidMarshmallow
\variable QOperatingSystemVersion::AndroidMarshmallow
constexpr QOperatingSystemVersion(OSType osType, int vmajor, int vminor=-1, int vmicro=-1)
Constructs a QOperatingSystemVersion consisting of the OS type osType, and major, minor,...
static constexpr QOperatingSystemVersionBase AndroidJellyBean_MR2
\variable QOperatingSystemVersion::AndroidJellyBean_MR2
static constexpr QOperatingSystemVersionBase Windows10_20H2
\variable QOperatingSystemVersion::Windows10_20H2
static constexpr QOperatingSystemVersionBase AndroidPie
\variable QOperatingSystemVersion::AndroidPie
static constexpr QOperatingSystemVersionBase AndroidOreo
\variable QOperatingSystemVersion::AndroidOreo
static constexpr QOperatingSystemVersionBase OSXMavericks
\variable QOperatingSystemVersion::Windows11_23H2
static constexpr QOperatingSystemVersionBase MacOSMonterey
\variable QOperatingSystemVersion::MacOSMonterey
static constexpr QOperatingSystemVersionBase Windows7
\variable QOperatingSystemVersion::Windows7
static constexpr QOperatingSystemVersionBase MacOSVentura
\variable QOperatingSystemVersion::MacOSVentura
static constexpr QOperatingSystemVersionBase Windows10_1809
\variable QOperatingSystemVersion::Windows10_1809
static constexpr QOperatingSystemVersionBase AndroidJellyBean_MR1
\variable QOperatingSystemVersion::AndroidJellyBean_MR1
static constexpr QOperatingSystemVersionBase MacOSBigSur
\variable QOperatingSystemVersion::MacOSBigSur
constexpr OSType type() const
Returns the OS type identified by the QOperatingSystemVersion.
static constexpr QOperatingSystemVersionBase AndroidLollipop
\variable QOperatingSystemVersion::AndroidLollipop
static constexpr QOperatingSystemVersionBase Windows8_1
\variable QOperatingSystemVersion::Windows8_1
static constexpr QOperatingSystemVersionBase Windows11_24H2
static constexpr QOperatingSystemVersionBase Windows11_25H2
static constexpr QOperatingSystemVersionBase Windows10_21H1
\variable QOperatingSystemVersion::Windows10_21H1
static constexpr QOperatingSystemVersionBase Windows11_22H2
\variable QOperatingSystemVersion::Windows11_22H2
static constexpr QOperatingSystemVersionBase Windows10_22H2
\variable QOperatingSystemVersion::Windows10_22H2
static constexpr QOperatingSystemVersionBase Android11
\variable QOperatingSystemVersion::Android11
static constexpr QOperatingSystemVersionBase MacOSSonoma
static constexpr QOperatingSystemVersionBase Windows11
\variable QOperatingSystemVersion::Windows11
Combined button and popup list for selecting options.
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2582
static int compareVersionComponents(int lhs, int rhs) noexcept
Q_DECLARE_TYPEINFO(QOperatingSystemVersion, Q_PRIMITIVE_TYPE)