summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-10-30 13:04:53 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-10-30 16:19:27 +0000
commit17848a667b30009f5b37769b5f7d9038f115579c (patch)
treeb7f11cf860cb13b53e42ce733fa20ead12f40082
parent8eabcc6170e81ee597d26ceefd73d803acdd5233 (diff)
Hide QTypeRevision comparison operators from ADL
Make them hidden friends, follow up on 72ccb4fa7b88243064867b23713384e14cef6087 which did the same for QVersionNumber. Also add [[nodiscard]]. The operators are not documented, so nothing to adjust. Adding documentation should be done in a separate commit. Task-number: QTBUG-87973 Change-Id: I65e889a2d0a222f3318b77965e84f3220f1542c7 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r--src/corelib/tools/qversionnumber.h92
1 files changed, 46 insertions, 46 deletions
diff --git a/src/corelib/tools/qversionnumber.h b/src/corelib/tools/qversionnumber.h
index dc34c12ca2..a026e40324 100644
--- a/src/corelib/tools/qversionnumber.h
+++ b/src/corelib/tools/qversionnumber.h
@@ -389,6 +389,52 @@ public:
return Integer(m_majorVersion << 8) | Integer(m_minorVersion);
}
+ [[nodiscard]] friend constexpr bool operator==(QTypeRevision lhs, QTypeRevision rhs)
+ {
+ return lhs.toEncodedVersion<quint16>() == rhs.toEncodedVersion<quint16>();
+ }
+
+ [[nodiscard]] friend constexpr bool operator!=(QTypeRevision lhs, QTypeRevision rhs)
+ {
+ return lhs.toEncodedVersion<quint16>() != rhs.toEncodedVersion<quint16>();
+ }
+
+ [[nodiscard]] friend constexpr bool operator<(QTypeRevision lhs, QTypeRevision rhs)
+ {
+ return (!lhs.hasMajorVersion() && rhs.hasMajorVersion())
+ // non-0 major > unspecified major > major 0
+ ? rhs.majorVersion() != 0
+ : ((lhs.hasMajorVersion() && !rhs.hasMajorVersion())
+ // major 0 < unspecified major < non-0 major
+ ? lhs.majorVersion() == 0
+ : (lhs.majorVersion() != rhs.majorVersion()
+ // both majors specified and non-0
+ ? lhs.majorVersion() < rhs.majorVersion()
+ : ((!lhs.hasMinorVersion() && rhs.hasMinorVersion())
+ // non-0 minor > unspecified minor > minor 0
+ ? rhs.minorVersion() != 0
+ : ((lhs.hasMinorVersion() && !rhs.hasMinorVersion())
+ // minor 0 < unspecified minor < non-0 minor
+ ? lhs.minorVersion() == 0
+ // both minors specified and non-0
+ : lhs.minorVersion() < rhs.minorVersion()))));
+ }
+
+ [[nodiscard]] friend constexpr bool operator>(QTypeRevision lhs, QTypeRevision rhs)
+ {
+ return lhs != rhs && !(lhs < rhs);
+ }
+
+ [[nodiscard]] friend constexpr bool operator<=(QTypeRevision lhs, QTypeRevision rhs)
+ {
+ return lhs == rhs || lhs < rhs;
+ }
+
+ [[nodiscard]] friend constexpr bool operator>=(QTypeRevision lhs, QTypeRevision rhs)
+ {
+ return lhs == rhs || !(lhs < rhs);
+ }
+
private:
enum { SegmentUnknown = 0xff };
@@ -407,52 +453,6 @@ private:
#endif
};
-inline constexpr bool operator==(QTypeRevision lhs, QTypeRevision rhs)
-{
- return lhs.toEncodedVersion<quint16>() == rhs.toEncodedVersion<quint16>();
-}
-
-inline constexpr bool operator!=(QTypeRevision lhs, QTypeRevision rhs)
-{
- return lhs.toEncodedVersion<quint16>() != rhs.toEncodedVersion<quint16>();
-}
-
-inline constexpr bool operator<(QTypeRevision lhs, QTypeRevision rhs)
-{
- return (!lhs.hasMajorVersion() && rhs.hasMajorVersion())
- // non-0 major > unspecified major > major 0
- ? rhs.majorVersion() != 0
- : ((lhs.hasMajorVersion() && !rhs.hasMajorVersion())
- // major 0 < unspecified major < non-0 major
- ? lhs.majorVersion() == 0
- : (lhs.majorVersion() != rhs.majorVersion()
- // both majors specified and non-0
- ? lhs.majorVersion() < rhs.majorVersion()
- : ((!lhs.hasMinorVersion() && rhs.hasMinorVersion())
- // non-0 minor > unspecified minor > minor 0
- ? rhs.minorVersion() != 0
- : ((lhs.hasMinorVersion() && !rhs.hasMinorVersion())
- // minor 0 < unspecified minor < non-0 minor
- ? lhs.minorVersion() == 0
- // both minors specified and non-0
- : lhs.minorVersion() < rhs.minorVersion()))));
-}
-
-inline constexpr bool operator>(QTypeRevision lhs, QTypeRevision rhs)
-{
- return lhs != rhs && !(lhs < rhs);
-}
-
-inline constexpr bool operator<=(QTypeRevision lhs, QTypeRevision rhs)
-{
- return lhs == rhs || lhs < rhs;
-}
-
-inline constexpr bool operator>=(QTypeRevision lhs, QTypeRevision rhs)
-{
- return lhs == rhs || !(lhs < rhs);
-}
-
static_assert(sizeof(QTypeRevision) == 2);
Q_DECLARE_TYPEINFO(QTypeRevision, Q_MOVABLE_TYPE);