diff options
-rw-r--r-- | src/corelib/kernel/qpointer.h | 62 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qmacclipboard.mm | 2 | ||||
-rw-r--r-- | tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp | 6 |
3 files changed, 26 insertions, 44 deletions
diff --git a/src/corelib/kernel/qpointer.h b/src/corelib/kernel/qpointer.h index ebc06a0fb1..30c7d923fd 100644 --- a/src/corelib/kernel/qpointer.h +++ b/src/corelib/kernel/qpointer.h @@ -89,49 +89,31 @@ public: inline void clear() { wp.clear(); } + +#define DECLARE_COMPARE_SET(T1, A1, T2, A2) \ + friend bool operator==(T1, T2) \ + { return A1 == A2; } \ + friend bool operator!=(T1, T2) \ + { return A1 != A2; } + +#define DECLARE_TEMPLATE_COMPARE_SET(T1, A1, T2, A2) \ + template <typename X> \ + friend bool operator==(T1, T2) noexcept \ + { return A1 == A2; } \ + template <typename X> \ + friend bool operator!=(T1, T2) noexcept \ + { return A1 != A2; } + + DECLARE_TEMPLATE_COMPARE_SET(const QPointer &p1, p1.data(), const QPointer<X> &p2, p2.data()) + DECLARE_TEMPLATE_COMPARE_SET(const QPointer &p1, p1.data(), X *ptr, ptr) + DECLARE_TEMPLATE_COMPARE_SET(X *ptr, ptr, const QPointer &p2, p2.data()) + DECLARE_COMPARE_SET(const QPointer &p1, p1.data(), std::nullptr_t, nullptr) + DECLARE_COMPARE_SET(std::nullptr_t, nullptr, const QPointer &p2, p2.data()) +#undef DECLARE_COMPARE_SET +#undef DECLARE_TEMPLATE_COMPARE_SET }; template <class T> Q_DECLARE_TYPEINFO_BODY(QPointer<T>, Q_MOVABLE_TYPE); -template <class T> -inline bool operator==(const T *o, const QPointer<T> &p) -{ return o == p.operator->(); } - -template<class T> -inline bool operator==(const QPointer<T> &p, const T *o) -{ return p.operator->() == o; } - -template <class T> -inline bool operator==(T *o, const QPointer<T> &p) -{ return o == p.operator->(); } - -template<class T> -inline bool operator==(const QPointer<T> &p, T *o) -{ return p.operator->() == o; } - -template<class T> -inline bool operator==(const QPointer<T> &p1, const QPointer<T> &p2) -{ return p1.operator->() == p2.operator->(); } - -template <class T> -inline bool operator!=(const T *o, const QPointer<T> &p) -{ return o != p.operator->(); } - -template<class T> -inline bool operator!= (const QPointer<T> &p, const T *o) -{ return p.operator->() != o; } - -template <class T> -inline bool operator!=(T *o, const QPointer<T> &p) -{ return o != p.operator->(); } - -template<class T> -inline bool operator!= (const QPointer<T> &p, T *o) -{ return p.operator->() != o; } - -template<class T> -inline bool operator!= (const QPointer<T> &p1, const QPointer<T> &p2) -{ return p1.operator->() != p2.operator->() ; } - template<typename T> QPointer<T> qPointerFromVariant(const QVariant &variant) diff --git a/src/plugins/platforms/cocoa/qmacclipboard.mm b/src/plugins/platforms/cocoa/qmacclipboard.mm index 8df4242e70..b35de35aa6 100644 --- a/src/plugins/platforms/cocoa/qmacclipboard.mm +++ b/src/plugins/platforms/cocoa/qmacclipboard.mm @@ -340,7 +340,7 @@ QMacPasteboard::setMimeData(QMimeData *mime_src, DataRequestType dataRequestType mime = mime_src; QList<QMacInternalPasteboardMime*> availableConverters = QMacInternalPasteboardMime::all(mime_type); - if (mime != 0) { + if (mime != nullptr) { clear_helper(); QStringList formats = mime_src->formats(); diff --git a/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp b/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp index 4defd0da27..52a17bd2ea 100644 --- a/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp +++ b/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp @@ -708,14 +708,14 @@ void tst_QTextCursor::checkFrame1() { QCOMPARE(cursor.position(), 0); QPointer<QTextFrame> frame = cursor.insertFrame(QTextFrameFormat()); - QVERIFY(frame != 0); + QVERIFY(frame != nullptr); QTextFrame *root = frame->parentFrame(); - QVERIFY(root != 0); + QVERIFY(root != nullptr); QCOMPARE(frame->firstPosition(), 1); QCOMPARE(frame->lastPosition(), 1); - QVERIFY(frame->parentFrame() != 0); + QVERIFY(frame->parentFrame() != nullptr); QCOMPARE(root->childFrames().size(), 1); QCOMPARE(cursor.position(), 1); |