From 35b0ecf5da40feac0e7b43d928b60402d75d95d1 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Fri, 4 Mar 2016 10:51:12 +0300 Subject: QtNetwork: replace Java-style iterators ... with STL-style iterators or with algorithms. Java-style iterators have overhead. Introduce local template separate_if algorithm from kleopatra project to simplify current code. http://api.kde.org/4.3-api/kdepim-apidocs/kleopatra/html Done-with: Marc Mutz Change-Id: Ib154f80f46f8041d9cafd81bed0e1982b21541cf Reviewed-by: Edward Welbourne Reviewed-by: Marc Mutz --- src/network/bearer/qnetworkconfiguration.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/network/bearer') diff --git a/src/network/bearer/qnetworkconfiguration.cpp b/src/network/bearer/qnetworkconfiguration.cpp index 3a0feb7d13..533a27357c 100644 --- a/src/network/bearer/qnetworkconfiguration.cpp +++ b/src/network/bearer/qnetworkconfiguration.cpp @@ -384,25 +384,21 @@ QList QNetworkConfiguration::children() const if (d->type != QNetworkConfiguration::ServiceNetwork || !d->isValid) return results; - QMutableMapIterator i(d->serviceNetworkMembers); - while (i.hasNext()) { - i.next(); - - QNetworkConfigurationPrivatePointer p = i.value(); - + for (auto it = d->serviceNetworkMembers.begin(), end = d->serviceNetworkMembers.end(); it != end;) { + QNetworkConfigurationPrivatePointer p = it.value(); //if we have an invalid member get rid of it -> was deleted earlier on { QMutexLocker childLocker(&p->mutex); if (!p->isValid) { - i.remove(); + it = d->serviceNetworkMembers.erase(it); continue; } } - QNetworkConfiguration item; item.d = p; results << item; + ++it; } return results; -- cgit v1.2.3 From 036b40403260c4b5de256e8118a90ec04538a312 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 26 Jan 2016 14:38:54 +0100 Subject: QtNetwork: eradicate Q_FOREACH loops [already const] ... (or trivially marked const) local variables or parameters, by replacing them with C++11 range-for loops. Also ported one indexed loop. Change-Id: Idddcac48ce7527b1ea674671ceb9aaf4d31fb42e Reviewed-by: Lars Knoll --- src/network/bearer/qnetworkconfigmanager_p.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/network/bearer') diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp index f2a79319a1..e9bf99628c 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.cpp +++ b/src/network/bearer/qnetworkconfigmanager_p.cpp @@ -100,7 +100,7 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::defaultConfiguration( { QMutexLocker locker(&mutex); - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : sessionEngines) { QNetworkConfigurationPrivatePointer ptr = engine->defaultConfiguration(); if (ptr) { QNetworkConfiguration config; @@ -114,7 +114,7 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::defaultConfiguration( // Return first active snap QNetworkConfigurationPrivatePointer defaultConfiguration; - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : sessionEngines) { QHash::Iterator it; QHash::Iterator end; @@ -156,7 +156,7 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::defaultConfiguration( 6. Discovered Other */ - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : sessionEngines) { QHash::Iterator it; QHash::Iterator end; @@ -219,7 +219,7 @@ QList QNetworkConfigurationManagerPrivate::allConfigurati QMutexLocker locker(&mutex); - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : sessionEngines) { QHash::Iterator it; QHash::Iterator end; @@ -263,7 +263,7 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::configurationFromIden QMutexLocker locker(&mutex); - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : sessionEngines) { QMutexLocker locker(&engine->mutex); if (auto ptr = engine->accessPointConfigurations.value(identifier)) { item.d = std::move(ptr); @@ -297,7 +297,7 @@ QNetworkConfigurationManager::Capabilities QNetworkConfigurationManagerPrivate:: QNetworkConfigurationManager::Capabilities capFlags; - foreach (QBearerEngine *engine, sessionEngines) + for (QBearerEngine *engine : sessionEngines) capFlags |= engine->capabilities(); return capFlags; @@ -442,11 +442,10 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations() if (firstUpdate) { firstUpdate = false; - QList enginesToInitialize = sessionEngines; //shallow copy the list in case it is modified when we unlock mutex + const QList enginesToInitialize = sessionEngines; //shallow copy the list in case it is modified when we unlock mutex locker.unlock(); - foreach (QBearerEngine* engine, enginesToInitialize) { + for (QBearerEngine* engine : enginesToInitialize) QMetaObject::invokeMethod(engine, "initialize", Qt::BlockingQueuedConnection); - } } } -- cgit v1.2.3 From bac6da10dd043a413c1480028b70ac35ff0e0dfe Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 26 Jan 2016 14:38:54 +0100 Subject: QtNetwork: eradicate Q_FOREACH loops [needing qAsConst()] ... by replacing them with C++11 range-for loops. To avoid detaches of these mutable Qt containers, wrap the container in qAsConst(). Change-Id: I47c5308a6ad220b4c5495e55a3b0d38547bfa8d9 Reviewed-by: Lars Knoll --- src/network/bearer/qnetworkconfigmanager_p.cpp | 32 ++++++-------------------- 1 file changed, 7 insertions(+), 25 deletions(-) (limited to 'src/network/bearer') diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp index e9bf99628c..2da073fa5a 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.cpp +++ b/src/network/bearer/qnetworkconfigmanager_p.cpp @@ -115,15 +115,9 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::defaultConfiguration( QNetworkConfigurationPrivatePointer defaultConfiguration; for (QBearerEngine *engine : sessionEngines) { - QHash::Iterator it; - QHash::Iterator end; - QMutexLocker locker(&engine->mutex); - for (it = engine->snapConfigurations.begin(), - end = engine->snapConfigurations.end(); it != end; ++it) { - QNetworkConfigurationPrivatePointer ptr = it.value(); - + for (const auto &ptr : qAsConst(engine->snapConfigurations)) { QMutexLocker configLocker(&ptr->mutex); if ((ptr->state & QNetworkConfiguration::Active) == QNetworkConfiguration::Active) { @@ -157,14 +151,10 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::defaultConfiguration( */ for (QBearerEngine *engine : sessionEngines) { - QHash::Iterator it; - QHash::Iterator end; QMutexLocker locker(&engine->mutex); - for (it = engine->accessPointConfigurations.begin(), - end = engine->accessPointConfigurations.end(); it != end; ++it) { - QNetworkConfigurationPrivatePointer ptr = it.value(); + for (const auto &ptr : qAsConst(engine->accessPointConfigurations)) { QMutexLocker configLocker(&ptr->mutex); QNetworkConfiguration::BearerType bearerType = ptr->bearerType; @@ -220,16 +210,11 @@ QList QNetworkConfigurationManagerPrivate::allConfigurati QMutexLocker locker(&mutex); for (QBearerEngine *engine : sessionEngines) { - QHash::Iterator it; - QHash::Iterator end; QMutexLocker locker(&engine->mutex); //find all InternetAccessPoints - for (it = engine->accessPointConfigurations.begin(), - end = engine->accessPointConfigurations.end(); it != end; ++it) { - QNetworkConfigurationPrivatePointer ptr = it.value(); - + for (const auto &ptr : qAsConst(engine->accessPointConfigurations)) { QMutexLocker configLocker(&ptr->mutex); if ((ptr->state & filter) == filter) { @@ -240,10 +225,7 @@ QList QNetworkConfigurationManagerPrivate::allConfigurati } //find all service networks - for (it = engine->snapConfigurations.begin(), - end = engine->snapConfigurations.end(); it != end; ++it) { - QNetworkConfigurationPrivatePointer ptr = it.value(); - + for (const auto &ptr : qAsConst(engine->snapConfigurations)) { QMutexLocker configLocker(&ptr->mutex); if ((ptr->state & filter) == filter) { @@ -460,7 +442,7 @@ void QNetworkConfigurationManagerPrivate::performAsyncConfigurationUpdate() updating = true; - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : qAsConst(sessionEngines)) { updatingEngines.insert(engine); QMetaObject::invokeMethod(engine, "requestUpdate"); } @@ -490,7 +472,7 @@ void QNetworkConfigurationManagerPrivate::startPolling() if (pollTimer->isActive()) return; - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : qAsConst(sessionEngines)) { if (engine->requiresPolling() && (forcedPolling || engine->configurationsInUse())) { pollTimer->start(); break; @@ -503,7 +485,7 @@ void QNetworkConfigurationManagerPrivate::pollEngines() { QMutexLocker locker(&mutex); - foreach (QBearerEngine *engine, sessionEngines) { + for (QBearerEngine *engine : qAsConst(sessionEngines)) { if (engine->requiresPolling() && (forcedPolling || engine->configurationsInUse())) { pollingEngines.insert(engine); QMetaObject::invokeMethod(engine, "requestUpdate"); -- cgit v1.2.3 From f3af7fce4a9174fb80de22cf650435516c2f3796 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 26 Jan 2016 14:38:54 +0100 Subject: QtNetwork: eradicate Q_FOREACH loops [rvalues] ... by replacing them with C++11 range-for loops. This is the simplest of the patch series: Q_FOREACH took a copy, so we do, too. Except we don't, since we're just catching the return value that comes out of the function (RVO). We can't feed the rvalues into range-for, because they are non-const and would thus detach. Change-Id: I42c9c44d948ab1512a69d42890187bc3cf2d7e58 Reviewed-by: Lars Knoll --- src/network/bearer/qnetworksession.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/network/bearer') diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp index 1e7b080333..6d864a7d3e 100644 --- a/src/network/bearer/qnetworksession.cpp +++ b/src/network/bearer/qnetworksession.cpp @@ -249,7 +249,8 @@ QNetworkSession::QNetworkSession(const QNetworkConfiguration &connectionConfig, { // invalid configuration if (!connectionConfig.identifier().isEmpty()) { - foreach (QBearerEngine *engine, qNetworkConfigurationManagerPrivate()->engines()) { + const auto engines = qNetworkConfigurationManagerPrivate()->engines(); + for (QBearerEngine *engine : engines) { if (engine->hasIdentifier(connectionConfig.identifier())) { d = engine->createSessionBackend(); d->q = this; -- cgit v1.2.3