summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2012-10-21 19:02:51 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-12-01 10:31:20 +0100
commit80ae1d2078d2fe137f8a88268c66440bf19bc1ba (patch)
tree20c1699488e3382fc4cd9f89ea0054bacf8520e3 /src
parentb32d7bc96d44d46781256e7ef9b4d1e09c18ed2e (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')
-rw-r--r--src/testlib/qsignalspy.h21
-rw-r--r--src/testlib/qsignalspy.qdoc2
2 files changed, 13 insertions, 10 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;
diff --git a/src/testlib/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc
index 1b73ccdeb7..30ab7c8b55 100644
--- a/src/testlib/qsignalspy.qdoc
+++ b/src/testlib/qsignalspy.qdoc
@@ -59,7 +59,7 @@
\snippet code/doc_src_qsignalspy.cpp 3
*/
-/*! \fn QSignalSpy::QSignalSpy(QObject *object, const char *signal)
+/*! \fn QSignalSpy::QSignalSpy(const QObject *object, const char *signal)
Constructs a new QSignalSpy that listens for emissions of the \a signal
from the QObject \a object. If QSignalSpy is not able to listen for a