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>bb10
parent
88b5b1bce9
commit
ad755020e1
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue