diff options
author | Marc Mutz <marc.mutz@qt.io> | 2024-03-21 17:21:19 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2024-04-24 21:36:49 +0200 |
commit | ad755020e103b7d3c4f66173c74cf80f6bca3144 (patch) | |
tree | 74ce099673bb71290e74b505981747177808fe9d /src | |
parent | 88b5b1bce978c0e1a67e66561b65251439fe4281 (diff) |
QSignalSpy: de-inline verify() helper functions
Now that we're moving the code anyway, also move their declarations
into the general private: section of the class.
Task-number: QTBUG-123544
Change-Id: I6b1e7006b73b710daa4b511b2fd643293a3d4844
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/testlib/qsignalspy.cpp | 34 | ||||
-rw-r--r-- | src/testlib/qsignalspy.h | 43 |
2 files changed, 37 insertions, 40 deletions
diff --git a/src/testlib/qsignalspy.cpp b/src/testlib/qsignalspy.cpp index 3de14e16da..a60946b7c1 100644 --- a/src/testlib/qsignalspy.cpp +++ b/src/testlib/qsignalspy.cpp @@ -172,6 +172,40 @@ bool QSignalSpy::isObjectValid(const QObject *object) return valid; } +QSignalSpy::ObjectSignal QSignalSpy::verify(const QObject *obj, const char *aSignal) +{ + if (!isObjectValid(obj)) + return {}; + + if (!aSignal) { + qWarning("QSignalSpy: Null signal name is not valid"); + return {}; + } + + if (((aSignal[0] - '0') & 0x03) != QSIGNAL_CODE) { + qWarning("QSignalSpy: Not a valid signal, use the SIGNAL macro"); + return {}; + } + + const QByteArray ba = QMetaObject::normalizedSignature(aSignal + 1); + const QMetaObject * const mo = obj->metaObject(); + const int sigIndex = mo->indexOfMethod(ba.constData()); + if (sigIndex < 0) { + qWarning("QSignalSpy: No such signal: '%s'", ba.constData()); + return {}; + } + + return verify(obj, mo->method(sigIndex)); +} + +QSignalSpy::ObjectSignal QSignalSpy::verify(const QObject *obj, QMetaMethod signal) +{ + if (isObjectValid(obj) && isSignalMetaMethodValid(signal)) + return {obj, signal}; + else + return {}; +} + void QSignalSpy::initArgs(const QMetaMethod &member, const QObject *obj) { QMutexLocker locker(&m_mutex); diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index 7ae58ba82b..073e5aa8c0 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -27,35 +27,6 @@ class QSignalSpy: public QObject, public QList<QList<QVariant> > public: explicit QSignalSpy(const QObject *obj, const char *aSignal) : QSignalSpy(verify(obj, aSignal)) {} - -private: - static ObjectSignal verify(const QObject *obj, const char *aSignal) - { - if (!isObjectValid(obj)) - return {}; - - if (!aSignal) { - qWarning("QSignalSpy: Null signal name is not valid"); - return {}; - } - - if (((aSignal[0] - '0') & 0x03) != QSIGNAL_CODE) { - qWarning("QSignalSpy: Not a valid signal, use the SIGNAL macro"); - return {}; - } - - const QByteArray ba = QMetaObject::normalizedSignature(aSignal + 1); - const QMetaObject * const mo = obj->metaObject(); - const int sigIndex = mo->indexOfMethod(ba.constData()); - if (sigIndex < 0) { - qWarning("QSignalSpy: No such signal: '%s'", ba.constData()); - return {}; - } - - return verify(obj, mo->method(sigIndex)); - } - -public: #ifdef Q_QDOC template <typename PointerToMemberFunction> QSignalSpy(const QObject *object, PointerToMemberFunction signal); @@ -64,20 +35,9 @@ public: QSignalSpy(const typename QtPrivate::FunctionPointer<Func>::Object *obj, Func signal0) : QSignalSpy(verify(obj, QMetaMethod::fromSignal(signal0))) {} #endif // Q_QDOC - QSignalSpy(const QObject *obj, QMetaMethod signal) : QSignalSpy(verify(obj, signal)) {} -private: - static ObjectSignal verify(const QObject *obj, QMetaMethod signal) - { - if (isObjectValid(obj) && isSignalMetaMethodValid(signal)) - return {obj, signal}; - else - return {}; - } - -public: inline bool isValid() const { return !sig.isEmpty(); } inline QByteArray signal() const { return sig; } @@ -127,6 +87,9 @@ private: } + Q_TESTLIB_EXPORT static ObjectSignal verify(const QObject *obj, QMetaMethod signal); + Q_TESTLIB_EXPORT static ObjectSignal verify(const QObject *obj, const char *aSignal); + Q_TESTLIB_EXPORT bool connectToSignal(const QObject *sender, int sigIndex); Q_TESTLIB_EXPORT static bool isSignalMetaMethodValid(const QMetaMethod &signal); |