[Scummvm-git-logs] scummvm master -> b054ef0ecc67631c32d95ea62fa68ff3981e90a1

bluegr noreply at scummvm.org
Tue Feb 10 23:28:25 UTC 2026


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
b054ef0ecc CREATE_PROJECT: use C++11-style for each loops instead of iterators


Commit: b054ef0ecc67631c32d95ea62fa68ff3981e90a1
    https://github.com/scummvm/scummvm/commit/b054ef0ecc67631c32d95ea62fa68ff3981e90a1
Author: Michael (michael_kuerbis at web.de)
Date: 2026-02-11T01:28:21+02:00

Commit Message:
CREATE_PROJECT: use C++11-style for each loops instead of iterators

Changed paths:
    devtools/create_project/cmake.cpp
    devtools/create_project/codeblocks.cpp
    devtools/create_project/create_project.h
    devtools/create_project/msbuild.cpp
    devtools/create_project/msvc.cpp
    devtools/create_project/xcode.cpp
    devtools/create_project/xcode.h


diff --git a/devtools/create_project/cmake.cpp b/devtools/create_project/cmake.cpp
index 80108f80fc7..54d12088acc 100644
--- a/devtools/create_project/cmake.cpp
+++ b/devtools/create_project/cmake.cpp
@@ -68,11 +68,11 @@ const CMakeProvider::Library *CMakeProvider::getLibraryFromFeature(const char *f
 		LibraryProps("mpc", "mpcdec").Libraries("mpcdec")
 	};
 
-	for (unsigned int i = 0; i < sizeof(s_libraries) / sizeof(s_libraries[0]); i++) {
-		bool matchingSDL = (s_libraries[i].sdlVersion == kSDLVersionAny)
-		                   || (s_libraries[i].sdlVersion == useSDL);
-		if (std::strcmp(feature, s_libraries[i].feature) == 0 && matchingSDL) {
-			return &s_libraries[i];
+	for (const auto &library : s_libraries) {
+		bool matchingSDL = (library.sdlVersion == kSDLVersionAny)
+		                   || (library.sdlVersion == useSDL);
+		if (std::strcmp(feature, library.feature) == 0 && matchingSDL) {
+			return &library;
 		}
 	}
 
diff --git a/devtools/create_project/codeblocks.cpp b/devtools/create_project/codeblocks.cpp
index 4d5d90b0100..4105cd94c97 100644
--- a/devtools/create_project/codeblocks.cpp
+++ b/devtools/create_project/codeblocks.cpp
@@ -44,8 +44,8 @@ void CodeBlocksProvider::createWorkspace(const BuildSetup &setup) {
 	writeReferences(setup, workspace);
 
 	// Note we assume that the UUID map only includes UUIDs for enabled engines!
-	for (UUIDMap::const_iterator i = _engineUuidMap.begin(); i != _engineUuidMap.end(); ++i) {
-		workspace << "\t\t<Project filename=\"" << i->first << ".cbp\" />\n";
+	for (const auto &i : _engineUuidMap) {
+		workspace << "\t\t<Project filename=\"" << i.first << ".cbp\" />\n";
 	}
 
 	workspace << "\t</Workspace>\n"
@@ -59,24 +59,24 @@ StringList getFeatureLibraries(const BuildSetup &setup) {
 	libSDL += setup.getSDLName();
 	libraries.push_back(libSDL);
 
-	for (FeatureList::const_iterator i = setup.features.begin(); i != setup.features.end(); ++i) {
-		if (i->enable && i->library) {
+	for (const auto &feature : setup.features) {
+		if (feature.enable && feature.library) {
 			std::string libname;
-			if (!std::strcmp(i->name, "libcurl")) {
-				libname = i->name;
-			} else if (!std::strcmp(i->name, "zlib")) {
+			if (!std::strcmp(feature.name, "libcurl")) {
+				libname = feature.name;
+			} else if (!std::strcmp(feature.name, "zlib")) {
 				libname = "libz";
-			} else if (!std::strcmp(i->name, "vorbis")) {
+			} else if (!std::strcmp(feature.name, "vorbis")) {
 				libname = "libvorbis";
 				libraries.push_back("libvorbisfile");
-			} else if (!std::strcmp(i->name, "png")) {
+			} else if (!std::strcmp(feature.name, "png")) {
 				libname = "libpng16";
-			} else if (!std::strcmp(i->name, "sdlnet")) {
+			} else if (!std::strcmp(feature.name, "sdlnet")) {
 				libname = libSDL + "_net";
 				libraries.push_back("iphlpapi");
 			} else {
 				libname = "lib";
-				libname += i->name;
+				libname += feature.name;
 			}
 			libraries.push_back(libname);
 		}
@@ -111,8 +111,8 @@ void CodeBlocksProvider::createProjectFile(const std::string &name, const std::s
 		StringList libraries = getFeatureLibraries(setup);
 
 		std::string deps;
-		for (StringList::const_iterator i = libraries.begin(); i != libraries.end(); ++i)
-			deps += (*i) + ".a;";
+		for (const auto &library : libraries)
+			deps += library + ".a;";
 
 		project << "\t\t\t<Target title=\"default\">\n"
 		           "\t\t\t\t<Option output=\"" << setup.projectName << "\\" << setup.projectName << "\" prefix_auto=\"1\" extension_auto=\"1\" />\n"
@@ -130,8 +130,8 @@ void CodeBlocksProvider::createProjectFile(const std::string &name, const std::s
 		writeWarnings(name, project);
 		writeDefines(setup.defines, project);
 
-		for (StringList::const_iterator i = setup.includeDirs.begin(); i != setup.includeDirs.end(); ++i)
-			project << "\t\t\t\t\t<Add directory=\"" << convertPathToWin(*i) << "\" />\n";
+		for (const auto &includeDir : setup.includeDirs)
+			project << "\t\t\t\t\t<Add directory=\"" << convertPathToWin(includeDir) << "\" />\n";
 
 		project << "\t\t\t\t\t<Add directory=\"$(" << LIBS_DEFINE << ")include\" />\n"
 		           "\t\t\t\t\t<Add directory=\"$(" << LIBS_DEFINE << ")include\\SDL\" />\n"
@@ -145,15 +145,15 @@ void CodeBlocksProvider::createProjectFile(const std::string &name, const std::s
 		// Linker
 		project << "\t\t\t\t<Linker>\n";
 
-		for (StringList::const_iterator i = libraries.begin(); i != libraries.end(); ++i)
-			project << "\t\t\t\t\t<Add library=\"" << (*i) << "\" />\n";
+		for (const auto &library : libraries)
+			project << "\t\t\t\t\t<Add library=\"" << library << "\" />\n";
 
-		for (UUIDMap::const_iterator i = _engineUuidMap.begin(); i != _engineUuidMap.end(); ++i) {
-			project << "\t\t\t\t\t<Add library=\"" << setup.projectName << "\\engines\\" << i->first << "\\lib" << i->first << ".a\" />\n";
+		for (const auto &i : _engineUuidMap) {
+			project << "\t\t\t\t\t<Add library=\"" << setup.projectName << "\\engines\\" << i.first << "\\lib" << i.first << ".a\" />\n";
 		}
 
-		for (StringList::const_iterator i = setup.libraryDirs.begin(); i != setup.libraryDirs.end(); ++i)
-			project << "\t\t\t\t\t<Add directory=\"" << convertPathToWin(*i) << "\" />\n";
+		for (const auto &libraryDir : setup.libraryDirs)
+			project << "\t\t\t\t\t<Add directory=\"" << convertPathToWin(libraryDir) << "\" />\n";
 
 		project << "\t\t\t\t\t<Add directory=\"$(" << LIBS_DEFINE << ")lib\\mingw\" />\n"
 		           "\t\t\t\t\t<Add directory=\"$(" << LIBS_DEFINE << ")lib\" />\n"
@@ -226,29 +226,27 @@ void CodeBlocksProvider::addResourceFiles(const BuildSetup &setup, StringList &i
 void CodeBlocksProvider::writeWarnings(const std::string &name, std::ofstream &output) const {
 
 	// Global warnings
-	for (StringList::const_iterator i = _globalWarnings.begin(); i != _globalWarnings.end(); ++i)
-		output << "\t\t\t\t\t<Add option=\"" << *i << "\" />\n";
+	for (const auto &_globalWarning : _globalWarnings)
+		output << "\t\t\t\t\t<Add option=\"" << _globalWarning << "\" />\n";
 
 	// Check for project-specific warnings:
 	std::map<std::string, StringList>::iterator warningsIterator = _projectWarnings.find(name);
 	if (warningsIterator != _projectWarnings.end())
-		for (StringList::const_iterator i = warningsIterator->second.begin(); i != warningsIterator->second.end(); ++i)
-			output << "\t\t\t\t\t<Add option=\"" << *i << "\" />\n";
+		for (const auto &i : warningsIterator->second)
+			output << "\t\t\t\t\t<Add option=\"" << i << "\" />\n";
 
 }
 
 void CodeBlocksProvider::writeDefines(const StringList &defines, std::ofstream &output) const {
-	for (StringList::const_iterator i = defines.begin(); i != defines.end(); ++i)
-		output << "\t\t\t\t\t<Add option=\"-D" << *i << "\" />\n";
+	for (const auto &define : defines)
+		output << "\t\t\t\t\t<Add option=\"-D" << define << "\" />\n";
 }
 
 void CodeBlocksProvider::writeFileListToProject(const FileNode &dir, std::ostream &projectFile, const int indentation,
 												const std::string &objPrefix, const std::string &filePrefix,
 												const std::string &pchIncludeRoot, const StringList &pchDirs, const StringList &pchExclude) {
 
-	for (FileNode::NodeList::const_iterator i = dir.children.begin(); i != dir.children.end(); ++i) {
-		const FileNode *node = *i;
-
+	for (const auto *node : dir.children) {
 		if (!node->children.empty()) {
 			writeFileListToProject(*node, projectFile, indentation + 1, objPrefix + node->name + '_', filePrefix + node->name + '/', pchIncludeRoot, pchDirs, pchExclude);
 		} else {
@@ -273,8 +271,8 @@ void CodeBlocksProvider::writeFileListToProject(const FileNode &dir, std::ostrea
 void CodeBlocksProvider::writeReferences(const BuildSetup &setup, std::ofstream &output) {
 	output << "\t\t<Project filename=\"" << setup.projectName << ".cbp\" active=\"1\">\n";
 
-	for (UUIDMap::const_iterator i = _engineUuidMap.begin(); i != _engineUuidMap.end(); ++i) {
-		output << "\t\t\t<Depends filename=\"" << i->first << ".cbp\" />\n";
+	for (const auto &i : _engineUuidMap) {
+		output << "\t\t\t<Depends filename=\"" << i.first << ".cbp\" />\n";
 	}
 
 	output << "\t\t</Project>\n";
diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h
index ebeca83ec25..c3a611a9130 100644
--- a/devtools/create_project/create_project.h
+++ b/devtools/create_project/create_project.h
@@ -544,8 +544,8 @@ struct FileNode {
 	explicit FileNode(const std::string &n) : name(n), children() {}
 
 	~FileNode() {
-		for (NodeList::iterator i = children.begin(); i != children.end(); ++i)
-			delete *i;
+		for (auto &i : children)
+			delete i;
 	}
 
 	std::string name;  ///< Name of the node
diff --git a/devtools/create_project/msbuild.cpp b/devtools/create_project/msbuild.cpp
index bf649369bd1..d2d15a48d13 100644
--- a/devtools/create_project/msbuild.cpp
+++ b/devtools/create_project/msbuild.cpp
@@ -93,11 +93,11 @@ void MSBuildProvider::createProjectFile(const std::string &name, const std::stri
 	        << "<Project DefaultTargets=\"Build\" ToolsVersion=\"" << _msvcVersion.project << "\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n"
 	        << "\t<ItemGroup Label=\"ProjectConfigurations\">\n";
 
-	for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
-		outputConfiguration(project, "Debug", *arch);
-		outputConfiguration(project, "ASan", *arch);
-		outputConfiguration(project, "LLVM", *arch);
-		outputConfiguration(project, "Release", *arch);
+	for (const auto arch : _archs) {
+		outputConfiguration(project, "Debug", arch);
+		outputConfiguration(project, "ASan", arch);
+		outputConfiguration(project, "LLVM", arch);
+		outputConfiguration(project, "Release", arch);
 	}
 	project << "\t</ItemGroup>\n";
 
@@ -112,39 +112,39 @@ void MSBuildProvider::createProjectFile(const std::string &name, const std::stri
 	// Shared configuration
 	project << "\t<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n";
 
-	for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
-		outputConfigurationType(setup, project, name, "Release", *arch, _msvcVersion);
-		outputConfigurationType(setup, project, name, "ASan", *arch, _msvcVersion);
-		outputConfigurationType(setup, project, name, "LLVM", *arch, _msvcVersion);
-		outputConfigurationType(setup, project, name, "Debug", *arch, _msvcVersion);
+	for (const auto arch : _archs) {
+		outputConfigurationType(setup, project, name, "Release", arch, _msvcVersion);
+		outputConfigurationType(setup, project, name, "ASan", arch, _msvcVersion);
+		outputConfigurationType(setup, project, name, "LLVM", arch, _msvcVersion);
+		outputConfigurationType(setup, project, name, "Debug", arch, _msvcVersion);
 	}
 
 	project << "\t<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n"
 	        << "\t<ImportGroup Label=\"ExtensionSettings\">\n"
 	        << "\t</ImportGroup>\n";
 
-	for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
-		outputProperties(setup, project, "Release", *arch);
-		outputProperties(setup, project, "ASan", *arch);
-		outputProperties(setup, project, "LLVM", *arch);
-		outputProperties(setup, project, "Debug", *arch);
+	for (const auto arch : _archs) {
+		outputProperties(setup, project, "Release", arch);
+		outputProperties(setup, project, "ASan", arch);
+		outputProperties(setup, project, "LLVM", arch);
+		outputProperties(setup, project, "Debug", arch);
 	}
 
 	project << "\t<PropertyGroup Label=\"UserMacros\" />\n";
 
 	// Project-specific settings (asan uses debug properties)
-	for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
+	for (const auto arch : _archs) {
 		BuildSetup archsetup = setup;
-		std::map<MSVC_Architecture, StringList>::const_iterator disabled_features_it = _arch_disabled_features.find(*arch);
+		const auto disabled_features_it = _arch_disabled_features.find(arch);
 		if (disabled_features_it != _arch_disabled_features.end()) {
-			for (StringList::const_iterator j = disabled_features_it->second.begin(); j != disabled_features_it->second.end(); ++j) {
-				archsetup = removeFeatureFromSetup(archsetup, *j);
+			for (const auto &j : disabled_features_it->second) {
+				archsetup = removeFeatureFromSetup(archsetup, j);
 			}
 		}
-		outputProjectSettings(project, name, archsetup, false, *arch, "Debug");
-		outputProjectSettings(project, name, archsetup, false, *arch, "ASan");
-		outputProjectSettings(project, name, archsetup, false, *arch, "LLVM");
-		outputProjectSettings(project, name, archsetup, true, *arch, "Release");
+		outputProjectSettings(project, name, archsetup, false, arch, "Debug");
+		outputProjectSettings(project, name, archsetup, false, arch, "ASan");
+		outputProjectSettings(project, name, archsetup, false, arch, "LLVM");
+		outputProjectSettings(project, name, archsetup, true, arch, "Release");
 	}
 
 	// Files
@@ -224,8 +224,8 @@ void MSBuildProvider::createFiltersFile(const BuildSetup &setup, const std::stri
 
 	// Output the list of filters
 	filters << "\t<ItemGroup>\n";
-	for (std::list<std::string>::iterator filter = _filters.begin(); filter != _filters.end(); ++filter) {
-		filters << "\t\t<Filter Include=\"" << *filter << "\">\n"
+	for (const auto &filter : _filters) {
+		filters << "\t\t<Filter Include=\"" << filter << "\">\n"
 		        << "\t\t\t<UniqueIdentifier>" << createUUID() << "</UniqueIdentifier>\n"
 		        << "\t\t</Filter>\n";
 	}
@@ -244,13 +244,13 @@ void MSBuildProvider::createFiltersFile(const BuildSetup &setup, const std::stri
 void MSBuildProvider::outputFilter(std::ostream &filters, const FileEntries &files, const std::string &action) {
 	if (!files.empty()) {
 		filters << "\t<ItemGroup>\n";
-		for (FileEntries::const_iterator entry = files.begin(), end = files.end(); entry != end; ++entry) {
-			if ((*entry).filter != "") {
-				filters << "\t\t<" << action << " Include=\"" << (*entry).path << "\">\n"
-				        << "\t\t\t<Filter>" << (*entry).filter << "</Filter>\n"
+		for (const auto &entry : files) {
+			if (!entry.filter.empty()) {
+				filters << "\t\t<" << action << " Include=\"" << entry.path << "\">\n"
+				        << "\t\t\t<Filter>" << entry.filter << "</Filter>\n"
 				        << "\t\t</" << action << ">\n";
 			} else {
-				filters << "\t\t<" << action << " Include=\"" << (*entry).path << "\" />\n";
+				filters << "\t\t<" << action << " Include=\"" << entry.path << "\" />\n";
 			}
 		}
 		filters << "\t</ItemGroup>\n";
@@ -260,9 +260,9 @@ void MSBuildProvider::outputFilter(std::ostream &filters, const FileEntries &fil
 void MSBuildProvider::writeReferences(const BuildSetup &setup, std::ofstream &output) {
 	output << "\t<ItemGroup>\n";
 
-	for (UUIDMap::const_iterator i = _engineUuidMap.begin(); i != _engineUuidMap.end(); ++i) {
-		output << "\t<ProjectReference Include=\"" << i->first << ".vcxproj\">\n"
-		       << "\t\t<Project>{" << i->second << "}</Project>\n"
+	for (const auto &i : _engineUuidMap) {
+		output << "\t<ProjectReference Include=\"" << i.first << ".vcxproj\">\n"
+		       << "\t\t<Project>{" << i.second << "}</Project>\n"
 		       << "\t</ProjectReference>\n";
 	}
 
@@ -281,8 +281,8 @@ void MSBuildProvider::outputProjectSettings(std::ofstream &project, const std::s
 
 	std::string warnings = "";
 	if (warningsIterator != _projectWarnings.end())
-		for (StringList::const_iterator i = warningsIterator->second.begin(); i != warningsIterator->second.end(); ++i)
-			warnings += *i + ';';
+		for (const auto &i : warningsIterator->second)
+			warnings += i + ';';
 
 	project << "\t<ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='" << configuration << "|" << getMSVCConfigName(arch) << "'\">\n"
 	        << "\t\t<ClCompile>\n";
@@ -308,9 +308,9 @@ void MSBuildProvider::outputProjectSettings(std::ofstream &project, const std::s
 		std::string libraries = outputLibraryDependencies(setup, isRelease);
 
 		// MSBuild uses ; for separators instead of spaces
-		for (std::string::iterator i = libraries.begin(); i != libraries.end(); ++i) {
-			if (*i == ' ') {
-				*i = ';';
+		for (char &library : libraries) {
+			if (library == ' ') {
+				library = ';';
 			}
 		}
 
@@ -344,16 +344,16 @@ void MSBuildProvider::outputProjectSettings(std::ofstream &project, const std::s
 void MSBuildProvider::outputGlobalPropFile(const BuildSetup &setup, std::ofstream &properties, MSVC_Architecture arch, const StringList &defines, const std::string &prefix) {
 
 	std::string warnings;
-	for (StringList::const_iterator i = _globalWarnings.begin(); i != _globalWarnings.end(); ++i)
-		warnings += *i + ';';
+	for (const auto &globalWarning : _globalWarnings)
+		warnings += globalWarning + ';';
 
 	std::string warningsAsErrors;
-	for (StringList::const_iterator i = _globalErrors.begin(); i != _globalErrors.end(); ++i)
-		warningsAsErrors += "/we\"" + (*i) + "\" ";
+	for (const auto &globalError : _globalErrors)
+		warningsAsErrors += "/we\"" + globalError + "\" ";
 
 	std::string definesList;
-	for (StringList::const_iterator i = defines.begin(); i != defines.end(); ++i)
-		definesList += *i + ';';
+	for (const auto &define : defines)
+		definesList += define + ';';
 
 	// Add define to include revision header
 	if (setup.runBuildEvents)
@@ -437,14 +437,14 @@ void MSBuildProvider::createBuildProp(const BuildSetup &setup, bool isRelease, M
 	}
 
 	std::string includeDirsList;
-	for (StringList::const_iterator i = setup.includeDirs.begin(); i != setup.includeDirs.end(); ++i)
-		includeDirsList += convertPathToWin(*i) + ';';
+	for (const auto &includeDir : setup.includeDirs)
+		includeDirsList += convertPathToWin(includeDir) + ';';
 
 	std::string includeSDL = setup.getSDLName();
 
 	std::string libraryDirsList;
-	for (StringList::const_iterator i = setup.libraryDirs.begin(); i != setup.libraryDirs.end(); ++i)
-		libraryDirsList += convertPathToWin(*i) + ';';
+	for (const auto &libraryDir : setup.libraryDirs)
+		libraryDirsList += convertPathToWin(libraryDir) + ';';
 
 	std::string libsPath;
 	if (setup.libsDir.empty())
@@ -577,9 +577,7 @@ void MSBuildProvider::insertPathIntoDirectory(FileNode &dir, const std::string &
 }
 
 void MSBuildProvider::createFileNodesFromPCHList(FileNode &dir, const std::string &pathBase, const StringList &pchCompileFiles) {
-	for (StringList::const_iterator it = pchCompileFiles.begin(), itEnd = pchCompileFiles.end(); it != itEnd; ++it) {
-		const std::string &pchPath = *it;
-
+	for (const auto &pchPath : pchCompileFiles) {
 		if (pchPath.size() > pathBase.size() && pchPath.substr(0, pathBase.size()) == pathBase) {
 			std::string internalPath = pchPath.substr(pathBase.size());
 
@@ -625,24 +623,24 @@ void MSBuildProvider::writeFileListToProject(const FileNode &dir, std::ostream &
 		_filters.pop_back(); // remove last empty filter
 
 		// Combine lists, removing duplicates
-		for (StringList::const_iterator it = backupFilters.begin(), itEnd = backupFilters.end(); it != itEnd; ++it) {
-			if (std::find(_filters.begin(), _filters.end(), *it) != _filters.end())
-				_filters.push_back(*it);
+		for (const auto &backupFilter : backupFilters) {
+			if (std::find(_filters.begin(), _filters.end(), backupFilter) != _filters.end())
+				_filters.push_back(backupFilter);
 		}
 	}
 
 	// Output asm files
 	if (!_asmFiles.empty()) {
 		projectFile << "\t<ItemGroup>\n";
-		for (std::list<FileEntry>::const_iterator entry = _asmFiles.begin(); entry != _asmFiles.end(); ++entry) {
+		for (const auto &_asmFile : _asmFiles) {
 
-			projectFile << "\t\t<CustomBuild Include=\"" << (*entry).path << "\">\n"
+			projectFile << "\t\t<CustomBuild Include=\"" << _asmFile.path << "\">\n"
 			            << "\t\t\t<FileType>Document</FileType>\n";
 
-			outputNasmCommand(projectFile, "Debug", (*entry).prefix);
-			outputNasmCommand(projectFile, "ASan", (*entry).prefix);
-			outputNasmCommand(projectFile, "Release", (*entry).prefix);
-			outputNasmCommand(projectFile, "LLVM", (*entry).prefix);
+			outputNasmCommand(projectFile, "Debug", _asmFile.prefix);
+			outputNasmCommand(projectFile, "ASan", _asmFile.prefix);
+			outputNasmCommand(projectFile, "Release", _asmFile.prefix);
+			outputNasmCommand(projectFile, "LLVM", _asmFile.prefix);
 
 			projectFile << "\t\t</CustomBuild>\n";
 		}
@@ -653,8 +651,8 @@ void MSBuildProvider::writeFileListToProject(const FileNode &dir, std::ostream &
 void MSBuildProvider::outputFiles(std::ostream &projectFile, const FileEntries &files, const std::string &action) {
 	if (!files.empty()) {
 		projectFile << "\t<ItemGroup>\n";
-		for (FileEntries::const_iterator entry = files.begin(), end = files.end(); entry != end; ++entry) {
-			projectFile << "\t\t<" << action << " Include=\"" << (*entry).path << "\" />\n";
+		for (const auto &file : files) {
+			projectFile << "\t\t<" << action << " Include=\"" << file.path << "\" />\n";
 		}
 		projectFile << "\t</ItemGroup>\n";
 	}
@@ -673,17 +671,15 @@ void MSBuildProvider::outputCompileFiles(std::ostream &projectFile, const std::s
 		pchIncludeRootWin = convertPathToWin(pchIncludeRoot);
 
 		// Convert PCH paths to Win
-		for (StringList::const_iterator entry = pchDirs.begin(), end = pchDirs.end(); entry != end; ++entry) {
-			std::string convertedPath = convertPathToWin(*entry);
+		for (const auto &pchDir : pchDirs) {
+			std::string convertedPath = convertPathToWin(pchDir);
 			if (convertedPath.size() < pchIncludeRootWin.size() || convertedPath.substr(0, pchIncludeRootWin.size()) != pchIncludeRootWin) {
 				error("PCH path '" + convertedPath + "' wasn't located under PCH include root '" + pchIncludeRootWin + "'");
 			}
 
-			pchDirsWin.push_back(convertPathToWin(*entry));
+			pchDirsWin.push_back(convertPathToWin(pchDir));
 		}
-		for (StringList::const_iterator entry = pchExclude.begin(), end = pchExclude.end(); entry != end; ++entry) {
-			const std::string path = *entry;
-
+		for (const auto &path : pchExclude) {
 			if (path.size() >= 2 && path[path.size() - 1] == 'o' && path[path.size() - 2] == '.')
 				pchExcludeWin.push_back(convertPathToWin(path.substr(0, path.size() - 2)));
 		}
@@ -693,12 +689,12 @@ void MSBuildProvider::outputCompileFiles(std::ostream &projectFile, const std::s
 
 	if (!files.empty()) {
 		projectFile << "\t<ItemGroup>\n";
-		for (FileEntries::const_iterator entry = files.begin(), end = files.end(); entry != end; ++entry) {
+		for (const auto &file : files) {
 			std::string pchIncludePath, pchFilePath, pchFileName;
 
 			bool fileHasPCH = false;
 			if (hasPCH)
-				fileHasPCH = calculatePchPaths(entry->path, pchIncludeRootWin, pchDirsWin, pchExcludeWin, '\\', pchIncludePath, pchFilePath, pchFileName);
+				fileHasPCH = calculatePchPaths(file.path, pchIncludeRootWin, pchDirsWin, pchExcludeWin, '\\', pchIncludePath, pchFilePath, pchFileName);
 
 			if (fileHasPCH) {
 				std::string pchOutputFileName = "$(IntDir)dists\\msvc\\%(RelativeDir)" + pchFileName.substr(0, pchFileName.size() - 2) + ".pch";
@@ -707,21 +703,21 @@ void MSBuildProvider::outputCompileFiles(std::ostream &projectFile, const std::s
 				pchInfo.file = pchIncludePath;
 				pchInfo.outputFile = pchOutputFileName;
 
-				projectFile << "\t\t<ClCompile Include=\"" << (*entry).path << "\">\n";
+				projectFile << "\t\t<ClCompile Include=\"" << file.path << "\">\n";
 				projectFile << "\t\t\t<PrecompiledHeader>Use</PrecompiledHeader>\n";
 				projectFile << "\t\t\t<PrecompiledHeaderFile>" << pchIncludePath << "</PrecompiledHeaderFile>\n";
 				projectFile << "\t\t\t<PrecompiledHeaderOutputFile>" << pchOutputFileName << "</PrecompiledHeaderOutputFile>\n";
 				projectFile << "\t\t</ClCompile>\n";
 			} else {
-				projectFile << "\t\t<ClCompile Include=\"" << (*entry).path << "\" />\n";
+				projectFile << "\t\t<ClCompile Include=\"" << file.path << "\" />\n";
 			}
 		}
 
 		// Flush PCH files
-		for (std::map<std::string, PCHInfo>::const_iterator pchIt = pchMap.begin(), pchItEnd = pchMap.end(); pchIt != pchItEnd; ++pchIt) {
-			const PCHInfo &pchInfo = pchIt->second;
+		for (const auto &pchIt : pchMap) {
+			const PCHInfo &pchInfo = pchIt.second;
 
-			const std::string &filePath = pchIt->first;
+			const std::string &filePath = pchIt.first;
 			assert(filePath.size() >= 2 && filePath.substr(filePath.size() - 2) == ".h");
 
 			std::string cppFilePath = filePath.substr(0, filePath.size() - 2) + ".cpp";
@@ -781,9 +777,7 @@ void MSBuildProvider::outputCompileFiles(std::ostream &projectFile, const std::s
 }
 
 void MSBuildProvider::computeFileList(const FileNode &dir, const std::string &objPrefix, const std::string &filePrefix) {
-	for (FileNode::NodeList::const_iterator i = dir.children.begin(); i != dir.children.end(); ++i) {
-		const FileNode *node = *i;
-
+	for (const auto *node : dir.children) {
 		if (!node->children.empty()) {
 			// Update filter
 			std::string _currentFilter = _filters.back();
diff --git a/devtools/create_project/msvc.cpp b/devtools/create_project/msvc.cpp
index f29092cd8be..88441a7d7e4 100644
--- a/devtools/create_project/msvc.cpp
+++ b/devtools/create_project/msvc.cpp
@@ -88,11 +88,11 @@ std::string MSVCProvider::getLibraryFromFeature(const char *feature, const Build
 	};
 
 	const MSVCLibrary *library = nullptr;
-	for (unsigned int i = 0; i < sizeof(s_libraries) / sizeof(s_libraries[0]); i++) {
-		if (std::strcmp(feature, s_libraries[i].feature) == 0 &&
-			((s_libraries[i].sdl == kSDLVersionAny) ||
-			(s_libraries[i].sdl == setup.useSDL))) {
-			library = &s_libraries[i];
+	for (const auto &_library : s_libraries) {
+		if (std::strcmp(feature, _library.feature) == 0 &&
+			((_library.sdl == kSDLVersionAny) ||
+			(_library.sdl == setup.useSDL))) {
+			library = &_library;
 			break;
 		}
 	}
@@ -127,9 +127,9 @@ std::string MSVCProvider::outputLibraryDependencies(const BuildSetup &setup, boo
 	// SDL is always enabled
 	libs += getLibraryFromFeature("sdl", setup, isRelease);
 	libs += " ";
-	for (FeatureList::const_iterator i = setup.features.begin(); i != setup.features.end(); ++i) {
-		if (i->enable) {
-			std::string lib = getLibraryFromFeature(i->name, setup, isRelease);
+	for (const auto &i : setup.features) {
+		if (i.enable) {
+			std::string lib = getLibraryFromFeature(i.name, setup, isRelease);
 			if (!lib.empty())
 				libs += lib + " ";
 		}
@@ -180,34 +180,34 @@ void MSVCProvider::createWorkspaceClassic(const BuildSetup &setup) {
 	}
 
 	// Note we assume that the UUID map only includes UUIDs for enabled engines!
-	for (UUIDMap::const_iterator i = _engineUuidMap.begin(); i != _engineUuidMap.end(); ++i) {
-		solution << "Project(\"{" << solutionUUID << "}\") = \"" << i->first << "\", \"" << i->first << getProjectExtension() << "\", \"{" << i->second << "}\"\n"
+	for (const auto &i : _engineUuidMap) {
+		solution << "Project(\"{" << solutionUUID << "}\") = \"" << i.first << "\", \"" << i.first << getProjectExtension() << "\", \"{" << i.second << "}\"\n"
 		         << "EndProject\n";
 	}
 
 	solution << "Global\n"
 	            "\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n";
 
-	for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
-		solution << "\t\tDebug|" << getMSVCConfigName(*arch) << " = Debug|" << getMSVCConfigName(*arch) << "\n"
-		         << "\t\tASan|" << getMSVCConfigName(*arch) << " = ASan|" << getMSVCConfigName(*arch) << "\n"
-		         << "\t\tLLVM|" << getMSVCConfigName(*arch) << " = LLVM|" << getMSVCConfigName(*arch) << "\n"
-		         << "\t\tRelease|" << getMSVCConfigName(*arch) << " = Release|" << getMSVCConfigName(*arch) << "\n";
+	for (const auto arch : _archs) {
+		solution << "\t\tDebug|" << getMSVCConfigName(arch) << " = Debug|" << getMSVCConfigName(arch) << "\n"
+		         << "\t\tASan|" << getMSVCConfigName(arch) << " = ASan|" << getMSVCConfigName(arch) << "\n"
+		         << "\t\tLLVM|" << getMSVCConfigName(arch) << " = LLVM|" << getMSVCConfigName(arch) << "\n"
+		         << "\t\tRelease|" << getMSVCConfigName(arch) << " = Release|" << getMSVCConfigName(arch) << "\n";
 	}
 
 	solution << "\tEndGlobalSection\n"
 	            "\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n";
 
-	for (UUIDMap::const_iterator i = _allProjUuidMap.begin(); i != _allProjUuidMap.end(); ++i) {
-		for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
-			solution << "\t\t{" << i->second << "}.Debug|" << getMSVCConfigName(*arch) << ".ActiveCfg = Debug|" << getMSVCConfigName(*arch) << "\n"
-			         << "\t\t{" << i->second << "}.Debug|" << getMSVCConfigName(*arch) << ".Build.0 = Debug|" << getMSVCConfigName(*arch) << "\n"
-			         << "\t\t{" << i->second << "}.ASan|" << getMSVCConfigName(*arch) << ".ActiveCfg = ASan|" << getMSVCConfigName(*arch) << "\n"
-			         << "\t\t{" << i->second << "}.ASan|" << getMSVCConfigName(*arch) << ".Build.0 = ASan|" << getMSVCConfigName(*arch) << "\n"
-			         << "\t\t{" << i->second << "}.LLVM|" << getMSVCConfigName(*arch) << ".ActiveCfg = LLVM|" << getMSVCConfigName(*arch) << "\n"
-			         << "\t\t{" << i->second << "}.LLVM|" << getMSVCConfigName(*arch) << ".Build.0 = LLVM|" << getMSVCConfigName(*arch) << "\n"
-			         << "\t\t{" << i->second << "}.Release|" << getMSVCConfigName(*arch) << ".ActiveCfg = Release|" << getMSVCConfigName(*arch) << "\n"
-			         << "\t\t{" << i->second << "}.Release|" << getMSVCConfigName(*arch) << ".Build.0 = Release|" << getMSVCConfigName(*arch) << "\n";
+	for (const auto &i : _allProjUuidMap) {
+		for (const auto arch : _archs) {
+			solution << "\t\t{" << i.second << "}.Debug|" << getMSVCConfigName(arch) << ".ActiveCfg = Debug|" << getMSVCConfigName(arch) << "\n"
+			         << "\t\t{" << i.second << "}.Debug|" << getMSVCConfigName(arch) << ".Build.0 = Debug|" << getMSVCConfigName(arch) << "\n"
+			         << "\t\t{" << i.second << "}.ASan|" << getMSVCConfigName(arch) << ".ActiveCfg = ASan|" << getMSVCConfigName(arch) << "\n"
+			         << "\t\t{" << i.second << "}.ASan|" << getMSVCConfigName(arch) << ".Build.0 = ASan|" << getMSVCConfigName(arch) << "\n"
+			         << "\t\t{" << i.second << "}.LLVM|" << getMSVCConfigName(arch) << ".ActiveCfg = LLVM|" << getMSVCConfigName(arch) << "\n"
+			         << "\t\t{" << i.second << "}.LLVM|" << getMSVCConfigName(arch) << ".Build.0 = LLVM|" << getMSVCConfigName(arch) << "\n"
+			         << "\t\t{" << i.second << "}.Release|" << getMSVCConfigName(arch) << ".ActiveCfg = Release|" << getMSVCConfigName(arch) << "\n"
+			         << "\t\t{" << i.second << "}.Release|" << getMSVCConfigName(arch) << ".Build.0 = Release|" << getMSVCConfigName(arch) << "\n";
 		}
 	}
 
@@ -269,11 +269,11 @@ void MSVCProvider::createOtherBuildFiles(const BuildSetup &setup) {
 
 	// Create the configuration property files (for Debug and Release with 32 and 64bits versions)
 	// Note: we use the debug properties for the asan configuration
-	for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
-		createBuildProp(setup, true, *arch, "Release");
-		createBuildProp(setup, false, *arch, "Debug");
-		createBuildProp(setup, false, *arch, "ASan");
-		createBuildProp(setup, false, *arch, "LLVM");
+	for (const auto arch : _archs) {
+		createBuildProp(setup, true, arch, "Release");
+		createBuildProp(setup, false, arch, "Debug");
+		createBuildProp(setup, false, arch, "ASan");
+		createBuildProp(setup, false, arch, "LLVM");
 	}
 }
 
@@ -283,20 +283,20 @@ void MSVCProvider::addResourceFiles(const BuildSetup &setup, StringList &include
 }
 
 void MSVCProvider::createGlobalProp(const BuildSetup &setup) {
-	for (std::list<MSVC_Architecture>::const_iterator arch = _archs.begin(); arch != _archs.end(); ++arch) {
-		std::ofstream properties((setup.outputDir + '/' + setup.projectDescription + "_Global" + getMSVCArchName(*arch) + getPropertiesExtension()).c_str());
+	for (const auto arch : _archs) {
+		std::ofstream properties((setup.outputDir + '/' + setup.projectDescription + "_Global" + getMSVCArchName(arch) + getPropertiesExtension()).c_str());
 		if (!properties)
-			error("Could not open \"" + setup.outputDir + '/' + setup.projectDescription + "_Global" + getMSVCArchName(*arch) + getPropertiesExtension() + "\" for writing");
+			error("Could not open \"" + setup.outputDir + '/' + setup.projectDescription + "_Global" + getMSVCArchName(arch) + getPropertiesExtension() + "\" for writing");
 
 		BuildSetup archSetup = setup;
-		std::map<MSVC_Architecture, StringList>::const_iterator arch_disabled_features_it = _arch_disabled_features.find(*arch);
+		std::map<MSVC_Architecture, StringList>::const_iterator arch_disabled_features_it = _arch_disabled_features.find(arch);
 		if (arch_disabled_features_it != _arch_disabled_features.end()) {
-			for (StringList::const_iterator feature = arch_disabled_features_it->second.begin(); feature != arch_disabled_features_it->second.end(); ++feature) {
-				archSetup = removeFeatureFromSetup(archSetup, *feature);
+			for (const auto &feature : arch_disabled_features_it->second) {
+				archSetup = removeFeatureFromSetup(archSetup, feature);
 			}
 		}
 
-		outputGlobalPropFile(archSetup, properties, *arch, archSetup.defines, convertPathToWin(archSetup.filePrefix));
+		outputGlobalPropFile(archSetup, properties, arch, archSetup.defines, convertPathToWin(archSetup.filePrefix));
 		properties.close();
 	}
 }
@@ -317,8 +317,8 @@ std::string MSVCProvider::getTestPreBuildEvent(const BuildSetup &setup) const {
 	// Build list of folders containing tests
 	std::string target = "";
 
-	for (StringList::const_iterator it = setup.testDirs.begin(); it != setup.testDirs.end(); ++it)
-		target += " $(SolutionDir)" + *it + "*.h";
+	for (const auto &testDir : setup.testDirs)
+		target += " $(SolutionDir)" + testDir + "*.h";
 
 	std::string cmdLine = "";
 	cmdLine = "if not exist \"$(SolutionDir)test\\runner\" mkdir \"$(SolutionDir)test\\runner\"\n"
diff --git a/devtools/create_project/xcode.cpp b/devtools/create_project/xcode.cpp
index 784ab5957f4..22c449634b6 100644
--- a/devtools/create_project/xcode.cpp
+++ b/devtools/create_project/xcode.cpp
@@ -265,8 +265,8 @@ void XcodeProvider::addResourceFiles(const BuildSetup &setup, StringList &includ
 	}
 
 	ValueList &resources = getResourceFiles(setup);
-	for (ValueList::iterator it = resources.begin(); it != resources.end(); ++it) {
-		includeList.push_back(setup.srcDir + "/" + *it);
+	for (const auto &resource : resources) {
+		includeList.push_back(setup.srcDir + "/" + resource);
 	}
 
 	StringList pchDirs, pchEx;
@@ -376,9 +376,7 @@ void XcodeProvider::writeFileListToProject(const FileNode &dir, std::ostream &pr
 
 	// Ensure that top-level groups are generated for i.e. engines/
 	Group *group = touchGroupsForPath(filePrefix);
-	for (FileNode::NodeList::const_iterator i = dir.children.begin(); i != dir.children.end(); ++i) {
-		const FileNode *node = *i;
-
+	for (const auto *node : dir.children) {
 		// Iff it is a file, then add (build) file references. Since we're using Groups and not File References
 		// for folders, we shouldn't add folders as file references, obviously.
 		if (node->children.empty()) {
@@ -697,13 +695,13 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
 			frameworks_osx.push_back(getLibString(libSDL + "_net", setup.useXCFramework));
 
 		int order = 0;
-		for (ValueList::iterator framework = frameworks_osx.begin(); framework != frameworks_osx.end(); framework++) {
-			std::string id = "Frameworks_" + *framework + "_osx";
-			std::string comment = *framework + " in Frameworks";
+		for (const auto &framework : frameworks_osx) {
+			std::string id = "Frameworks_" + framework + "_osx";
+			std::string comment = framework + " in Frameworks";
 
 			ADD_SETTING_ORDER_NOVALUE(osx_files, getHash(id), comment, order++);
-			ADD_BUILD_FILE(id, *framework, getHash(*framework), comment);
-			ADD_FILE_REFERENCE(*framework, *framework, properties[*framework]);
+			ADD_BUILD_FILE(id, framework, getHash(framework), comment);
+			ADD_FILE_REFERENCE(framework, framework, properties[framework]);
 		}
 
 		framework_OSX->_properties["files"] = osx_files;
@@ -820,13 +818,13 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
 		}
 
 		int order = 0;
-		for (ValueList::iterator framework = frameworks_iOS.begin(); framework != frameworks_iOS.end(); framework++) {
-			std::string id = "Frameworks_" + *framework + "_iphone";
-			std::string comment = *framework + " in Frameworks";
+		for (const auto &framework : frameworks_iOS) {
+			std::string id = "Frameworks_" + framework + "_iphone";
+			std::string comment = framework + " in Frameworks";
 
 			ADD_SETTING_ORDER_NOVALUE(iOS_files, getHash(id), comment, order++);
-			ADD_BUILD_FILE(id, *framework, getHash(*framework), comment);
-			ADD_FILE_REFERENCE(*framework, *framework, properties[*framework]);
+			ADD_BUILD_FILE(id, framework, getHash(framework), comment);
+			ADD_FILE_REFERENCE(framework, framework, properties[framework]);
 		}
 
 		framework_iPhone->_properties["files"] = iOS_files;
@@ -939,13 +937,13 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
 		}
 
 		int order = 0;
-		for (ValueList::iterator framework = frameworks_tvOS.begin(); framework != frameworks_tvOS.end(); framework++) {
-			std::string id = "Frameworks_" + *framework + "_appletv";
-			std::string comment = *framework + " in Frameworks";
+		for (const auto &framework : frameworks_tvOS) {
+			std::string id = "Frameworks_" + framework + "_appletv";
+			std::string comment = framework + " in Frameworks";
 
 			ADD_SETTING_ORDER_NOVALUE(tvOS_files, getHash(id), comment, order++);
-			ADD_BUILD_FILE(id, *framework, getHash(*framework), comment);
-			ADD_FILE_REFERENCE(*framework, *framework, properties[*framework]);
+			ADD_BUILD_FILE(id, framework, getHash(framework), comment);
+			ADD_FILE_REFERENCE(framework, framework, properties[framework]);
 		}
 
 		framework_tvOS->_properties["files"] = tvOS_files;
@@ -960,28 +958,28 @@ void XcodeProvider::setupNativeTarget() {
 	// Just use a hardcoded id for the Products-group
 	Group *productsGroup = new Group(this, "Products", "PBXGroup_CustomTemplate_Products_" , "");
 	// Output native target section
-	for (unsigned int i = 0; i < _targets.size(); i++) {
-		Object *target = new Object(this, "PBXNativeTarget_" + _targets[i], "PBXNativeTarget", "PBXNativeTarget", "", _targets[i]);
+	for (const auto &_target : _targets) {
+		Object *target = new Object(this, "PBXNativeTarget_" + _target, "PBXNativeTarget", "PBXNativeTarget", "", _target);
 
-		target->addProperty("buildConfigurationList", getHash("XCConfigurationList_" + _targets[i]), "Build configuration list for PBXNativeTarget \"" + _targets[i] + "\"", kSettingsNoValue);
+		target->addProperty("buildConfigurationList", getHash("XCConfigurationList_" + _target), "Build configuration list for PBXNativeTarget \"" + _target + "\"", kSettingsNoValue);
 
 		Property buildPhases;
 		buildPhases._hasOrder = true;
 		buildPhases._flags = kSettingsAsList;
-		buildPhases._settings[getHash("PBXResourcesBuildPhase_" + _targets[i])] = Setting("", "Resources", kSettingsNoValue, 0, 0);
-		buildPhases._settings[getHash("PBXSourcesBuildPhase_" + _targets[i])] = Setting("", "Sources", kSettingsNoValue, 0, 1);
-		buildPhases._settings[getHash("PBXFrameworksBuildPhase_" + _targets[i])] = Setting("", "Frameworks", kSettingsNoValue, 0, 2);
+		buildPhases._settings[getHash("PBXResourcesBuildPhase_" + _target)] = Setting("", "Resources", kSettingsNoValue, 0, 0);
+		buildPhases._settings[getHash("PBXSourcesBuildPhase_" + _target)] = Setting("", "Sources", kSettingsNoValue, 0, 1);
+		buildPhases._settings[getHash("PBXFrameworksBuildPhase_" + _target)] = Setting("", "Frameworks", kSettingsNoValue, 0, 2);
 		target->_properties["buildPhases"] = buildPhases;
 
 		target->addProperty("buildRules", "", "", kSettingsNoValue | kSettingsAsList);
 
 		target->addProperty("dependencies", "", "", kSettingsNoValue | kSettingsAsList);
 
-		target->addProperty("name", _targets[i], "", kSettingsNoValue | kSettingsQuoteVariable);
+		target->addProperty("name", _target, "", kSettingsNoValue | kSettingsQuoteVariable);
 		target->addProperty("productName", PROJECT_NAME, "", kSettingsNoValue);
-		addProductFileReference("PBXFileReference_" PROJECT_DESCRIPTION ".app_" + _targets[i], PROJECT_DESCRIPTION ".app");
-		productsGroup->addChildByHash(getHash("PBXFileReference_" PROJECT_DESCRIPTION ".app_" + _targets[i]), PROJECT_DESCRIPTION ".app");
-		target->addProperty("productReference", getHash("PBXFileReference_" PROJECT_DESCRIPTION ".app_" + _targets[i]), PROJECT_DESCRIPTION ".app", kSettingsNoValue);
+		addProductFileReference("PBXFileReference_" PROJECT_DESCRIPTION ".app_" + _target, PROJECT_DESCRIPTION ".app");
+		productsGroup->addChildByHash(getHash("PBXFileReference_" PROJECT_DESCRIPTION ".app_" + _target), PROJECT_DESCRIPTION ".app");
+		target->addProperty("productReference", getHash("PBXFileReference_" PROJECT_DESCRIPTION ".app_" + _target), PROJECT_DESCRIPTION ".app", kSettingsNoValue);
 		target->addProperty("productType", "com.apple.product-type.application", "", kSettingsNoValue | kSettingsQuoteVariable);
 
 		_nativeTarget.add(target);
@@ -1164,8 +1162,8 @@ XcodeProvider::ValueList& XcodeProvider::getResourceFiles(const BuildSetup &setu
 		files.push_back("NEWS.md");
 		files.push_back("README.md");
 
-		for (int i = 0; i < kEngineDataGroupCount; i++) {
-			for (const std::string &filename : _engineDataGroupDefs[i].dataFiles) {
+		for (const auto &engineDataGroupDef : _engineDataGroupDefs) {
+			for (const std::string &filename : engineDataGroupDef.dataFiles) {
 				if (std::find(files.begin(), files.end(), filename) != files.end())
 					error("Resource file " + filename + " was included multiple times");
 
@@ -1193,8 +1191,8 @@ void XcodeProvider::setupResourcesBuildPhase(const BuildSetup &setup) {
 	ValueList &files_list = getResourceFiles(setup);
 
 	// Same as for containers: a rule for each native target
-	for (unsigned int i = 0; i < _targets.size(); i++) {
-		Object *resource = new Object(this, "PBXResourcesBuildPhase_" + _targets[i], "PBXResourcesBuildPhase", "PBXResourcesBuildPhase", "", "Resources");
+	for (const auto &target : _targets) {
+		Object *resource = new Object(this, "PBXResourcesBuildPhase_" + target, "PBXResourcesBuildPhase", "PBXResourcesBuildPhase", "", "Resources");
 
 		resource->addProperty("buildActionMask", "2147483647", "", kSettingsNoValue);
 
@@ -1204,13 +1202,13 @@ void XcodeProvider::setupResourcesBuildPhase(const BuildSetup &setup) {
 		files._flags = kSettingsAsList;
 
 		int order = 0;
-		for (ValueList::iterator file = files_list.begin(); file != files_list.end(); file++) {
-			if (shouldSkipFileForTarget(*file, _targets[i], *file)) {
+		for (const auto &file : files_list) {
+			if (shouldSkipFileForTarget(file, target, file)) {
 				continue;
 			}
-			std::string resourceAbsolutePath = _projectRoot + "/" + *file;
+			std::string resourceAbsolutePath = _projectRoot + "/" + file;
 			std::string file_id = "FileReference_" + resourceAbsolutePath;
-			std::string base = basename(*file);
+			std::string base = basename(file);
 			std::string comment = base + " in Resources";
 			addBuildFile(resourceAbsolutePath, base, getHash(file_id), comment);
 			ADD_SETTING_ORDER_NOVALUE(files, getHash(resourceAbsolutePath), comment, order++);
@@ -1228,9 +1226,9 @@ void XcodeProvider::setupSourcesBuildPhase() {
 	_sourcesBuildPhase._comment = "PBXSourcesBuildPhase";
 
 	// Same as for containers: a rule for each native target
-	for (unsigned int i = 0; i < _targets.size(); i++) {
-		const std::string &targetName = _targets[i];
-		Object *source = new Object(this, "PBXSourcesBuildPhase_" + _targets[i], "PBXSourcesBuildPhase", "PBXSourcesBuildPhase", "", "Sources");
+	for (const auto &target : _targets) {
+		const std::string &targetName = target;
+		Object *source = new Object(this, "PBXSourcesBuildPhase_" + target, "PBXSourcesBuildPhase", "PBXSourcesBuildPhase", "", "Sources");
 
 		source->addProperty("buildActionMask", "2147483647", "", kSettingsNoValue);
 
@@ -1239,16 +1237,16 @@ void XcodeProvider::setupSourcesBuildPhase() {
 		files._flags = kSettingsAsList;
 
 		int order = 0;
-		for (std::vector<Object *>::iterator file = _buildFile._objects.begin(); file != _buildFile._objects.end(); ++file) {
-			const std::string &fileName = (*file)->_name;
-			if (shouldSkipFileForTarget((*file)->_id, targetName, fileName)) {
+		for (const auto *object : _buildFile._objects) {
+			const std::string &fileName = object->_name;
+			if (shouldSkipFileForTarget(object->_id, targetName, fileName)) {
 				continue;
 			}
 			if (!producesObjectFileOnOSX(fileName)) {
 				continue;
 			}
 			std::string comment = fileName + " in Sources";
-			ADD_SETTING_ORDER_NOVALUE(files, getHash((*file)->_id), comment, order++);
+			ADD_SETTING_ORDER_NOVALUE(files, getHash(object->_id), comment, order++);
 		}
 
 		setupAdditionalSources(targetName, files, order);
@@ -1393,8 +1391,8 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
 		*/
 		ADD_SETTING_QUOTE(scummvmOSX_Debug, "GCC_VERSION", "");
 		ValueList scummvmOSX_HeaderPaths;
-		for (StringList::const_iterator i = setup.includeDirs.begin(); i != setup.includeDirs.end(); ++i)
-			scummvmOSX_HeaderPaths.push_back("\"" + *i + "\"");
+		for (const auto &includeDir : setup.includeDirs)
+			scummvmOSX_HeaderPaths.push_back("\"" + includeDir + "\"");
 		scummvmOSX_HeaderPaths.push_back("/usr/local/include/" + libSDL);
 		scummvmOSX_HeaderPaths.push_back("/opt/homebrew/include/" + libSDL);
 		scummvmOSX_HeaderPaths.push_back("/opt/local/include/" + libSDL);
@@ -1410,8 +1408,8 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
 		ADD_SETTING_LIST(scummvmOSX_Debug, "HEADER_SEARCH_PATHS", scummvmOSX_HeaderPaths, kSettingsQuoteVariable | kSettingsAsList, 5);
 		ADD_SETTING_QUOTE(scummvmOSX_Debug, "INFOPLIST_FILE", "$(SRCROOT)/dists/macosx/Info.plist");
 		ValueList scummvmOSX_LibPaths;
-		for (StringList::const_iterator i = setup.libraryDirs.begin(); i != setup.libraryDirs.end(); ++i)
-			scummvmOSX_LibPaths.push_back("\"" + *i + "\"");
+		for (const auto &libraryDir : setup.libraryDirs)
+			scummvmOSX_LibPaths.push_back("\"" + libraryDir + "\"");
 		scummvmOSX_LibPaths.push_back("/usr/local/lib");
 		scummvmOSX_LibPaths.push_back("/opt/homebrew/lib");
 		scummvmOSX_LibPaths.push_back("/opt/local/lib");
@@ -1469,8 +1467,8 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
 		ValueList iPhone_HeaderSearchPaths;
 		iPhone_HeaderSearchPaths.push_back("$(SRCROOT)/engines/");
 		iPhone_HeaderSearchPaths.push_back("$(SRCROOT)");
-		for (StringList::const_iterator i = setup.includeDirs.begin(); i != setup.includeDirs.end(); ++i)
-			iPhone_HeaderSearchPaths.push_back("\"" + *i + "\"");
+		for (const auto &includeDir : setup.includeDirs)
+			iPhone_HeaderSearchPaths.push_back("\"" + includeDir + "\"");
 		iPhone_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "\"");
 		if (!setup.useXCFramework) {
 			iPhone_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include\"");
@@ -1481,8 +1479,8 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
 		ADD_SETTING_LIST(iPhone_Debug, "HEADER_SEARCH_PATHS", iPhone_HeaderSearchPaths, kSettingsAsList | kSettingsQuoteVariable, 5);
 		ADD_SETTING_QUOTE(iPhone_Debug, "INFOPLIST_FILE", "$(SRCROOT)/dists/ios7/Info.plist");
 		ValueList iPhone_LibPaths;
-		for (StringList::const_iterator i = setup.libraryDirs.begin(); i != setup.libraryDirs.end(); ++i)
-			iPhone_LibPaths.push_back("\"" + *i + "\"");
+		for (const auto &libraryDir : setup.libraryDirs)
+			iPhone_LibPaths.push_back("\"" + libraryDir + "\"");
 		iPhone_LibPaths.push_back("$(inherited)");
 		if (!setup.useXCFramework)
 			iPhone_LibPaths.push_back("\"" + projectOutputDirectory + "/lib\"");
@@ -1555,8 +1553,8 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
 		ValueList tvOS_HeaderSearchPaths;
 		tvOS_HeaderSearchPaths.push_back("$(SRCROOT)/engines/");
 		tvOS_HeaderSearchPaths.push_back("$(SRCROOT)");
-		for (StringList::const_iterator i = setup.includeDirs.begin(); i != setup.includeDirs.end(); ++i)
-			tvOS_HeaderSearchPaths.push_back("\"" + *i + "\"");
+		for (const auto &includeDir : setup.includeDirs)
+			tvOS_HeaderSearchPaths.push_back("\"" + includeDir + "\"");
 		tvOS_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "\"");
 		tvOS_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include\"");
 		if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
@@ -1565,8 +1563,8 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
 		ADD_SETTING_LIST(tvOS_Debug, "HEADER_SEARCH_PATHS", tvOS_HeaderSearchPaths, kSettingsAsList | kSettingsQuoteVariable, 5);
 		ADD_SETTING_QUOTE(tvOS_Debug, "INFOPLIST_FILE", "$(SRCROOT)/dists/tvos/Info.plist");
 		ValueList tvOS_LibPaths;
-		for (StringList::const_iterator i = setup.libraryDirs.begin(); i != setup.libraryDirs.end(); ++i)
-			tvOS_LibPaths.push_back("\"" + *i + "\"");
+		for (const auto &libraryDir : setup.libraryDirs)
+			tvOS_LibPaths.push_back("\"" + libraryDir + "\"");
 		tvOS_LibPaths.push_back("$(inherited)");
 		tvOS_LibPaths.push_back("\"" + projectOutputDirectory + "/lib\"");
 		ADD_SETTING_LIST(tvOS_Debug, "LIBRARY_SEARCH_PATHS", tvOS_LibPaths, kSettingsAsList, 5);
@@ -1611,15 +1609,15 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
 	}
 
 	// Warning: This assumes we have all configurations with a Debug & Release pair
-	for (std::vector<Object *>::iterator config = _buildConfiguration._objects.begin(); config != _buildConfiguration._objects.end(); config++) {
+	for (const auto *config : _buildConfiguration._objects) {
 
-		Object *configList = new Object(this, "XCConfigurationList_" + (*config)->_name, (*config)->_name, "XCConfigurationList", "", "Build configuration list for " + (*config)->_refType + " \"" + (*config)->_name + "\"");
+		Object *configList = new Object(this, "XCConfigurationList_" + config->_name, config->_name, "XCConfigurationList", "", "Build configuration list for " + config->_refType + " \"" + config->_name + "\"");
 
 		Property buildConfigs;
 		buildConfigs._flags = kSettingsAsList;
 
-		buildConfigs._settings[getHash((*config)->_id)] = Setting("", "Debug", kSettingsNoValue, 0, 0);
-		buildConfigs._settings[getHash((*(++config))->_id)] = Setting("", "Release", kSettingsNoValue, 0, 1);
+		buildConfigs._settings[getHash(config->_id)] = Setting("", "Debug", kSettingsNoValue, 0, 0);
+		buildConfigs._settings[getHash((++config)->_id)] = Setting("", "Release", kSettingsNoValue, 0, 1);
 
 		configList->_properties["buildConfigurations"] = buildConfigs;
 
@@ -1664,8 +1662,8 @@ void XcodeProvider::setupAdditionalSources(std::string targetName, Property &fil
 // Setup global defines
 void XcodeProvider::setupDefines(const BuildSetup &setup) {
 
-	for (StringList::const_iterator i = setup.defines.begin(); i != setup.defines.end(); ++i) {
-		ADD_DEFINE(_defines, *i);
+	for (const auto &define : setup.defines) {
+		ADD_DEFINE(_defines, define);
 	}
 	// Add special defines for Mac support
 	// TODO: check if it's still needed
@@ -1764,11 +1762,11 @@ std::string XcodeProvider::writeProperty(const std::string &variable, Property &
 		output += (prop._flags & kSettingsAsList) ? "(\n" : "{\n";
 
 	OrderedSettingList settings = prop.getOrderedSettingList();
-	for (OrderedSettingList::const_iterator setting = settings.begin(); setting != settings.end(); ++setting) {
+	for (const auto &setting : settings) {
 		if (settings.size() > 1 || (prop._flags & kSettingsSingleItem))
 			output += (flags & kSettingsSingleItem ? " " : "\t\t\t\t");
 
-		output += writeSetting(setting->first, setting->second);
+		output += writeSetting(setting.first, setting.second);
 
 		// The combination of kSettingsAsList, and kSettingsSingleItem should use "," and not ";" (i.e children
 		// in PBXGroup, so we special case that case here.
diff --git a/devtools/create_project/xcode.h b/devtools/create_project/xcode.h
index 0512952cc21..2e79ec4196c 100644
--- a/devtools/create_project/xcode.h
+++ b/devtools/create_project/xcode.h
@@ -94,8 +94,8 @@ private:
 		}
 
 		Setting(ValueList values, int flgs = 0, int idt = 0, int ord = -1) : _flags(flgs), _indent(idt), _order(ord) {
-			for (unsigned int i = 0; i < values.size(); i++)
-				_entries.push_back(Entry(values[i], ""));
+			for (const auto &value : values)
+				_entries.push_back(Entry(value, ""));
 		}
 
 		Setting(EntryList ents, int flgs = 0, int idt = 0, int ord = -1) : _entries(ents), _flags(flgs), _indent(idt), _order(ord) {}
@@ -134,8 +134,8 @@ private:
 			OrderedSettingList list;
 
 			// Prepare vector to sort
-			for (SettingList::const_iterator setting = _settings.begin(); setting != _settings.end(); ++setting)
-				list.push_back(SettingPair(setting->first, setting->second));
+			for (const auto &setting : _settings)
+				list.emplace_back(setting.first, setting.second);
 
 			// Sort vector using setting order
 			if (_hasOrder)
@@ -187,11 +187,11 @@ private:
 			output += _parent->writeProperty("isa", _properties["isa"], flags);
 
 			// Write each property
-			for (PropertyList::iterator property = _properties.begin(); property != _properties.end(); ++property) {
-				if (property->first == "isa")
+			for (auto &property : _properties) {
+				if (property.first == "isa")
 					continue;
 
-				output += _parent->writeProperty(property->first, property->second, flags);
+				output += _parent->writeProperty(property.first, property.second, flags);
 			}
 
 			if (flags & kSettingsAsList)
@@ -244,9 +244,9 @@ private:
 		}
 
 		Object *find(std::string id) {
-			for (std::vector<Object *>::iterator it = _objects.begin(); it != _objects.end(); ++it) {
-				if ((*it)->_id == id) {
-					return *it;
+			for (const auto &object : _objects) {
+				if (object->_id == id) {
+					return object;
 				}
 			}
 			return NULL;
@@ -258,8 +258,8 @@ private:
 			if (!_comment.empty())
 				output = "\n/* Begin " + _comment + " section */\n";
 
-			for (std::vector<Object *>::iterator object = _objects.begin(); object != _objects.end(); ++object)
-				output += (*object)->toString(_flags);
+			for (const auto &object : _objects)
+				output += object->toString(_flags);
 
 			if (!_comment.empty())
 				output += "/* End " + _comment + " section */\n";




More information about the Scummvm-git-logs mailing list