diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2017-03-13 22:49:46 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2017-03-23 09:09:49 +0000 |
commit | 919d07e6809a6705941a9819ba145062a947fa39 (patch) | |
tree | 27cbd757685bc9a3bb9be3a3ec9414bb44cdda03 | |
parent | c5e54d58e8763898db81e1f3b5b5460d6e4b9455 (diff) | |
download | qttools-919d07e6809a6705941a9819ba145062a947fa39.tar.gz |
androiddeployqt: eradicate Q_FOREACH
and mark the tool as Q_FOREACH-free.
Change-Id: I1f9cd6111cde26a8a09b401207d80e5bf7dad833
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
-rw-r--r-- | src/androiddeployqt/androiddeployqt.pro | 1 | ||||
-rw-r--r-- | src/androiddeployqt/main.cpp | 121 |
2 files changed, 64 insertions, 58 deletions
diff --git a/src/androiddeployqt/androiddeployqt.pro b/src/androiddeployqt/androiddeployqt.pro index 7b003a779..2d0f5b41d 100644 --- a/src/androiddeployqt/androiddeployqt.pro +++ b/src/androiddeployqt/androiddeployqt.pro @@ -8,6 +8,7 @@ SOURCES += \ windows: QMAKE_CXXFLAGS += -U__STRICT_ANSI__ DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII +DEFINES += QT_NO_FOREACH load(qt_app) diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp index 84ca97434..26e9adb7b 100644 --- a/src/androiddeployqt/main.cpp +++ b/src/androiddeployqt/main.cpp @@ -51,8 +51,8 @@ void deleteRecursively(const QString &dirName) if (!dir.exists()) return; - QFileInfoList entries = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); - foreach (QFileInfo entry, entries) { + const QFileInfoList entries = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); + for (const QFileInfo &entry : entries) { if (entry.isDir()) deleteRecursively(entry.absoluteFilePath()); else @@ -283,11 +283,11 @@ void deleteMissingFiles(const Options &options, const QDir &srcDir, const QDir & if (options.verbose) fprintf(stdout, "Delete missing files %s %s\n", qPrintable(srcDir.absolutePath()), qPrintable(dstDir.absolutePath())); - QFileInfoList srcEntries = srcDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); - QFileInfoList dstEntries = dstDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); - foreach (const QFileInfo &dst, dstEntries) { + const QFileInfoList srcEntries = srcDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); + const QFileInfoList dstEntries = dstDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); + for (const QFileInfo &dst : dstEntries) { bool found = false; - foreach (const QFileInfo &src, srcEntries) + for (const QFileInfo &src : srcEntries) if (dst.fileName() == src.fileName()) { if (dst.isDir()) deleteMissingFiles(options, src.absoluteFilePath(), dst.absoluteFilePath()); @@ -779,8 +779,8 @@ bool readInputFile(Options *options) { const QJsonValue deploymentDependencies = jsonObject.value(QStringLiteral("deployment-dependencies")); if (!deploymentDependencies.isUndefined()) { - QStringList dependencies = deploymentDependencies.toString().split(QLatin1Char(',')); - foreach (QString dependency, dependencies) { + const auto dependencies = deploymentDependencies.toString().splitRef(QLatin1Char(',')); + for (const QStringRef &dependency : dependencies) { QString path = options->qtInstallDirectory + QLatin1Char('/') + dependency; if (QFileInfo(path).isDir()) { QDirIterator iterator(path, QDirIterator::Subdirectories); @@ -793,7 +793,7 @@ bool readInputFile(Options *options) } } } else { - options->qtDependencies.append(QtDependency(dependency, path)); + options->qtDependencies.append(QtDependency(dependency.toString(), path)); } } } @@ -887,8 +887,8 @@ bool readInputFile(Options *options) bool copyFiles(const QDir &sourceDirectory, const QDir &destinationDirectory, bool verbose, bool forceOverwrite = false) { - QFileInfoList entries = sourceDirectory.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); - foreach (QFileInfo entry, entries) { + const QFileInfoList entries = sourceDirectory.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); + for (const QFileInfo &entry : entries) { if (entry.isDir()) { QDir dir(entry.absoluteFilePath()); if (!destinationDirectory.mkpath(dir.dirName())) { @@ -910,7 +910,8 @@ bool copyFiles(const QDir &sourceDirectory, const QDir &destinationDirectory, bo void cleanTopFolders(const Options &options, const QDir &srcDir, const QString &dstDir) { - foreach (const QFileInfo &dir, srcDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs)) { + const auto dirs = srcDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs); + for (const QFileInfo &dir : dirs) { if (dir.fileName() != QLatin1String("libs")) deleteMissingFiles(options, dir.absoluteFilePath(), dstDir + dir.fileName()); } @@ -1001,7 +1002,7 @@ bool copyAndroidExtraLibs(const Options &options) if (options.verbose) fprintf(stdout, "Copying %d external libraries to package.\n", options.extraLibs.size()); - foreach (QString extraLib, options.extraLibs) { + for (const QString &extraLib : options.extraLibs) { QFileInfo extraLibInfo(extraLib); if (!extraLibInfo.exists()) { fprintf(stderr, "External library %s does not exist!\n", qPrintable(extraLib)); @@ -1029,14 +1030,17 @@ bool copyAndroidExtraLibs(const Options &options) QStringList allFilesInside(const QDir& current, const QDir& rootDir) { - QStringList files; - foreach (QString dir, current.entryList(QDir::Dirs|QDir::NoDotAndDotDot)) { - files += allFilesInside(QDir(current.filePath(dir)), rootDir); + QStringList result; + const auto dirs = current.entryList(QDir::Dirs|QDir::NoDotAndDotDot); + const auto files = current.entryList(QDir::Files); + result.reserve(dirs.size() + files.size()); + for (const QString &dir : dirs) { + result += allFilesInside(QDir(current.filePath(dir)), rootDir); } - foreach (QString file, current.entryList(QDir::Files)) { - files += rootDir.relativeFilePath(current.filePath(file)); + for (const QString &file : files) { + result += rootDir.relativeFilePath(current.filePath(file)); } - return files; + return result; } bool copyAndroidExtraResources(const Options &options) @@ -1047,7 +1051,7 @@ bool copyAndroidExtraResources(const Options &options) if (options.verbose) fprintf(stdout, "Copying %d external resources to package.\n", options.extraPlugins.size()); - foreach (QString extraResource, options.extraPlugins) { + for (const QString &extraResource : options.extraPlugins) { QFileInfo extraResourceInfo(extraResource); if (!extraResourceInfo.exists() || !extraResourceInfo.isDir()) { fprintf(stderr, "External resource %s does not exist or not a correct directory!\n", qPrintable(extraResource)); @@ -1058,8 +1062,8 @@ bool copyAndroidExtraResources(const Options &options) QString assetsDir = options.outputDirectory + QStringLiteral("/assets/") + resourceDir.dirName() + QLatin1Char('/'); QString libsDir = options.outputDirectory + QStringLiteral("/libs/") + options.architecture + QLatin1Char('/'); - QStringList files = allFilesInside(resourceDir, resourceDir); - foreach (const QString &resourceFile, files) { + const QStringList files = allFilesInside(resourceDir, resourceDir); + for (const QString &resourceFile : files) { QString originFile(resourceDir.filePath(resourceFile)); QString destinationFile; if (!resourceFile.endsWith(QLatin1String(".so"))) { @@ -1136,7 +1140,7 @@ bool updateLibsXml(const Options &options) QString qtLibs = QLatin1String("<item>gnustl_shared</item>\n"); QString bundledInLibs; QString bundledInAssets; - foreach (Options::BundledFile bundledFile, options.bundledFiles) { + for (const Options::BundledFile &bundledFile : options.bundledFiles) { if (bundledFile.second.startsWith(QLatin1String("lib/"))) { QString s = bundledFile.second.mid(sizeof("lib/lib") - 1); s.chop(sizeof(".so") - 1); @@ -1153,10 +1157,10 @@ bool updateLibsXml(const Options &options) } if (!options.extraPlugins.isEmpty()) { - foreach (QString extraRes, options.extraPlugins) { + for (const QString &extraRes : options.extraPlugins) { QDir resourceDir(extraRes); - QStringList files = allFilesInside(resourceDir, resourceDir); - foreach (const QString &file, files) { + const QStringList files = allFilesInside(resourceDir, resourceDir); + for (const QString &file : files) { QString destinationPath = resourceDir.dirName() + QLatin1Char('/') + file; if (!file.endsWith(QLatin1String(".so"))) { bundledInAssets += QStringLiteral("<item>%1:%1</item>\n") @@ -1180,7 +1184,7 @@ bool updateLibsXml(const Options &options) QString extraLibs; if (!options.extraLibs.isEmpty()) { - foreach (QString extraLib, options.extraLibs) { + for (const QString extraLib : options.extraLibs) { QFileInfo extraLibInfo(extraLib); QString name = extraLibInfo.fileName().mid(sizeof("lib") - 1); name.chop(sizeof(".so") - 1); @@ -1265,7 +1269,7 @@ bool updateAndroidManifest(Options &options) // If .pro file overrides dependency detection, we need to see which platform plugin they picked if (localLibs.isEmpty()) { QString plugin; - foreach (QtDependency qtDependency, options.qtDependencies) { + for (const QtDependency &qtDependency : qAsConst(options.qtDependencies)) { if (qtDependency.relativePath.endsWith(QLatin1String("libqtforandroid.so")) || qtDependency.relativePath.endsWith(QLatin1String("libqtforandroidGL.so"))) { if (!plugin.isEmpty() && plugin != qtDependency.relativePath) { @@ -1288,7 +1292,7 @@ bool updateAndroidManifest(Options &options) } bool usesGL = false; - foreach (QtDependency qtDependency, options.qtDependencies) { + for (const QtDependency &qtDependency : qAsConst(options.qtDependencies)) { if (qtDependency.relativePath.endsWith(QLatin1String("libQt5OpenGL.so")) || qtDependency.relativePath.endsWith(QLatin1String("libQt5Quick.so"))) { usesGL = true; @@ -1309,12 +1313,12 @@ bool updateAndroidManifest(Options &options) = (options.deploymentMechanism != Options::Ministro) ? QString::fromLatin1("1") : QString::fromLatin1("0"); QString permissions; - foreach (QString permission, options.permissions) + for (const QString &permission : qAsConst(options.permissions)) permissions += QString::fromLatin1(" <uses-permission android:name=\"%1\" />\n").arg(permission); replacements[QLatin1String("<!-- %%INSERT_PERMISSIONS -->")] = permissions; QString features; - foreach (QString feature, options.features) + for (const QString &feature : qAsConst(options.features)) features += QStringLiteral(" <uses-feature android:name=\"%1\" android:required=\"false\" />\n").arg(feature); if (usesGL) features += QStringLiteral(" <uses-feature android:glEsVersion=\"0x00020000\" android:required=\"true\" />"); @@ -1398,9 +1402,9 @@ QList<QtDependency> findFilesRecursively(const Options &options, const QFileInfo QList<QtDependency> ret; QDir dir(info.filePath()); - QStringList entries = dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); + const QStringList entries = dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); - foreach (QString entry, entries) { + for (const QString &entry : entries) { QString s = info.absoluteFilePath() + QLatin1Char('/') + entry; ret += findFilesRecursively(options, s, rootPath); } @@ -1451,8 +1455,8 @@ bool readAndroidDependencyXml(Options *options, if (!options->rootPath.isEmpty() && (file == QLatin1String("qml") || file == QLatin1String("qml/"))) continue; - QList<QtDependency> fileNames = findFilesRecursively(*options, file); - foreach (QtDependency fileName, fileNames) { + const QList<QtDependency> fileNames = findFilesRecursively(*options, file); + for (const QtDependency &fileName : fileNames) { if (usedDependencies->contains(fileName.absolutePath)) continue; @@ -1572,16 +1576,16 @@ bool readDependenciesFromElf(Options *options, QSet<QString> *remainingDependencies) { // Get dependencies on libraries in $QTDIR/lib - QStringList dependencies = getQtLibsFromElf(*options, fileName); + const QStringList dependencies = getQtLibsFromElf(*options, fileName); if (options->verbose) { fprintf(stdout, "Reading dependencies from %s\n", qPrintable(fileName)); - foreach (QString dep, dependencies) + for (const QString &dep : dependencies) fprintf(stdout, " %s\n", qPrintable(dep)); } // Recursively add dependencies from ELF and supplementary XML information QList<QString> dependenciesToCheck; - foreach (QString dependency, dependencies) { + for (const QString &dependency : dependencies) { if (usedDependencies->contains(dependency)) continue; @@ -1600,7 +1604,7 @@ bool readDependenciesFromElf(Options *options, dependenciesToCheck.append(dependency); } - foreach (QString dependency, dependenciesToCheck) { + for (const QString &dependency : qAsConst(dependenciesToCheck)) { QString qtBaseName = dependency.mid(sizeof("lib/lib") - 1); qtBaseName = qtBaseName.left(qtBaseName.size() - (sizeof(".so") - 1)); if (!readAndroidDependencyXml(options, qtBaseName, usedDependencies, remainingDependencies)) { @@ -1640,7 +1644,7 @@ bool scanImports(Options *options, QSet<QString> *usedDependencies) QStringList importPaths; importPaths += shellQuote(options->qtInstallDirectory + QLatin1String("/qml")); importPaths += rootPath; - foreach (QString qmlImportPath, options->qmlImportPaths) + for (const QString &qmlImportPath : qAsConst(options->qmlImportPaths)) importPaths += shellQuote(qmlImportPath); qmlImportScanner += QString::fromLatin1(" -rootPath %1 -importPath %2") @@ -1701,7 +1705,7 @@ bool scanImports(Options *options, QSet<QString> *usedDependencies) } QString importPathOfThisImport; - foreach (QString importPath, importPaths) { + for (const QString &importPath : qAsConst(importPaths)) { #if defined(Q_OS_WIN32) Qt::CaseSensitivity caseSensitivity = Qt::CaseInsensitive; #else @@ -1722,8 +1726,8 @@ bool scanImports(Options *options, QSet<QString> *usedDependencies) QDir dir(importPathOfThisImport); importPathOfThisImport = dir.absolutePath() + QLatin1Char('/'); - QList<QtDependency> fileNames = findFilesRecursively(*options, info, importPathOfThisImport); - foreach (QtDependency fileName, fileNames) { + const QList<QtDependency> fileNames = findFilesRecursively(*options, info, importPathOfThisImport); + for (QtDependency fileName : fileNames) { if (usedDependencies->contains(fileName.absolutePath)) continue; @@ -1860,8 +1864,8 @@ bool stripLibraries(const Options &options) QString libraryPath = options.outputDirectory + QLatin1String("/libs/") + options.architecture; - QStringList libraries = QDir(libraryPath).entryList(QDir::Files); - foreach (QString library, libraries) { + const QStringList libraries = QDir(libraryPath).entryList(QDir::Files); + for (const QString &library : libraries) { if (library.endsWith(QLatin1String(".so"))) { if (!stripFile(options, libraryPath + QLatin1Char('/') + library)) return false; @@ -2000,7 +2004,8 @@ bool goodToCopy(const Options *options, const QString &file, QStringList *unmetD return true; bool ret = true; - foreach (const QString &lib, getQtLibsFromElf(*options, file)) { + const auto libs = getQtLibsFromElf(*options, file); + for (const QString &lib : libs) { if (!options->qtDependencies.contains(QtDependency(lib, options->qtInstallDirectory + QLatin1Char('/') + lib))) { ret = false; unmetDependencies->append(lib); @@ -2078,7 +2083,7 @@ bool copyQtFiles(Options *options) } } - foreach (QtDependency qtDependency, options->qtDependencies) + for (const QtDependency &qtDependency : qAsConst(options->qtDependencies)) options->bundledFiles += qMakePair(qtDependency.relativePath, qtDependency.relativePath); } else { if (!options->build) @@ -2089,7 +2094,7 @@ bool copyQtFiles(Options *options) // Copy other Qt dependencies QString libDestinationDirectory = libsDirectory + options->architecture + QLatin1Char('/'); QString assetsDestinationDirectory = QLatin1String("assets/--Added-by-androiddeployqt--/"); - foreach (QtDependency qtDependency, options->qtDependencies) { + for (const QtDependency &qtDependency : qAsConst(options->qtDependencies)) { QString sourceFileName = qtDependency.absolutePath; QString destinationFileName; @@ -2199,8 +2204,8 @@ bool createAndroidProject(const Options &options) pclose(androidToolCommand); // If the project has subprojects inside the current folder, we need to also run android update on these. - QStringList libraryProjects = getLibraryProjectsInOutputFolder(options); - foreach (QString libraryProject, libraryProjects) { + const QStringList libraryProjects = getLibraryProjectsInOutputFolder(options); + for (const QString &libraryProject : libraryProjects) { if (options.verbose) fprintf(stdout, "Updating subproject %s\n", qPrintable(libraryProject)); @@ -2233,8 +2238,8 @@ QString findInPath(const QString &fileName) QLatin1Char separator(':'); #endif - QStringList paths = path.split(separator); - foreach (QString path, paths) { + const QStringList paths = path.split(separator); + for (const QString &path : paths) { QFileInfo fileInfo(path + QLatin1Char('/') + fileName); if (fileInfo.exists() && fileInfo.isFile() && fileInfo.isExecutable()) return path + QLatin1Char('/') + fileName; @@ -2310,7 +2315,8 @@ static GradleProperties readGradleProperties(const QString &path) if (!file.open(QIODevice::ReadOnly)) return properties; - foreach (const QByteArray &line, file.readAll().split('\n')) { + const auto lines = file.readAll().split('\n'); + for (const QByteArray &line : lines) { if (line.trimmed().startsWith('#')) continue; @@ -2895,11 +2901,10 @@ bool generateAssetsFileList(const Options &options) QDataStream stream(&file); stream.setVersion(QDataStream::Qt_5_3); - QList<QString> directories = directoryContents.keys(); - foreach (const QString &directory, directories) { - QStringList entryList = directoryContents.value(directory); - stream << directory << entryList.size(); - foreach (const QString &entry, entryList) + for (auto it = directoryContents.cbegin(), end = directoryContents.cend(); it != end; ++it) { + const QStringList &entryList = it.value(); + stream << it.key() << entryList.size(); + for (const QString &entry : entryList) stream << entry; } } else { |