diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2012-10-21 19:02:51 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-12-01 10:31:20 +0100 |
commit | 80ae1d2078d2fe137f8a88268c66440bf19bc1ba (patch) | |
tree | 20c1699488e3382fc4cd9f89ea0054bacf8520e3 /src/testlib/qsignalspy.h | |
parent | b32d7bc96d44d46781256e7ef9b4d1e09c18ed2e (diff) |
QSignalSpy: assorted improvements
- Add const
- Add explicit (only effect under C++11;
C++98 knows no multi-arg implicit conversions)
- Add Q_DECL_OVERRIDE to qt_metacall reimplementation
- Add reserve() calls on containers
- Change 'args' from QList to QVector for a 2x
memory reduction on 64bit platforms
Change-Id: If6c779dac0499d4ab64e5191d37596edf7341f76
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/testlib/qsignalspy.h')
-rw-r--r-- | src/testlib/qsignalspy.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index e26faeea18..b8e542a3c9 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -47,6 +47,7 @@ #include <QtCore/qobject.h> #include <QtCore/qmetaobject.h> #include <QtCore/qvariant.h> +#include <QtCore/qvector.h> #include <QtTest/qtesteventloop.h> QT_BEGIN_HEADER @@ -59,7 +60,7 @@ class QVariant; class QSignalSpy: public QObject, public QList<QList<QVariant> > { public: - QSignalSpy(QObject *obj, const char *aSignal) + explicit QSignalSpy(const QObject *obj, const char *aSignal) : m_waiting(false) { #ifdef Q_CC_BOR @@ -82,9 +83,9 @@ public: return; } - QByteArray ba = QMetaObject::normalizedSignature(aSignal + 1); - const QMetaObject *mo = obj->metaObject(); - int sigIndex = mo->indexOfMethod(ba.constData()); + 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; @@ -112,7 +113,7 @@ public: return count() > origCount; } - int qt_metacall(QMetaObject::Call call, int methodId, void **a) + int qt_metacall(QMetaObject::Call call, int methodId, void **a) Q_DECL_OVERRIDE { methodId = QObject::qt_metacall(call, methodId, a); if (methodId < 0) @@ -130,9 +131,10 @@ public: private: void initArgs(const QMetaMethod &member) { - QList<QByteArray> params = member.parameterTypes(); + const QList<QByteArray> params = member.parameterTypes(); + args.reserve(params.size()); for (int i = 0; i < params.count(); ++i) { - int tp = QMetaType::type(params.at(i).constData()); + const int tp = QMetaType::type(params.at(i).constData()); if (tp == QMetaType::UnknownType) { Q_ASSERT(tp != QMetaType::Void); // void parameter => metaobject is corrupt qWarning("Don't know how to handle '%s', use qRegisterMetaType to register it.", @@ -145,8 +147,9 @@ private: void appendArgs(void **a) { QList<QVariant> list; + list.reserve(args.count()); for (int i = 0; i < args.count(); ++i) { - QMetaType::Type type = static_cast<QMetaType::Type>(args.at(i)); + const QMetaType::Type type = static_cast<QMetaType::Type>(args.at(i)); if (type == QMetaType::QVariant) list << *reinterpret_cast<QVariant *>(a[i + 1]); else @@ -161,7 +164,7 @@ private: // the full, normalized signal name QByteArray sig; // holds the QMetaType types for the argument list of the signal - QList<int> args; + QVector<int> args; QTestEventLoop m_loop; bool m_waiting; |