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
4#include <QtCore/qglobal.h>
5#include <QtCore/qcompare.h>
6#include <QtCore/qversionnumber.h>
7
8#ifndef QOPERATINGSYSTEMVERSION_H
9#define QOPERATINGSYSTEMVERSION_H
10
11QT_BEGIN_NAMESPACE
12
13#if 0
14# pragma qt_class(QOperatingSystemVersionBase)
15# pragma qt_class(QOperatingSystemVersion)
16# pragma qt_sync_stop_processing // we have some ifdef'ery fooling syncqt
17#endif
18
19class QString;
20
22{
23public:
24 // ### Qt 7: Keep synchronized with the copy in QOperatingSystemVersion until Qt7,
25 // then remove this comment :)
36
38 int vmajor, int vminor = -1, int vmicro = -1)
39 : m_os(osType),
40 m_major(vmajor),
41 m_minor(vminor),
42 m_micro(vmicro)
43 { }
44
45 static Q_CORE_EXPORT QOperatingSystemVersionBase current();
46 static Q_CORE_EXPORT QString name(QOperatingSystemVersionBase osversion);
47 static Q_CORE_EXPORT bool isAnyOfType(std::initializer_list<OSType> types, OSType type);
48
49 static constexpr OSType currentType()
50 {
51#if defined(Q_OS_WIN)
52 return Windows;
53#elif defined(Q_OS_MACOS)
54 return MacOS;
55#elif defined(Q_OS_IOS)
56 return IOS;
57#elif defined(Q_OS_TVOS)
58 return TvOS;
59#elif defined(Q_OS_WATCHOS)
60 return WatchOS;
61#elif defined(Q_OS_VISIONOS)
62 return VisionOS;
63#elif defined(Q_OS_ANDROID)
64 return Android;
65#else
66 return Unknown;
67#endif
68 }
69
70 inline QVersionNumber version() const { return QVersionNumber(m_major, m_minor, m_micro); }
71
72 constexpr int majorVersion() const { return m_major; }
73 constexpr int minorVersion() const { return m_minor; }
74 constexpr int microVersion() const { return m_micro; }
75
76 constexpr int segmentCount() const
77 { return m_micro >= 0 ? 3 : m_minor >= 0 ? 2 : m_major >= 0 ? 1 : 0; }
78
79 inline bool isAnyOfType(std::initializer_list<OSType> types) const
80 {
81 return QOperatingSystemVersionBase::isAnyOfType(types, type());
82 }
83 constexpr OSType type() const { return m_os; }
84 inline QString name() const { return name(*this); }
85
86protected:
88 QOperatingSystemVersionBase v2) noexcept;
89
91 const QOperatingSystemVersionBase &rhs) noexcept
92 {
93 if (lhs.type() != rhs.type())
94 return Qt::partial_ordering::unordered;
95 const int res = QOperatingSystemVersionBase::compare(lhs, rhs);
96 return Qt::compareThreeWay(res, 0);
97 }
98#ifdef __cpp_lib_three_way_comparison
99 friend std::partial_ordering
101 { return compareThreeWay(lhs, rhs); }
102#else
103 friend bool
106
107 friend bool
109 { return is_gteq(compareThreeWay(lhs, rhs)); }
110
111 friend bool
113 { return is_lt(compareThreeWay(lhs, rhs)); }
114
115 friend bool
117 { return is_lteq(compareThreeWay(lhs, rhs)); }
118#endif
119
121private:
122 static QOperatingSystemVersionBase current_impl();
123
124 OSType m_os;
125 int m_major;
126 int m_minor;
127 int m_micro;
128};
129
130#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) && !defined(Q_QDOC)
131class QOperatingSystemVersionUnexported : public QOperatingSystemVersionBase
132{
133public:
134 using QOperatingSystemVersionBase::QOperatingSystemVersionBase;
135 constexpr QOperatingSystemVersionUnexported(QOperatingSystemVersionBase other) noexcept
136 : QOperatingSystemVersionBase(other) {}
137#else
139{
140 using QOperatingSystemVersionUnexported = QOperatingSystemVersionBase;
141public:
142#endif
143
144 // ### Qt7: Regroup with the rest below
151
152#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) && !defined(Q_QDOC)
153};
154
156{
157#endif
158public:
159 // ### Qt7: Remove. Keep synchronized with QOperatingSystemVersionBase::OSType until then!
160#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
161 enum OSType {
162 Unknown = 0,
163 Windows,
164 MacOS,
165 IOS,
166 TvOS,
167 WatchOS,
168 Android,
169 VisionOS,
170 };
171#endif
172
173 // ### Qt7: remove the branch with static const variables. Then group and
174 // sort the inline ones. Until then, new entries should be added to
175 // QOperatingSystemVersionUnexported.
176#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
181
191
206#else
211
221
236#endif
237
249
253
255
257 : QOperatingSystemVersionUnexported(osversion) {}
258
259 constexpr QOperatingSystemVersion(OSType osType, int vmajor, int vminor = -1, int vmicro = -1)
260 : QOperatingSystemVersionUnexported(QOperatingSystemVersionBase::OSType(osType), vmajor, vminor,
261 vmicro)
262 {
263 }
264
265#if QT_CORE_REMOVED_SINCE(6, 3) || defined(Q_QDOC)
267#endif
268
269 static constexpr OSType currentType()
270 {
272 }
273
274#if QT_CORE_REMOVED_SINCE(6, 3) || defined(Q_QDOC)
276
277 constexpr int majorVersion() const { return QOperatingSystemVersionBase::majorVersion(); }
278 constexpr int minorVersion() const { return QOperatingSystemVersionBase::minorVersion(); }
279 constexpr int microVersion() const { return QOperatingSystemVersionBase::microVersion(); }
280
281 constexpr int segmentCount() const
283#endif // QT_CORE_REMOVED_SINCE(6, 3)
284
285 constexpr OSType type() const { return OSType(QOperatingSystemVersionBase::type()); }
286 QT7_ONLY(Q_CORE_EXPORT) bool isAnyOfType(std::initializer_list<OSType> types) const;
287#if QT_CORE_REMOVED_SINCE(6, 3) || defined(Q_QDOC)
288 QString name() const;
289#endif
290
291private:
292 QOperatingSystemVersion() = default;
293
294#if QT_CORE_REMOVED_SINCE(6, 3)
295 // ### Qt 7: Remove. It's only here for backwards compat with previous inline calls.
296 [[maybe_unused]] static int compare(const QOperatingSystemVersion &v1,
298#endif
299};
301
302#ifndef QT_NO_DEBUG_STREAM
303class QDebug;
304Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QOperatingSystemVersion &ov);
305#endif
306
307QT_END_NAMESPACE
308
309#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 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
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2568
static int compareVersionComponents(int lhs, int rhs) noexcept
Q_DECLARE_TYPEINFO(QOperatingSystemVersion, Q_PRIMITIVE_TYPE)