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 :)
38
40 int vmajor, int vminor = -1, int vmicro = -1)
41 : m_os(osType),
42 m_major(vmajor),
43 m_minor(vminor),
44 m_micro(vmicro)
45 { }
46
47 static Q_CORE_EXPORT QOperatingSystemVersionBase current();
48 static Q_CORE_EXPORT QString name(QOperatingSystemVersionBase osversion);
49 static Q_CORE_EXPORT bool isAnyOfType(std::initializer_list<OSType> types, OSType type);
50
51 static constexpr OSType currentType()
52 {
53#if defined(Q_OS_WIN)
54 return Windows;
55#elif defined(Q_OS_MACOS)
56 return MacOS;
57#elif defined(Q_OS_IOS)
58 return IOS;
59#elif defined(Q_OS_TVOS)
60 return TvOS;
61#elif defined(Q_OS_WATCHOS)
62 return WatchOS;
63#elif defined(Q_OS_VISIONOS)
64 return VisionOS;
65#elif defined(Q_OS_ANDROID)
66 return Android;
67#elif defined(Q_OS_OHOS)
68 return OHOS;
69#else
70 return Unknown;
71#endif
72 }
73
74 inline QVersionNumber version() const { return QVersionNumber(m_major, m_minor, m_micro); }
75
76 constexpr int majorVersion() const { return m_major; }
77 constexpr int minorVersion() const { return m_minor; }
78 constexpr int microVersion() const { return m_micro; }
79
80 constexpr int segmentCount() const
81 { return m_micro >= 0 ? 3 : m_minor >= 0 ? 2 : m_major >= 0 ? 1 : 0; }
82
83 inline bool isAnyOfType(std::initializer_list<OSType> types) const
84 {
85 return QOperatingSystemVersionBase::isAnyOfType(types, type());
86 }
87 constexpr OSType type() const { return m_os; }
88 inline QString name() const { return name(*this); }
89
90protected:
92 QOperatingSystemVersionBase v2) noexcept;
93
95 const QOperatingSystemVersionBase &rhs) noexcept
96 {
97 if (lhs.type() != rhs.type())
98 return Qt::partial_ordering::unordered;
99 const int res = QOperatingSystemVersionBase::compare(lhs, rhs);
100 return Qt::compareThreeWay(res, 0);
101 }
102#ifdef __cpp_lib_three_way_comparison
103 friend std::partial_ordering
105 { return compareThreeWay(lhs, rhs); }
106#else
107 friend bool
110
111 friend bool
113 { return is_gteq(compareThreeWay(lhs, rhs)); }
114
115 friend bool
117 { return is_lt(compareThreeWay(lhs, rhs)); }
118
119 friend bool
121 { return is_lteq(compareThreeWay(lhs, rhs)); }
122#endif
123
125private:
126 static QOperatingSystemVersionBase current_impl();
127
128 OSType m_os;
129 int m_major;
130 int m_minor;
131 int m_micro;
132};
133
134#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) && !defined(Q_QDOC)
135class QOperatingSystemVersionUnexported : public QOperatingSystemVersionBase
136{
137public:
138 using QOperatingSystemVersionBase::QOperatingSystemVersionBase;
139 constexpr QOperatingSystemVersionUnexported(QOperatingSystemVersionBase other) noexcept
140 : QOperatingSystemVersionBase(other) {}
141#else
143{
144 using QOperatingSystemVersionUnexported = QOperatingSystemVersionBase;
145public:
146#endif
147
148 // ### Qt7: Regroup with the rest below
157
158#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) && !defined(Q_QDOC)
159};
160
162{
163#endif
164public:
165 // ### Qt7: Remove. Keep synchronized with QOperatingSystemVersionBase::OSType until then!
166#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
167 enum OSType {
168 Unknown = 0,
169 Windows,
170 MacOS,
171 IOS,
172 TvOS,
173 WatchOS,
174 Android,
175 VisionOS,
176 OHOS,
177 };
178#endif
179
180 // ### Qt7: remove the branch with static const variables. Then group and
181 // sort the inline ones. Until then, new entries should be added to
182 // QOperatingSystemVersionUnexported.
183#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
188
198
213#else
218
228
243#endif
244
256
260
262
264 : QOperatingSystemVersionUnexported(osversion) {}
265
266 constexpr QOperatingSystemVersion(OSType osType, int vmajor, int vminor = -1, int vmicro = -1)
267 : QOperatingSystemVersionUnexported(QOperatingSystemVersionBase::OSType(osType), vmajor, vminor,
268 vmicro)
269 {
270 }
271
272 QT_CORE_INLINE_SINCE(6, 3)
274
275 static constexpr OSType currentType()
276 {
278 }
279
280#if QT_CORE_REMOVED_SINCE(6, 3) || defined(Q_QDOC)
282
283 constexpr int majorVersion() const { return QOperatingSystemVersionBase::majorVersion(); }
284 constexpr int minorVersion() const { return QOperatingSystemVersionBase::minorVersion(); }
285 constexpr int microVersion() const { return QOperatingSystemVersionBase::microVersion(); }
286
287 constexpr int segmentCount() const
289#endif // QT_CORE_REMOVED_SINCE(6, 3)
290
291 constexpr OSType type() const { return OSType(QOperatingSystemVersionBase::type()); }
292 QT7_ONLY(Q_CORE_EXPORT) bool isAnyOfType(std::initializer_list<OSType> types) const;
293#if QT_CORE_REMOVED_SINCE(6, 3) || defined(Q_QDOC)
294 QString name() const;
295#endif
296
297private:
298 QOperatingSystemVersion() = default;
299
300#if QT_CORE_REMOVED_SINCE(6, 3)
301 // ### Qt 7: Remove. It's only here for backwards compat with previous inline calls.
302 [[maybe_unused]] static int compare(const QOperatingSystemVersion &v1,
304#endif
305};
307
308#ifndef QT_NO_DEBUG_STREAM
309class QDebug;
310Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QOperatingSystemVersion &ov);
311#endif
312
313#if QT_CORE_INLINE_IMPL_SINCE(6, 3)
314QOperatingSystemVersion QOperatingSystemVersion::current()
315{
316 return QOperatingSystemVersionBase::current();
317}
318#endif // QT_CORE_INLINE_IMPL_SINCE(6, 3)
319
320QT_END_NAMESPACE
321
322#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 MacOSGoldenGate
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:2598
static int compareVersionComponents(int lhs, int rhs) noexcept
Q_DECLARE_TYPEINFO(QOperatingSystemVersion, Q_PRIMITIVE_TYPE)