From ed9f8a0e9d2984b0b9d6aa31ab3a7209bae1708e Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 1 Sep 2016 15:17:27 +0200 Subject: bearer plugins: eradicate Java-style iterators and Q_FOREACH This is the simple part of the job, removing Q_FOREACH loops which are obviously safe to be replaced by C++11 range-for. In QNetworkManagerEngine::sessionStateForId(), instead of iterating over QHash::keys(), iterate over the QHash directly (using C++11 range-for, as we're only using the values, not the keys). In QNetworkManagerEngine::connectToId(), simplify the loop body by merging three identical if blocks into one. Saves ~1.7KiB accumulated over the three Linux bearer plugins: connman, generic, nm (optimized GCC 6.1 Linux AMD64 build). Change-Id: Ic66139c25f7e2173f5a919927e269b873334d2c8 Reviewed-by: Lorn Potter --- src/plugins/bearer/connman/qconnmanengine.cpp | 16 +++-- .../bearer/connman/qconnmanservice_linux.cpp | 14 ++-- .../bearer/linux_common/qofonoservice_linux.cpp | 12 ++-- .../networkmanager/qnetworkmanagerengine.cpp | 74 +++++++++------------- src/plugins/bearer/qnetworksession_impl.cpp | 6 +- 5 files changed, 56 insertions(+), 66 deletions(-) (limited to 'src/plugins/bearer') diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp index 51ee51a64a..eabae5a07b 100644 --- a/src/plugins/bearer/connman/qconnmanengine.cpp +++ b/src/plugins/bearer/connman/qconnmanengine.cpp @@ -93,9 +93,9 @@ void QConnmanEngine::initialize() connect(connmanManager,SIGNAL(servicesReady(QStringList)),this,SLOT(servicesReady(QStringList))); connect(connmanManager,SIGNAL(scanFinished(bool)),this,SLOT(finishedScan(bool))); - foreach (const QString &servPath, connmanManager->getServices()) { + const auto servPaths = connmanManager->getServices(); + for (const QString &servPath : servPaths) addServiceConfiguration(servPath); - } Q_EMIT updateCompleted(); } @@ -115,9 +115,8 @@ void QConnmanEngine::changedModem() void QConnmanEngine::servicesReady(const QStringList &list) { QMutexLocker locker(&mutex); - foreach (const QString &servPath, list) { + for (const QString &servPath : list) addServiceConfiguration(servPath); - } Q_EMIT updateCompleted(); } @@ -329,7 +328,8 @@ QNetworkSessionPrivate *QConnmanEngine::createSessionBackend() QNetworkConfigurationPrivatePointer QConnmanEngine::defaultConfiguration() { const QMutexLocker locker(&mutex); - Q_FOREACH (const QString &servPath, connmanManager->getServices()) { + const auto servPaths = connmanManager->getServices(); + for (const QString &servPath : servPaths) { if (connmanServiceInterfaces.contains(servPath)) { if (accessPointConfigurations.contains(servPath)) return accessPointConfigurations.value(servPath); @@ -461,7 +461,8 @@ QNetworkConfiguration::BearerType QConnmanEngine::ofonoTechToBearerType(const QS bool QConnmanEngine::isRoamingAllowed(const QString &context) { - foreach (const QString &dcPath, ofonoContextManager->contexts()) { + const auto dcPaths = ofonoContextManager->contexts(); + for (const QString &dcPath : dcPaths) { if (dcPath.contains(context.section("_",-1))) { return ofonoContextManager->roamingAllowed(); } @@ -557,7 +558,8 @@ bool QConnmanEngine::requiresPolling() const void QConnmanEngine::reEvaluateCellular() { - Q_FOREACH (const QString &servicePath, connmanManager->getServices()) { + const auto servicePaths = connmanManager->getServices(); + for (const QString &servicePath : servicePaths) { if (servicePath.contains("cellular") && accessPointConfigurations.contains(servicePath)) { configurationChange(connmanServiceInterfaces.value(servicePath)); } diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp index 7fbbe2cd07..bc89f540fc 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp +++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp @@ -144,10 +144,9 @@ void QConnmanManagerInterface::servicesReply(QDBusPendingCallWatcher *call) qDebug() << serv_reply.error().message(); } else { servicesList.clear(); //connman list changes order - ConnmanMap connmanobj; - Q_FOREACH (connmanobj, serv_reply.value()) { + const ConnmanMapList connmanobjs = serv_reply.value(); + for (const ConnmanMap &connmanobj : connmanobjs) servicesList << connmanobj.objectPath.path(); - } Q_EMIT servicesReady(servicesList); } call->deleteLater(); @@ -181,7 +180,7 @@ void QConnmanManagerInterface::connectNotify(const QMetaMethod &signal) void QConnmanManagerInterface::onServicesChanged(const ConnmanMapList &changed, const QList &removed) { servicesList.clear(); //connman list changes order - Q_FOREACH (const ConnmanMap &connmanobj, changed) { + for (const ConnmanMap &connmanobj : changed) { const QString svcPath(connmanobj.objectPath.path()); servicesList << svcPath; } @@ -225,7 +224,8 @@ QStringList QConnmanManagerInterface::getTechnologies() QDBusPendingReply reply = call(QLatin1String("GetTechnologies")); reply.waitForFinished(); if (!reply.isError()) { - Q_FOREACH (const ConnmanMap &map, reply.value()) { + const ConnmanMapList maps = reply.value(); + for (const ConnmanMap &map : maps) { if (!technologiesMap.contains(map.objectPath.path())) { technologyAdded(map.objectPath, map.propertyMap); } @@ -241,9 +241,9 @@ QStringList QConnmanManagerInterface::getServices() QDBusPendingReply reply = call(QLatin1String("GetServices")); reply.waitForFinished(); if (!reply.isError()) { - Q_FOREACH (const ConnmanMap &map, reply.value()) { + const ConnmanMapList maps = reply.value(); + for (const ConnmanMap &map : maps) servicesList << map.objectPath.path(); - } } } return servicesList; diff --git a/src/plugins/bearer/linux_common/qofonoservice_linux.cpp b/src/plugins/bearer/linux_common/qofonoservice_linux.cpp index b0f5f29f6c..adf7feef2e 100644 --- a/src/plugins/bearer/linux_common/qofonoservice_linux.cpp +++ b/src/plugins/bearer/linux_common/qofonoservice_linux.cpp @@ -103,9 +103,9 @@ QStringList QOfonoManagerInterface::getModems() QDBusPendingReply reply = callWithArgumentList(QDBus::Block, QLatin1String("GetModems"), argumentList); reply.waitForFinished(); if (!reply.isError()) { - foreach (const ObjectPathProperties &modem, reply.value()) { + const auto modems = reply.value(); + for (const ObjectPathProperties &modem : modems) modemList << modem.path.path(); - } } } @@ -114,8 +114,8 @@ QStringList QOfonoManagerInterface::getModems() QString QOfonoManagerInterface::currentModem() { - QStringList modems = getModems(); - foreach (const QString &modem, modems) { + const QStringList modems = getModems(); + for (const QString &modem : modems) { QOfonoModemInterface device(modem); if (device.isPowered() && device.isOnline() && device.interfaces().contains(QStringLiteral("org.ofono.NetworkRegistration"))) @@ -266,9 +266,9 @@ QStringList QOfonoDataConnectionManagerInterface::contexts() QDBusPendingReply reply = call(QLatin1String("GetContexts")); reply.waitForFinished(); if (!reply.isError()) { - foreach (const ObjectPathProperties &context, reply.value()) { + const auto contexts = reply.value(); + for (const ObjectPathProperties &context : contexts) contextList << context.path.path(); - } } } return contextList; diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp index f02b6befb8..543e66491d 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp @@ -127,7 +127,8 @@ void QNetworkManagerEngine::setupConfigurations() { QMutexLocker locker(&mutex); // Get active connections. - foreach (const QDBusObjectPath &acPath, managerInterface->activeConnections()) { + const auto acPaths = managerInterface->activeConnections(); + for (const QDBusObjectPath &acPath : acPaths) { if (activeConnectionsList.contains(acPath.path())) continue; @@ -144,8 +145,10 @@ void QNetworkManagerEngine::setupConfigurations() connectionInterfaces.insert(activeConnection->connection().path(),device.networkInterface()); } } + // Get connections. - foreach (const QDBusObjectPath &settingsPath, systemSettings->listConnections()) { + const auto settingsPaths = systemSettings->listConnections(); + for (const QDBusObjectPath &settingsPath : settingsPaths) { locker.unlock(); if (!hasIdentifier(settingsPath.path())) newConnection(settingsPath, systemSettings); //add system connection configs @@ -189,21 +192,13 @@ void QNetworkManagerEngine::connectToId(const QString &id) if (isConnectionActive(settingsPath)) return; - QHashIterator i(interfaceDevices); - while (i.hasNext()) { - i.next(); - if (i.value()->deviceType() == DEVICE_TYPE_ETHERNET && - connectionType == DEVICE_TYPE_ETHERNET) { - dbusDevicePath = i.key(); - break; - } else if (i.value()->deviceType() == DEVICE_TYPE_WIFI && - connectionType == DEVICE_TYPE_WIFI) { - dbusDevicePath = i.key(); - break; - } else if (i.value()->deviceType() == DEVICE_TYPE_MODEM && - connectionType == DEVICE_TYPE_MODEM) { - dbusDevicePath = i.key(); - break; + for (auto i = interfaceDevices.cbegin(), end = interfaceDevices.cend(); i != end; ++i) { + const auto type = i.value()->deviceType(); + if (type == DEVICE_TYPE_ETHERNET || type == DEVICE_TYPE_WIFI || type == DEVICE_TYPE_MODEM) { + if (type == connectionType) { + dbusDevicePath = i.key(); + break; + } } } @@ -230,9 +225,7 @@ void QNetworkManagerEngine::disconnectFromId(const QString &id) return; } - QHashIterator i(activeConnectionsList); - while (i.hasNext()) { - i.next(); + for (auto i = activeConnectionsList.cbegin(), end = activeConnectionsList.cend(); i != end; ++i) { if (id == i.value()->connection().path() && accessPointConfigurations.contains(id)) { managerInterface->deactivateConnection(QDBusObjectPath(i.key())); break; @@ -243,11 +236,8 @@ void QNetworkManagerEngine::disconnectFromId(const QString &id) void QNetworkManagerEngine::requestUpdate() { if (managerInterface && managerInterface->wirelessEnabled()) { - QHashIterator i(wirelessDevices); - while (i.hasNext()) { - i.next(); - i.value()->requestScan(); - } + for (auto *wirelessDevice : qAsConst(wirelessDevices)) + wirelessDevice->requestScan(); } QMetaObject::invokeMethod(this, "updateCompleted", Qt::QueuedConnection); } @@ -255,20 +245,17 @@ void QNetworkManagerEngine::requestUpdate() void QNetworkManagerEngine::interfacePropertiesChanged(const QMap &properties) { QMutexLocker locker(&mutex); - QMapIterator i(properties); - while (i.hasNext()) { - i.next(); + for (auto i = properties.cbegin(), end = properties.cend(); i != end; ++i) { if (i.key() == QLatin1String("ActiveConnections")) { // Active connections changed, update configurations. - QList activeConnections = - qdbus_cast >(i.value().value()); + const auto activeConnections = qdbus_cast >(i.value().value()); QStringList identifiers = accessPointConfigurations.keys(); QStringList priorActiveConnections = activeConnectionsList.keys(); - foreach (const QDBusObjectPath &acPath, activeConnections) { + for (const QDBusObjectPath &acPath : activeConnections) { priorActiveConnections.removeOne(acPath.path()); QNetworkManagerConnectionActive *activeConnection = activeConnectionsList.value(acPath.path()); @@ -399,7 +386,8 @@ void QNetworkManagerEngine::wiredCarrierChanged(bool carrier) if (!deviceWired) return; QMutexLocker locker(&mutex); - foreach (const QDBusObjectPath &settingsPath, systemSettings->listConnections()) { + const auto settingsPaths = systemSettings->listConnections(); + for (const QDBusObjectPath &settingsPath : settingsPaths) { for (int i = 0; i < connections.count(); ++i) { QNetworkManagerSettingsConnection *connection = connections.at(i); if (connection->getType() == DEVICE_TYPE_ETHERNET @@ -477,12 +465,9 @@ void QNetworkManagerEngine::newConnection(const QDBusObjectPath &path, cpPriv->state |= QNetworkConfiguration::Active; if (deviceType == DEVICE_TYPE_ETHERNET) { - QHashIterator i(interfaceDevices); - while (i.hasNext()) { - i.next(); - if (i.value()->deviceType() == deviceType) { - QNetworkManagerInterfaceDeviceWired *wiredDevice - = wiredDevices.value(i.value()->path()); + for (const auto *interfaceDevice : interfaceDevices) { + if (interfaceDevice->deviceType() == deviceType) { + auto *wiredDevice = wiredDevices.value(interfaceDevice->path()); if (wiredDevice && wiredDevice->carrier()) { cpPriv->state |= QNetworkConfiguration::Discovered; } @@ -559,7 +544,8 @@ void QNetworkManagerEngine::updateConnection() QNetworkConfigurationPrivate *cpPriv = parseConnection(settingsPath, connection->getSettings()); // Check if connection is active. - foreach (const QDBusObjectPath &acPath, managerInterface->activeConnections()) { + const auto acPaths = managerInterface->activeConnections(); + for (const QDBusObjectPath &acPath : acPaths) { QNetworkManagerConnectionActive activeConnection(acPath.path()); if (activeConnection.connection().path() == settingsPath && @@ -635,7 +621,8 @@ QNetworkConfigurationPrivate *QNetworkManagerEngine::parseConnection(const QStri if (connectionType == QLatin1String("802-3-ethernet")) { cpPriv->bearerType = QNetworkConfiguration::BearerEthernet; - foreach (const QDBusObjectPath &devicePath, managerInterface->getDevices()) { + const auto devicePaths = managerInterface->getDevices(); + for (const QDBusObjectPath &devicePath : devicePaths) { QNetworkManagerInterfaceDevice device(devicePath.path(),this); if (device.deviceType() == DEVICE_TYPE_ETHERNET) { QNetworkManagerInterfaceDeviceWired *wiredDevice = wiredDevices.value(device.path()); @@ -729,9 +716,7 @@ QNetworkSession::State QNetworkManagerEngine::sessionStateForId(const QString &i if (!ptr->isValid) return QNetworkSession::Invalid; - foreach (const QString &acPath, activeConnectionsList.keys()) { - QNetworkManagerConnectionActive *activeConnection = activeConnectionsList.value(acPath); - + for (QNetworkManagerConnectionActive *activeConnection : activeConnectionsList) { const QString identifier = activeConnection->connection().path(); if (id == identifier) { @@ -932,7 +917,8 @@ void QNetworkManagerEngine::ofonoRegistered(const QString &) } ofonoManager = new QOfonoManagerInterface(this); if (ofonoManager && ofonoManager->isValid()) { - Q_FOREACH (const QString &modem, ofonoManager->getModems()) { + const auto modems = ofonoManager->getModems(); + for (const QString &modem : modems) { QOfonoDataConnectionManagerInterface *ofonoContextManager = new QOfonoDataConnectionManagerInterface(modem,this); ofonoContextManagers.insert(modem, ofonoContextManager); diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp index 85942b56f1..5ce51670f7 100644 --- a/src/plugins/bearer/qnetworksession_impl.cpp +++ b/src/plugins/bearer/qnetworksession_impl.cpp @@ -54,7 +54,8 @@ static QBearerEngineImpl *getEngineFromId(const QString &id) { QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate(); - foreach (QBearerEngine *engine, priv->engines()) { + const auto engines = priv->engines(); + for (QBearerEngine *engine : engines) { QBearerEngineImpl *engineImpl = qobject_cast(engine); if (engineImpl && engineImpl->hasIdentifier(id)) return engineImpl; @@ -306,7 +307,8 @@ void QNetworkSessionPrivateImpl::updateStateFromServiceNetwork() { QNetworkSession::State oldState = state; - foreach (const QNetworkConfiguration &config, serviceConfig.children()) { + const auto configs = serviceConfig.children(); + for (const QNetworkConfiguration &config : configs) { if ((config.state() & QNetworkConfiguration::Active) != QNetworkConfiguration::Active) continue; -- cgit v1.2.3