From d017baac8993757c035d5ba2829e88e946c169cc Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Fri, 30 Oct 2020 15:23:52 +0100 Subject: Hide comparison operators for QtOpenGLVersion types from ADL Make hidden friends. Also add noexcept. No documentation to adjust. Fixes: QTBUG-87978 Change-Id: I6e757b7c37fb8aabdfd395ab057a84696104e640 Reviewed-by: Laszlo Agocs --- src/opengl/qopenglversionfunctions.h | 20 ++++++++++---------- src/opengl/qopenglversionprofile.h | 25 +++++++++++++------------ 2 files changed, 23 insertions(+), 22 deletions(-) (limited to 'src/opengl') diff --git a/src/opengl/qopenglversionfunctions.h b/src/opengl/qopenglversionfunctions.h index 274ed29c7c..445f293069 100644 --- a/src/opengl/qopenglversionfunctions.h +++ b/src/opengl/qopenglversionfunctions.h @@ -94,6 +94,16 @@ struct QOpenGLVersionStatus QPair version; OpenGLStatus status; + + friend constexpr bool operator==(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) noexcept + { + return lhs.status == rhs.status && lhs.version == rhs.version; + } + + friend constexpr bool operator!=(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) noexcept + { + return !(lhs == rhs); + } }; inline size_t qHash(const QOpenGLVersionStatus &v, size_t seed = 0) noexcept @@ -102,16 +112,6 @@ inline size_t qHash(const QOpenGLVersionStatus &v, size_t seed = 0) noexcept + v.version.first * 100 + v.version.second * 10, seed); } -constexpr inline bool operator==(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) -{ - return lhs.status == rhs.status && lhs.version == rhs.version; -} - -constexpr inline bool operator!=(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) -{ - return !operator==(lhs, rhs); -} - #define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args) \ ret (QOPENGLF_APIENTRYP name)args; #define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1 diff --git a/src/opengl/qopenglversionprofile.h b/src/opengl/qopenglversionprofile.h index 3ddd3dc8e9..e207548dd6 100644 --- a/src/opengl/qopenglversionprofile.h +++ b/src/opengl/qopenglversionprofile.h @@ -74,25 +74,26 @@ public: private: QOpenGLVersionProfilePrivate* d; + + friend bool operator==(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs) noexcept + { + if (lhs.profile() != rhs.profile()) + return false; + return lhs.version() == rhs.version(); + } + + friend bool operator!=(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs) noexcept + { + return !operator==(lhs, rhs); + } }; -inline size_t qHash(const QOpenGLVersionProfile &v, size_t seed = 0) +inline size_t qHash(const QOpenGLVersionProfile &v, size_t seed = 0) noexcept { return qHash(static_cast(v.profile() * 1000) + v.version().first * 100 + v.version().second * 10, seed); } -inline bool operator==(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs) -{ - if (lhs.profile() != rhs.profile()) - return false; - return lhs.version() == rhs.version(); -} - -inline bool operator!=(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs) -{ - return !operator==(lhs, rhs); -} #ifndef QT_NO_DEBUG_STREAM Q_OPENGL_EXPORT QDebug operator<<(QDebug debug, const QOpenGLVersionProfile &vp); -- cgit v1.2.3