From 79b742b7e01ba5fa46b45578660d0e1f9ce0dae6 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 20 Jul 2012 10:56:54 +0200 Subject: QtNetwork: use nullary version of qRegisterMetaType("T") Using the nullary version has the advantage that multiple calls during a program run are much more efficient, since an inlined atomic is used to store the result. It also ensures that Q_DECLARE_METATYPE(T) has been used, whereas qRegisterMetaType("T") will happily register anything. So I've added the macro where it was missing, or moved it to a central place when it existed hidden. In tst_qnetworkreply, this became a bit tricky, because a private header is conditionally included, so moved the Q_DECLARE_METATYPE() into a conditional section, too. Change-Id: I71484523e4277f4697b7d4b2ddc3505375162727 Reviewed-by: Stephen Kelly --- src/network/access/qhttpnetworkconnectionchannel.cpp | 2 +- src/network/access/qhttpnetworkrequest_p.h | 2 ++ src/network/access/qnetworkaccessmanager.cpp | 16 ++++++++-------- src/network/access/qnetworkreply.h | 2 ++ src/network/access/qnetworkreplyhttpimpl.cpp | 2 -- src/network/access/qnetworkreplyimpl.cpp | 4 +--- src/network/access/qnetworkreplyimpl_p.h | 2 ++ src/network/bearer/qnetworkconfigmanager_p.cpp | 4 ++-- src/network/bearer/qnetworkconfiguration.h | 3 +++ src/network/bearer/qnetworkconfiguration_p.h | 2 ++ src/network/kernel/qhostinfo.cpp | 2 +- src/network/kernel/qhostinfo.h | 2 ++ src/network/kernel/qnetworkproxy.h | 2 ++ src/network/socket/qabstractsocket.h | 3 +++ src/network/ssl/qsslcertificate.h | 2 ++ src/network/ssl/qsslconfiguration.h | 2 ++ src/network/ssl/qsslsocket_openssl.cpp | 4 ---- src/plugins/bearer/qbearerengine_impl.h | 2 ++ src/plugins/bearer/qnetworksession_impl.cpp | 4 ++-- tests/auto/network/access/qftp/tst_qftp.cpp | 4 ---- .../tst_qhttpnetworkconnection.cpp | 1 - .../network/access/qnetworkreply/tst_qnetworkreply.cpp | 10 +++------- .../bearer/qnetworksession/test/tst_qnetworksession.cpp | 1 - .../qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp | 3 --- tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp | 2 -- tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp | 5 ----- tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 3 --- .../network/socket/qtcpserver/tst_qtcpserver.cpp | 2 -- tests/manual/bearerex/bearerex.cpp | 2 -- 29 files changed, 42 insertions(+), 53 deletions(-) diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 9cbdcd65bd..be2be048bc 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -125,7 +125,7 @@ void QHttpNetworkConnectionChannel::init() // will then emit a signal to the user of QNetworkReply // but cannot be caught because the user did not have a chance yet // to connect to QNetworkReply's signals. - qRegisterMetaType("QAbstractSocket::SocketError"); + qRegisterMetaType(); QObject::connect(socket, SIGNAL(disconnected()), this, SLOT(_q_disconnected()), Qt::QueuedConnection); diff --git a/src/network/access/qhttpnetworkrequest_p.h b/src/network/access/qhttpnetworkrequest_p.h index d6d9c69bea..1ae6015d8d 100644 --- a/src/network/access/qhttpnetworkrequest_p.h +++ b/src/network/access/qhttpnetworkrequest_p.h @@ -155,6 +155,8 @@ public: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QHttpNetworkRequest) + #endif // QT_NO_HTTP diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index d5b4eec0ed..dd7bfe1bfc 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -407,20 +407,20 @@ QNetworkAccessManager::QNetworkAccessManager(QObject *parent) { ensureInitialized(); - qRegisterMetaType("QNetworkReply::NetworkError"); + qRegisterMetaType(); #ifndef QT_NO_NETWORKPROXY - qRegisterMetaType("QNetworkProxy"); + qRegisterMetaType(); #endif #ifndef QT_NO_SSL - qRegisterMetaType >("QList"); - qRegisterMetaType("QSslConfiguration"); + qRegisterMetaType >(); + qRegisterMetaType(); #endif - qRegisterMetaType > >("QList >"); + qRegisterMetaType > >(); #ifndef QT_NO_HTTP - qRegisterMetaType("QHttpNetworkRequest"); + qRegisterMetaType(); #endif - qRegisterMetaType("QNetworkReply::NetworkError"); - qRegisterMetaType >("QSharedPointer"); + qRegisterMetaType(); + qRegisterMetaType >(); } /*! diff --git a/src/network/access/qnetworkreply.h b/src/network/access/qnetworkreply.h index cc3a41af4e..f6327fd012 100644 --- a/src/network/access/qnetworkreply.h +++ b/src/network/access/qnetworkreply.h @@ -180,6 +180,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkReply::NetworkError) + QT_END_HEADER #endif diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 088442d62d..44129c6bb2 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -63,8 +63,6 @@ #include // for strchr -Q_DECLARE_METATYPE(QSharedPointer) - QT_BEGIN_NAMESPACE class QNetworkProxy; diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index d0393475de..6d5c9b2ce3 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -52,8 +52,6 @@ #include -Q_DECLARE_METATYPE(QSharedPointer) - QT_BEGIN_NAMESPACE inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate() @@ -1134,7 +1132,7 @@ QDisabledNetworkReply::QDisabledNetworkReply(QObject *parent, setUrl(req.url()); setOperation(op); - qRegisterMetaType("QNetworkReply::NetworkError"); + qRegisterMetaType(); QString msg = QCoreApplication::translate("QNetworkAccessManager", "Network access is disabled."); diff --git a/src/network/access/qnetworkreplyimpl_p.h b/src/network/access/qnetworkreplyimpl_p.h index a4c1f73b06..a3705f72d3 100644 --- a/src/network/access/qnetworkreplyimpl_p.h +++ b/src/network/access/qnetworkreplyimpl_p.h @@ -239,4 +239,6 @@ protected: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QSharedPointer) + #endif diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp index e44b6897ed..c501280014 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.cpp +++ b/src/network/bearer/qnetworkconfigmanager_p.cpp @@ -62,8 +62,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate() : QObject(), pollTimer(0), mutex(QMutex::Recursive), forcedPolling(0), firstUpdate(true) { - qRegisterMetaType("QNetworkConfiguration"); - qRegisterMetaType("QNetworkConfigurationPrivatePointer"); + qRegisterMetaType(); + qRegisterMetaType(); } void QNetworkConfigurationManagerPrivate::initialize() diff --git a/src/network/bearer/qnetworkconfiguration.h b/src/network/bearer/qnetworkconfiguration.h index 807589cf45..207b50379b 100644 --- a/src/network/bearer/qnetworkconfiguration.h +++ b/src/network/bearer/qnetworkconfiguration.h @@ -47,6 +47,7 @@ #include #include #include +#include QT_BEGIN_HEADER @@ -125,6 +126,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkConfiguration) + QT_END_HEADER #endif // QNETWORKCONFIGURATION_H diff --git a/src/network/bearer/qnetworkconfiguration_p.h b/src/network/bearer/qnetworkconfiguration_p.h index 47174a1eab..e47ef613e5 100644 --- a/src/network/bearer/qnetworkconfiguration_p.h +++ b/src/network/bearer/qnetworkconfiguration_p.h @@ -99,4 +99,6 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkConfigurationPrivatePointer) + #endif // QNETWORKCONFIGURATIONPRIVATE_H diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 32cf90145c..21ce2bac9a 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -159,7 +159,7 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver, return -1; } - qRegisterMetaType("QHostInfo"); + qRegisterMetaType(); int id = theIdCounter.fetchAndAddRelaxed(1); // generate unique ID diff --git a/src/network/kernel/qhostinfo.h b/src/network/kernel/qhostinfo.h index 2fc87f3bdc..602d4dad75 100644 --- a/src/network/kernel/qhostinfo.h +++ b/src/network/kernel/qhostinfo.h @@ -96,6 +96,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QHostInfo) + QT_END_HEADER #endif // QHOSTINFO_H diff --git a/src/network/kernel/qnetworkproxy.h b/src/network/kernel/qnetworkproxy.h index 5287546849..2954ad3d71 100644 --- a/src/network/kernel/qnetworkproxy.h +++ b/src/network/kernel/qnetworkproxy.h @@ -215,6 +215,8 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxy &proxy); QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkProxy) + QT_END_HEADER #endif // QT_NO_NETWORKPROXY diff --git a/src/network/socket/qabstractsocket.h b/src/network/socket/qabstractsocket.h index dedde9649a..c384336b11 100644 --- a/src/network/socket/qabstractsocket.h +++ b/src/network/socket/qabstractsocket.h @@ -238,6 +238,9 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug, QAbstractSocket::SocketState); QT_END_NAMESPACE +Q_DECLARE_METATYPE(QAbstractSocket::SocketState) +Q_DECLARE_METATYPE(QAbstractSocket::SocketError) + QT_END_HEADER #endif // QABSTRACTSOCKET_H diff --git a/src/network/ssl/qsslcertificate.h b/src/network/ssl/qsslcertificate.h index a0ec195b6a..08df58bae8 100644 --- a/src/network/ssl/qsslcertificate.h +++ b/src/network/ssl/qsslcertificate.h @@ -158,6 +158,8 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, QSslCertificate::SubjectInfo in QT_END_NAMESPACE +Q_DECLARE_METATYPE(QSslCertificate) + QT_END_HEADER #endif diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h index d57ba38561..dea32f837c 100644 --- a/src/network/ssl/qsslconfiguration.h +++ b/src/network/ssl/qsslconfiguration.h @@ -138,6 +138,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QSslConfiguration) + QT_END_HEADER #endif diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 83071f2c7a..a23e3fa377 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -60,10 +60,6 @@ #include #include // for loading the security lib for the CA store -#ifdef Q_OS_WIN -Q_DECLARE_METATYPE(QSslCertificate); -#endif - QT_BEGIN_NAMESPACE #if defined(Q_OS_MAC) && !defined(Q_OS_IOS) diff --git a/src/plugins/bearer/qbearerengine_impl.h b/src/plugins/bearer/qbearerengine_impl.h index aa4433115e..7c17d8d090 100644 --- a/src/plugins/bearer/qbearerengine_impl.h +++ b/src/plugins/bearer/qbearerengine_impl.h @@ -80,6 +80,8 @@ Q_SIGNALS: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QBearerEngineImpl::ConnectionError) + #endif // QT_NO_BEARERMANAGEMENT #endif // QBEARERENGINE_IMPL_H diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp index 31cea0bfc3..bea881fa25 100644 --- a/src/plugins/bearer/qnetworksession_impl.cpp +++ b/src/plugins/bearer/qnetworksession_impl.cpp @@ -96,14 +96,14 @@ void QNetworkSessionPrivateImpl::syncStateWithInterface() state = QNetworkSession::Invalid; lastError = QNetworkSession::UnknownSessionError; - qRegisterMetaType("QBearerEngineImpl::ConnectionError"); + qRegisterMetaType(); switch (publicConfig.type()) { case QNetworkConfiguration::InternetAccessPoint: activeConfig = publicConfig; engine = getEngineFromId(activeConfig.identifier()); if (engine) { - qRegisterMetaType("QNetworkConfigurationPrivatePointer"); + qRegisterMetaType(); connect(engine, SIGNAL(configurationChanged(QNetworkConfigurationPrivatePointer)), this, SLOT(configurationChanged(QNetworkConfigurationPrivatePointer)), Qt::QueuedConnection); diff --git a/tests/auto/network/access/qftp/tst_qftp.cpp b/tests/auto/network/access/qftp/tst_qftp.cpp index fb898c4b89..d35173298c 100644 --- a/tests/auto/network/access/qftp/tst_qftp.cpp +++ b/tests/auto/network/access/qftp/tst_qftp.cpp @@ -57,10 +57,6 @@ #include "../../../network-settings.h" -#ifndef QT_NO_BEARERMANAGEMENT -Q_DECLARE_METATYPE(QNetworkConfiguration) -#endif - class tst_QFtp : public QObject { Q_OBJECT diff --git a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp index f9f3b26898..8de5174739 100644 --- a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp +++ b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp @@ -746,7 +746,6 @@ void tst_QHttpNetworkConnection::ignoresslerror() #endif #ifdef QT_NO_SSL -Q_DECLARE_METATYPE(QNetworkReply::NetworkError) void tst_QHttpNetworkConnection::nossl_data() { QTest::addColumn("protocol"); diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index 9b43185384..a7ac2661d5 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -78,7 +78,10 @@ #include #endif #ifdef QT_BUILD_INTERNAL +#include // implicitly included by qnetworkaccessmanager_p.h currently, but don't rely on that being true forever #include +#else +Q_DECLARE_METATYPE(QSharedPointer) #endif #ifdef Q_OS_UNIX @@ -89,19 +92,12 @@ #include "../../../network-settings.h" -Q_DECLARE_METATYPE(QSharedPointer) Q_DECLARE_METATYPE(QNetworkReply*) Q_DECLARE_METATYPE(QAuthenticator*) -Q_DECLARE_METATYPE(QNetworkProxy) Q_DECLARE_METATYPE(QNetworkProxyQuery) -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QNetworkReply::NetworkError) Q_DECLARE_METATYPE(QBuffer*) Q_DECLARE_METATYPE(QHttpMultiPart *) Q_DECLARE_METATYPE(QList) // for multiparts -#ifndef QT_NO_SSL -Q_DECLARE_METATYPE(QSslConfiguration) -#endif typedef QSharedPointer QNetworkReplyPtr; diff --git a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp index 5980e5fbdc..0ed1dfc8cd 100644 --- a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp +++ b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp @@ -57,7 +57,6 @@ QT_USE_NAMESPACE //#define QNETWORKSESSION_MANUAL_TESTS 1 #ifndef QT_NO_BEARERMANAGEMENT -Q_DECLARE_METATYPE(QNetworkConfiguration) Q_DECLARE_METATYPE(QNetworkConfiguration::Type) #endif diff --git a/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp index c32699f224..265c0fecbb 100644 --- a/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp +++ b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp @@ -55,9 +55,6 @@ #include #include -Q_DECLARE_METATYPE(QNetworkConfiguration); -Q_DECLARE_METATYPE(QList); - #include class tst_QNetworkProxyFactory : public QObject { diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp index afda020d4d..874bd137c0 100644 --- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp +++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp @@ -68,8 +68,6 @@ #include #include -Q_DECLARE_METATYPE(QNetworkProxy) -Q_DECLARE_METATYPE(QList) #include #include diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp index e214107b28..d8df5d344d 100644 --- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp +++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp @@ -92,11 +92,6 @@ #include "../../../network-settings.h" -Q_DECLARE_METATYPE(QAbstractSocket::SocketError) -Q_DECLARE_METATYPE(QAbstractSocket::SocketState) -Q_DECLARE_METATYPE(QNetworkProxy) -Q_DECLARE_METATYPE(QList) - QT_FORWARD_DECLARE_CLASS(QTcpSocket) class SocketPair; diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index 22ce512cf9..725dc2a653 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -63,15 +63,12 @@ #include "../../../network-settings.h" -Q_DECLARE_METATYPE(QAbstractSocket::SocketState) -Q_DECLARE_METATYPE(QAbstractSocket::SocketError) #ifndef QT_NO_SSL Q_DECLARE_METATYPE(QSslSocket::SslMode) typedef QList SslErrorList; Q_DECLARE_METATYPE(SslErrorList) Q_DECLARE_METATYPE(QSslError) Q_DECLARE_METATYPE(QSsl::SslProtocol) -Q_DECLARE_METATYPE(QSslConfiguration) #endif #if defined Q_OS_HPUX && defined Q_CC_GNU diff --git a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp index 2bb23e5781..7391976633 100644 --- a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp +++ b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp @@ -51,8 +51,6 @@ #include #include -Q_DECLARE_METATYPE(QNetworkProxy) -Q_DECLARE_METATYPE(QList) #include "../../../../auto/network-settings.h" diff --git a/tests/manual/bearerex/bearerex.cpp b/tests/manual/bearerex/bearerex.cpp index 14533638d8..d23d7d43f0 100644 --- a/tests/manual/bearerex/bearerex.cpp +++ b/tests/manual/bearerex/bearerex.cpp @@ -45,8 +45,6 @@ #include #include -Q_DECLARE_METATYPE(QNetworkConfiguration) - BearerEx::BearerEx(QWidget* parent) : QMainWindow(parent) { -- cgit v1.2.3