Pārlūkot izejas kodu

Merge topic 'ranged-for'

7d509579 Meta: modernize old-fashioned loops to range-based `for`.

Acked-by: Kitware Robot <[email protected]>
Merge-request: !1249
Brad King 8 gadi atpakaļ
vecāks
revīzija
67810849b9
100 mainītis faili ar 2122 papildinājumiem un 3142 dzēšanām
  1. 4 6
      Source/bindexplib.cxx
  2. 2 3
      Source/cmAddCompileOptionsCommand.cxx
  3. 6 9
      Source/cmAddCustomCommandCommand.cxx
  4. 2 3
      Source/cmAddDefinitionsCommand.cxx
  5. 2 3
      Source/cmCLocaleEnvironmentScope.cxx
  6. 5 5
      Source/cmCMakeMinimumRequired.cxx
  7. 6 9
      Source/cmCPackPropertiesGenerator.cxx
  8. 4 5
      Source/cmCPluginAPI.cxx
  9. 16 21
      Source/cmCTest.cxx
  10. 9 14
      Source/cmCacheManager.cxx
  11. 2 2
      Source/cmCommandArgumentParserHelper.cxx
  12. 16 28
      Source/cmCommandArgumentsHelper.cxx
  13. 4 7
      Source/cmCommonTargetGenerator.cxx
  14. 5 5
      Source/cmComputeComponentGraph.cxx
  15. 39 52
      Source/cmComputeLinkDepends.cxx
  16. 44 67
      Source/cmComputeLinkInformation.cxx
  17. 42 55
      Source/cmComputeTargetDepends.cxx
  18. 21 30
      Source/cmCoreTryCompile.cxx
  19. 3 4
      Source/cmCryptoHash.cxx
  20. 8 12
      Source/cmCustomCommandGenerator.cxx
  21. 12 15
      Source/cmDefinitions.cxx
  22. 2 4
      Source/cmDepends.cxx
  23. 27 40
      Source/cmDependsC.cxx
  24. 37 54
      Source/cmDependsFortran.cxx
  25. 14 26
      Source/cmDependsJavaParserHelper.cxx
  26. 17 26
      Source/cmDocumentation.cxx
  27. 7 8
      Source/cmDocumentationFormatter.cxx
  28. 2 4
      Source/cmDynamicLoader.cxx
  29. 4 8
      Source/cmELF.cxx
  30. 3 4
      Source/cmEnableLanguageCommand.cxx
  31. 7 7
      Source/cmExecProgramCommand.cxx
  32. 5 5
      Source/cmExecuteProcessCommand.cxx
  33. 16 20
      Source/cmExportBuildAndroidMKGenerator.cxx
  34. 12 27
      Source/cmExportBuildFileGenerator.cxx
  35. 10 14
      Source/cmExportCommand.cxx
  36. 43 53
      Source/cmExportFileGenerator.cxx
  37. 1 4
      Source/cmExportInstallAndroidMKGenerator.cxx
  38. 20 33
      Source/cmExportInstallFileGenerator.cxx
  39. 17 25
      Source/cmExportLibraryDependenciesCommand.cxx
  40. 2 3
      Source/cmExportSet.cxx
  41. 11 15
      Source/cmExportTryCompileFileGenerator.cxx
  42. 61 91
      Source/cmExtraCodeBlocksGenerator.cxx
  43. 41 60
      Source/cmExtraCodeLiteGenerator.cxx
  44. 67 95
      Source/cmExtraEclipseCDT4Generator.cxx
  45. 20 30
      Source/cmExtraKateGenerator.cxx
  46. 23 32
      Source/cmExtraSublimeTextGenerator.cxx
  47. 21 28
      Source/cmFileCommand.cxx
  48. 13 15
      Source/cmFileLockPool.cxx
  49. 17 16
      Source/cmFileMonitor.cxx
  50. 4 8
      Source/cmFindBase.cxx
  51. 16 22
      Source/cmFindCommon.cxx
  52. 25 43
      Source/cmFindLibraryCommand.cxx
  53. 47 74
      Source/cmFindPackageCommand.cxx
  54. 8 14
      Source/cmFindPathCommand.cxx
  55. 15 23
      Source/cmFindProgramCommand.cxx
  56. 2 2
      Source/cmForEachCommand.cxx
  57. 2 3
      Source/cmFortranParserImpl.cxx
  58. 2 2
      Source/cmFunctionCommand.cxx
  59. 4 5
      Source/cmGeneratorExpression.cxx
  60. 5 8
      Source/cmGeneratorExpressionEvaluationFile.cxx
  61. 18 24
      Source/cmGeneratorExpressionNode.cxx
  62. 172 283
      Source/cmGeneratorTarget.cxx
  63. 131 188
      Source/cmGlobalGenerator.cxx
  64. 29 47
      Source/cmGlobalKdevelopGenerator.cxx
  65. 113 170
      Source/cmGlobalNinjaGenerator.cxx
  66. 58 93
      Source/cmGlobalUnixMakefileGenerator3.cxx
  67. 40 69
      Source/cmGraphVizWriter.cxx
  68. 17 21
      Source/cmIfCommand.cxx
  69. 2 3
      Source/cmIncludeExternalMSProjectCommand.cxx
  70. 25 34
      Source/cmInstallCommand.cxx
  71. 2 4
      Source/cmInstallCommandArguments.cxx
  72. 5 7
      Source/cmInstallDirectoryGenerator.cxx
  73. 8 15
      Source/cmInstallExportGenerator.cxx
  74. 2 3
      Source/cmInstallFilesGenerator.cxx
  75. 2 3
      Source/cmInstallGenerator.cxx
  76. 11 22
      Source/cmInstallTargetGenerator.cxx
  77. 2 4
      Source/cmInstalledFile.cxx
  78. 2 3
      Source/cmLinkDirectoriesCommand.cxx
  79. 12 16
      Source/cmLinkLineComputer.cxx
  80. 8 10
      Source/cmLinkLineDeviceComputer.cxx
  81. 11 12
      Source/cmLoadCacheCommand.cxx
  82. 2 3
      Source/cmLocalCommonGenerator.cxx
  83. 105 145
      Source/cmLocalGenerator.cxx
  84. 17 23
      Source/cmLocalNinjaGenerator.cxx
  85. 98 131
      Source/cmLocalUnixMakefileGenerator3.cxx
  86. 9 11
      Source/cmMacroCommand.cxx
  87. 77 114
      Source/cmMakefile.cxx
  88. 8 10
      Source/cmMakefileExecutableTargetGenerator.cxx
  89. 14 22
      Source/cmMakefileLibraryTargetGenerator.cxx
  90. 71 110
      Source/cmMakefileTargetGenerator.cxx
  91. 24 36
      Source/cmNinjaNormalTargetGenerator.cxx
  92. 28 48
      Source/cmNinjaTargetGenerator.cxx
  93. 7 12
      Source/cmNinjaUtilityTargetGenerator.cxx
  94. 3 4
      Source/cmOSXBundleGenerator.cxx
  95. 24 31
      Source/cmOrderDirectories.cxx
  96. 3 4
      Source/cmOutputConverter.cxx
  97. 19 45
      Source/cmOutputRequiredFilesCommand.cxx
  98. 37 49
      Source/cmParseArgumentsCommand.cxx
  99. 2 4
      Source/cmPathLabel.cxx
  100. 2 3
      Source/cmPolicies.cxx

+ 4 - 6
Source/bindexplib.cxx

@@ -394,12 +394,10 @@ bool bindexplib::AddDefinitionFile(const char* filename)
 void bindexplib::WriteFile(FILE* file)
 {
   fprintf(file, "EXPORTS \n");
-  for (std::set<std::string>::const_iterator i = this->DataSymbols.begin();
-       i != this->DataSymbols.end(); ++i) {
-    fprintf(file, "\t%s \t DATA\n", i->c_str());
+  for (std::string const& ds : this->DataSymbols) {
+    fprintf(file, "\t%s \t DATA\n", ds.c_str());
   }
-  for (std::set<std::string>::const_iterator i = this->Symbols.begin();
-       i != this->Symbols.end(); ++i) {
-    fprintf(file, "\t%s\n", i->c_str());
+  for (std::string const& s : this->Symbols) {
+    fprintf(file, "\t%s\n", s.c_str());
   }
 }

+ 2 - 3
Source/cmAddCompileOptionsCommand.cxx

@@ -13,9 +13,8 @@ bool cmAddCompileOptionsCommand::InitialPass(
     return true;
   }
 
-  for (std::vector<std::string>::const_iterator i = args.begin();
-       i != args.end(); ++i) {
-    this->Makefile->AddCompileOption(i->c_str());
+  for (std::string const& i : args) {
+    this->Makefile->AddCompileOption(i.c_str());
   }
   return true;
 }

+ 6 - 9
Source/cmAddCustomCommandCommand.cxx

@@ -68,9 +68,7 @@ bool cmAddCustomCommandCommand::InitialPass(
 
   tdoing doing = doing_nothing;
 
-  for (unsigned int j = 0; j < args.size(); ++j) {
-    std::string const& copy = args[j];
-
+  for (std::string const& copy : args) {
     if (copy == "SOURCE") {
       doing = doing_source;
     } else if (copy == "COMMAND") {
@@ -355,12 +353,11 @@ bool cmAddCustomCommandCommand::InitialPass(
 bool cmAddCustomCommandCommand::CheckOutputs(
   const std::vector<std::string>& outputs)
 {
-  for (std::vector<std::string>::const_iterator o = outputs.begin();
-       o != outputs.end(); ++o) {
+  for (std::string const& o : outputs) {
     // Make sure the file will not be generated into the source
     // directory during an out of source build.
-    if (!this->Makefile->CanIWriteThisFile(o->c_str())) {
-      std::string e = "attempted to have a file \"" + *o +
+    if (!this->Makefile->CanIWriteThisFile(o.c_str())) {
+      std::string e = "attempted to have a file \"" + o +
         "\" in a source directory as an output of custom command.";
       this->SetError(e);
       cmSystemTools::SetFatalErrorOccured();
@@ -368,10 +365,10 @@ bool cmAddCustomCommandCommand::CheckOutputs(
     }
 
     // Make sure the output file name has no invalid characters.
-    std::string::size_type pos = o->find_first_of("#<>");
+    std::string::size_type pos = o.find_first_of("#<>");
     if (pos != std::string::npos) {
       std::ostringstream msg;
-      msg << "called with OUTPUT containing a \"" << (*o)[pos]
+      msg << "called with OUTPUT containing a \"" << o[pos]
           << "\".  This character is not allowed.";
       this->SetError(msg.str());
       return false;

+ 2 - 3
Source/cmAddDefinitionsCommand.cxx

@@ -15,9 +15,8 @@ bool cmAddDefinitionsCommand::InitialPass(std::vector<std::string> const& args,
     return true;
   }
 
-  for (std::vector<std::string>::const_iterator i = args.begin();
-       i != args.end(); ++i) {
-    this->Makefile->AddDefineFlag(i->c_str());
+  for (std::string const& i : args) {
+    this->Makefile->AddDefineFlag(i.c_str());
   }
   return true;
 }

+ 2 - 3
Source/cmCLocaleEnvironmentScope.cxx

@@ -45,10 +45,9 @@ void cmCLocaleEnvironmentScope::SetEnv(std::string const& key,
 
 cmCLocaleEnvironmentScope::~cmCLocaleEnvironmentScope()
 {
-  for (backup_map_t::const_iterator i = this->EnvironmentBackup.begin();
-       i != this->EnvironmentBackup.end(); ++i) {
+  for (auto const& envb : this->EnvironmentBackup) {
     std::ostringstream tmp;
-    tmp << i->first << "=" << i->second;
+    tmp << envb.first << "=" << envb.second;
     cmSystemTools::PutEnv(tmp.str());
   }
 }

+ 5 - 5
Source/cmCMakeMinimumRequired.cxx

@@ -19,10 +19,10 @@ bool cmCMakeMinimumRequired::InitialPass(std::vector<std::string> const& args,
   // Process arguments.
   std::string version_string;
   bool doing_version = false;
-  for (unsigned int i = 0; i < args.size(); ++i) {
-    if (args[i] == "VERSION") {
+  for (std::string const& arg : args) {
+    if (arg == "VERSION") {
       doing_version = true;
-    } else if (args[i] == "FATAL_ERROR") {
+    } else if (arg == "FATAL_ERROR") {
       if (doing_version) {
         this->SetError("called with no value for VERSION.");
         return false;
@@ -30,9 +30,9 @@ bool cmCMakeMinimumRequired::InitialPass(std::vector<std::string> const& args,
       doing_version = false;
     } else if (doing_version) {
       doing_version = false;
-      version_string = args[i];
+      version_string = arg;
     } else {
-      this->UnknownArguments.push_back(args[i]);
+      this->UnknownArguments.push_back(arg);
     }
   }
   if (doing_version) {

+ 6 - 9
Source/cmCPackPropertiesGenerator.cxx

@@ -6,7 +6,6 @@
 
 #include <map>
 #include <ostream>
-#include <utility>
 
 cmCPackPropertiesGenerator::cmCPackPropertiesGenerator(
   cmLocalGenerator* lg, cmInstalledFile const& installedFile,
@@ -27,19 +26,17 @@ void cmCPackPropertiesGenerator::GenerateScriptForConfig(
   cmInstalledFile::PropertyMapType const& properties =
     this->InstalledFile.GetProperties();
 
-  for (cmInstalledFile::PropertyMapType::const_iterator i = properties.begin();
-       i != properties.end(); ++i) {
-    std::string const& name = i->first;
-    cmInstalledFile::Property const& property = i->second;
+  for (cmInstalledFile::PropertyMapType::value_type const& i : properties) {
+    std::string const& name = i.first;
+    cmInstalledFile::Property const& property = i.second;
 
     os << indent << "set_property(INSTALL "
        << cmOutputConverter::EscapeForCMake(expandedFileName) << " PROPERTY "
        << cmOutputConverter::EscapeForCMake(name);
 
-    for (cmInstalledFile::ExpressionVectorType::const_iterator j =
-           property.ValueExpressions.begin();
-         j != property.ValueExpressions.end(); ++j) {
-      std::string value = (*j)->Evaluate(this->LG, config);
+    for (cmInstalledFile::ExpressionVectorType::value_type const& j :
+         property.ValueExpressions) {
+      std::string value = j->Evaluate(this->LG, config);
       os << " " << cmOutputConverter::EscapeForCMake(value);
     }
 

+ 4 - 5
Source/cmCPluginAPI.cxx

@@ -504,8 +504,8 @@ public:
   typedef derived::value_type value_type;
   ~cmCPluginAPISourceFileMap()
   {
-    for (iterator i = this->begin(); i != this->end(); ++i) {
-      delete i->second;
+    for (auto const& i : *this) {
+      delete i.second;
     }
   }
 };
@@ -568,9 +568,8 @@ void* CCONV cmAddSource(void* arg, void* arg2)
   // Create the real cmSourceFile instance and copy over saved information.
   cmSourceFile* rsf = mf->GetOrCreateSource(osf->FullPath);
   rsf->GetProperties() = osf->Properties;
-  for (std::vector<std::string>::iterator i = osf->Depends.begin();
-       i != osf->Depends.end(); ++i) {
-    rsf->AddDepend(*i);
+  for (std::string const& d : osf->Depends) {
+    rsf->AddDepend(d);
   }
 
   // Create the proxy for the real source file.

+ 16 - 21
Source/cmCTest.cxx

@@ -222,8 +222,7 @@ std::string cmCTest::MakeURLSafe(const std::string& str)
 {
   std::ostringstream ost;
   char buffer[10];
-  for (std::string::size_type pos = 0; pos < str.size(); pos++) {
-    unsigned char ch = str[pos];
+  for (unsigned char ch : str) {
     if ((ch > 126 || ch < 32 || ch == '&' || ch == '%' || ch == '+' ||
          ch == '=' || ch == '@') &&
         ch != 9) {
@@ -973,9 +972,8 @@ int cmCTest::RunMakeCommand(const char* command, std::string& output,
   }
 
   std::vector<const char*> argv;
-  for (std::vector<std::string>::const_iterator a = args.begin();
-       a != args.end(); ++a) {
-    argv.push_back(a->c_str());
+  for (std::string const& a : args) {
+    argv.push_back(a.c_str());
   }
   argv.push_back(nullptr);
 
@@ -1009,9 +1007,9 @@ int cmCTest::RunMakeCommand(const char* command, std::string& output,
                << "    " << std::flush);
   while (cmsysProcess_WaitForData(cp, &data, &length, nullptr)) {
     processOutput.DecodeText(data, length, strdata);
-    for (size_t cc = 0; cc < strdata.size(); ++cc) {
-      if (strdata[cc] == 0) {
-        strdata[cc] = '\n';
+    for (char& cc : strdata) {
+      if (cc == 0) {
+        cc = '\n';
       }
     }
     output.append(strdata);
@@ -1107,18 +1105,18 @@ int cmCTest::RunTest(std::vector<const char*> argv, std::string* output,
     inst.SetStreams(&oss, &oss);
 
     std::vector<std::string> args;
-    for (unsigned int i = 0; i < argv.size(); ++i) {
-      if (argv[i]) {
+    for (char const* i : argv) {
+      if (i) {
         // make sure we pass the timeout in for any build and test
         // invocations. Since --build-generator is required this is a
         // good place to check for it, and to add the arguments in
-        if (strcmp(argv[i], "--build-generator") == 0 && timeout > 0) {
+        if (strcmp(i, "--build-generator") == 0 && timeout > 0) {
           args.push_back("--test-timeout");
           std::ostringstream msg;
           msg << timeout;
           args.push_back(msg.str());
         }
-        args.push_back(argv[i]);
+        args.push_back(i);
       }
     }
     if (log) {
@@ -1348,9 +1346,8 @@ void cmCTest::AddSiteProperties(cmXMLWriter& xml)
       std::string l = labels;
       std::vector<std::string> args;
       cmSystemTools::ExpandListArgument(l, args);
-      for (std::vector<std::string>::iterator i = args.begin();
-           i != args.end(); ++i) {
-        xml.Element("Label", *i);
+      for (std::string const& i : args) {
+        xml.Element("Label", i);
       }
       xml.EndElement();
     }
@@ -2352,9 +2349,8 @@ void cmCTest::PopulateCustomVector(cmMakefile* mf, const std::string& def,
   vec.clear();
   cmSystemTools::ExpandListArgument(dval, vec);
 
-  for (std::vector<std::string>::const_iterator it = vec.begin();
-       it != vec.end(); ++it) {
-    cmCTestLog(this, DEBUG, "  -- " << *it << std::endl);
+  for (std::string const& it : vec) {
+    cmCTestLog(this, DEBUG, "  -- " << it << std::endl);
   }
 }
 
@@ -2592,9 +2588,8 @@ bool cmCTest::RunCommand(const char* command, std::string* stdOut,
   }
 
   std::vector<const char*> argv;
-  for (std::vector<std::string>::const_iterator a = args.begin();
-       a != args.end(); ++a) {
-    argv.push_back(a->c_str());
+  for (std::string const& a : args) {
+    argv.push_back(a.c_str());
   }
   argv.push_back(nullptr);
 

+ 9 - 14
Source/cmCacheManager.cxx

@@ -297,10 +297,8 @@ bool cmCacheManager::SaveCache(const std::string& path)
   fout << "########################\n";
   fout << "\n";
 
-  for (std::map<std::string, CacheEntry>::const_iterator i =
-         this->Cache.begin();
-       i != this->Cache.end(); ++i) {
-    const CacheEntry& ce = (*i).second;
+  for (auto const& i : this->Cache) {
+    CacheEntry const& ce = i.second;
     cmStateEnums::CacheEntryType t = ce.Type;
     if (!ce.Initialized) {
       /*
@@ -315,7 +313,7 @@ bool cmCacheManager::SaveCache(const std::string& path)
       } else {
         cmCacheManager::OutputHelpString(fout, "Missing description");
       }
-      this->OutputKey(fout, i->first);
+      this->OutputKey(fout, i.first);
       fout << ":" << cmState::CacheEntryTypeToString(t) << "=";
       this->OutputValue(fout, ce.Value);
       fout << "\n\n";
@@ -462,11 +460,9 @@ void cmCacheManager::PrintCache(std::ostream& out) const
 {
   out << "=================================================" << std::endl;
   out << "CMakeCache Contents:" << std::endl;
-  for (std::map<std::string, CacheEntry>::const_iterator i =
-         this->Cache.begin();
-       i != this->Cache.end(); ++i) {
-    if ((*i).second.Type != cmStateEnums::INTERNAL) {
-      out << (*i).first << " = " << (*i).second.Value << std::endl;
+  for (auto const& i : this->Cache) {
+    if (i.second.Type != cmStateEnums::INTERNAL) {
+      out << i.first << " = " << i.second.Value << std::endl;
     }
   }
   out << "\n\n";
@@ -494,11 +490,10 @@ void cmCacheManager::AddCacheEntry(const std::string& key, const char* value,
       cmSystemTools::ExpandListArgument(e.Value, paths);
       const char* sep = "";
       e.Value = "";
-      for (std::vector<std::string>::iterator i = paths.begin();
-           i != paths.end(); ++i) {
-        cmSystemTools::ConvertToUnixSlashes(*i);
+      for (std::string& i : paths) {
+        cmSystemTools::ConvertToUnixSlashes(i);
         e.Value += sep;
-        e.Value += *i;
+        e.Value += i;
         sep = ";";
       }
     } else {

+ 2 - 2
Source/cmCommandArgumentParserHelper.cxx

@@ -258,8 +258,8 @@ int cmCommandArgumentParserHelper::ParseString(const char* str, int verb)
 void cmCommandArgumentParserHelper::CleanupParser()
 {
   std::vector<char*>::iterator sit;
-  for (sit = this->Variables.begin(); sit != this->Variables.end(); ++sit) {
-    delete[] * sit;
+  for (char* var : this->Variables) {
+    delete[] var;
   }
   this->Variables.erase(this->Variables.begin(), this->Variables.end());
 }

+ 16 - 28
Source/cmCommandArgumentsHelper.cxx

@@ -61,11 +61,9 @@ bool cmCommandArgument::KeyMatches(const std::string& key) const
 void cmCommandArgument::ApplyOwnGroup()
 {
   if (this->Group != nullptr) {
-    for (std::vector<cmCommandArgument*>::const_iterator it =
-           this->Group->ContainedArguments.begin();
-         it != this->Group->ContainedArguments.end(); ++it) {
-      if (*it != this) {
-        this->ArgumentsBefore.insert(*it);
+    for (cmCommandArgument* cargs : this->Group->ContainedArguments) {
+      if (cargs != this) {
+        this->ArgumentsBefore.insert(cargs);
       }
     }
   }
@@ -180,19 +178,15 @@ void cmCADisabler::DoReset()
 
 void cmCommandArgumentGroup::Follows(const cmCommandArgument* arg)
 {
-  for (std::vector<cmCommandArgument*>::iterator it =
-         this->ContainedArguments.begin();
-       it != this->ContainedArguments.end(); ++it) {
-    (*it)->Follows(arg);
+  for (cmCommandArgument* ca : this->ContainedArguments) {
+    ca->Follows(arg);
   }
 }
 
 void cmCommandArgumentGroup::FollowsGroup(const cmCommandArgumentGroup* group)
 {
-  for (std::vector<cmCommandArgument*>::iterator it =
-         this->ContainedArguments.begin();
-       it != this->ContainedArguments.end(); ++it) {
-    (*it)->FollowsGroup(group);
+  for (cmCommandArgument* ca : this->ContainedArguments) {
+    ca->FollowsGroup(group);
   }
 }
 
@@ -203,37 +197,31 @@ void cmCommandArgumentsHelper::Parse(const std::vector<std::string>* args,
     return;
   }
 
-  for (std::vector<cmCommandArgument*>::iterator argIt =
-         this->Arguments.begin();
-       argIt != this->Arguments.end(); ++argIt) {
-    (*argIt)->ApplyOwnGroup();
-    (*argIt)->Reset();
+  for (cmCommandArgument* ca : this->Arguments) {
+    ca->ApplyOwnGroup();
+    ca->Reset();
   }
 
   cmCommandArgument* activeArgument = nullptr;
   const cmCommandArgument* previousArgument = nullptr;
-  for (std::vector<std::string>::const_iterator it = args->begin();
-       it != args->end(); ++it) {
-    for (std::vector<cmCommandArgument*>::iterator argIt =
-           this->Arguments.begin();
-         argIt != this->Arguments.end(); ++argIt) {
-      if ((*argIt)->KeyMatches(*it) &&
-          ((*argIt)->MayFollow(previousArgument))) {
-        activeArgument = *argIt;
+  for (std::string const& it : *args) {
+    for (cmCommandArgument* ca : this->Arguments) {
+      if (ca->KeyMatches(it) && (ca->MayFollow(previousArgument))) {
+        activeArgument = ca;
         activeArgument->Activate();
         break;
       }
     }
 
     if (activeArgument) {
-      bool argDone = activeArgument->Consume(*it);
+      bool argDone = activeArgument->Consume(it);
       previousArgument = activeArgument;
       if (argDone) {
         activeArgument = nullptr;
       }
     } else {
       if (unconsumedArgs != nullptr) {
-        unconsumedArgs->push_back(*it);
+        unconsumedArgs->push_back(it);
       }
     }
   }

+ 4 - 7
Source/cmCommonTargetGenerator.cxx

@@ -147,10 +147,8 @@ std::vector<std::string> cmCommonTargetGenerator::GetLinkedTargetDirectories()
   if (cmComputeLinkInformation* cli =
         this->GeneratorTarget->GetLinkInformation(this->ConfigName)) {
     cmComputeLinkInformation::ItemVector const& items = cli->GetItems();
-    for (cmComputeLinkInformation::ItemVector::const_iterator i =
-           items.begin();
-         i != items.end(); ++i) {
-      cmGeneratorTarget const* linkee = i->Target;
+    for (auto const& item : items) {
+      cmGeneratorTarget const* linkee = item.Target;
       if (linkee && !linkee->IsImported()
           // We can ignore the INTERFACE_LIBRARY items because
           // Target->GetLinkInformation already processed their
@@ -196,12 +194,11 @@ std::string cmCommonTargetGenerator::GetManifests()
   this->GeneratorTarget->GetManifests(manifest_srcs, this->ConfigName);
 
   std::vector<std::string> manifests;
-  for (std::vector<cmSourceFile const*>::iterator mi = manifest_srcs.begin();
-       mi != manifest_srcs.end(); ++mi) {
+  for (cmSourceFile const* manifest_src : manifest_srcs) {
     manifests.push_back(this->LocalCommonGenerator->ConvertToOutputFormat(
       this->LocalCommonGenerator->ConvertToRelativePath(
         this->LocalCommonGenerator->GetWorkingDirectory(),
-        (*mi)->GetFullPath()),
+        manifest_src->GetFullPath()),
       cmOutputConverter::SHELL));
   }
 

+ 5 - 5
Source/cmComputeComponentGraph.cxx

@@ -57,8 +57,8 @@ void cmComputeComponentGraph::TarjanVisit(int i)
 
   // Follow outgoing edges.
   EdgeList const& nl = this->InputGraph[i];
-  for (EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-    int j = *ni;
+  for (cmGraphEdge const& ni : nl) {
+    int j = ni;
 
     // Ignore edges to nodes that have been reached by a previous DFS
     // walk.  Since we did not reach the current node from that walk
@@ -119,14 +119,14 @@ void cmComputeComponentGraph::TransferEdges()
   for (int i = 0; i < n; ++i) {
     int i_component = this->TarjanComponents[i];
     EdgeList const& nl = this->InputGraph[i];
-    for (EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-      int j = *ni;
+    for (cmGraphEdge const& ni : nl) {
+      int j = ni;
       int j_component = this->TarjanComponents[j];
       if (i_component != j_component) {
         // We do not attempt to combine duplicate edges, but instead
         // store the inter-component edges with suitable multiplicity.
         this->ComponentGraph[i_component].push_back(
-          cmGraphEdge(j_component, ni->IsStrong()));
+          cmGraphEdge(j_component, ni.IsStrong()));
       }
     }
   }

+ 39 - 52
Source/cmComputeLinkDepends.cxx

@@ -357,10 +357,8 @@ void cmComputeLinkDepends::FollowLinkEntry(BFSEntry qe)
       this->FollowSharedDeps(depender_index, iface);
 
       // Support for CMP0003.
-      for (std::vector<cmLinkItem>::const_iterator oi =
-             iface->WrongConfigLibraries.begin();
-           oi != iface->WrongConfigLibraries.end(); ++oi) {
-        this->CheckWrongConfigItem(*oi);
+      for (cmLinkItem const& oi : iface->WrongConfigLibraries) {
+        this->CheckWrongConfigItem(oi);
       }
     }
   } else {
@@ -385,10 +383,9 @@ void cmComputeLinkDepends::FollowSharedDeps(int depender_index,
 void cmComputeLinkDepends::QueueSharedDependencies(
   int depender_index, std::vector<cmLinkItem> const& deps)
 {
-  for (std::vector<cmLinkItem>::const_iterator li = deps.begin();
-       li != deps.end(); ++li) {
+  for (cmLinkItem const& li : deps) {
     SharedDepEntry qe;
-    qe.Item = *li;
+    qe.Item = li;
     qe.DependerIndex = depender_index;
     this->SharedDepQueue.push(qe);
   }
@@ -445,25 +442,24 @@ void cmComputeLinkDepends::AddVarLinkEntries(int depender_index,
   std::vector<cmLinkItem> actual_libs;
   cmTargetLinkLibraryType llt = GENERAL_LibraryType;
   bool haveLLT = false;
-  for (std::vector<std::string>::const_iterator di = deplist.begin();
-       di != deplist.end(); ++di) {
-    if (*di == "debug") {
+  for (std::string const& d : deplist) {
+    if (d == "debug") {
       llt = DEBUG_LibraryType;
       haveLLT = true;
-    } else if (*di == "optimized") {
+    } else if (d == "optimized") {
       llt = OPTIMIZED_LibraryType;
       haveLLT = true;
-    } else if (*di == "general") {
+    } else if (d == "general") {
       llt = GENERAL_LibraryType;
       haveLLT = true;
-    } else if (!di->empty()) {
+    } else if (!d.empty()) {
       // If no explicit link type was given prior to this entry then
       // check if the entry has its own link type variable.  This is
       // needed for compatibility with dependency files generated by
       // the export_library_dependencies command from CMake 2.4 and
       // lower.
       if (!haveLLT) {
-        std::string var = *di;
+        std::string var = d;
         var += "_LINK_TYPE";
         if (const char* val = this->Makefile->GetDefinition(var)) {
           if (strcmp(val, "debug") == 0) {
@@ -476,10 +472,10 @@ void cmComputeLinkDepends::AddVarLinkEntries(int depender_index,
 
       // If the library is meant for this link type then use it.
       if (llt == GENERAL_LibraryType || llt == this->LinkType) {
-        cmLinkItem item(*di, this->FindTargetToLink(depender_index, *di));
+        cmLinkItem item(d, this->FindTargetToLink(depender_index, d));
         actual_libs.push_back(item);
       } else if (this->OldLinkDirMode) {
-        cmLinkItem item(*di, this->FindTargetToLink(depender_index, *di));
+        cmLinkItem item(d, this->FindTargetToLink(depender_index, d));
         this->CheckWrongConfigItem(item);
       }
 
@@ -499,10 +495,8 @@ void cmComputeLinkDepends::AddDirectLinkEntries()
   cmLinkImplementation const* impl =
     this->Target->GetLinkImplementation(this->Config);
   this->AddLinkEntries(-1, impl->Libraries);
-  for (std::vector<cmLinkItem>::const_iterator wi =
-         impl->WrongConfigLibraries.begin();
-       wi != impl->WrongConfigLibraries.end(); ++wi) {
-    this->CheckWrongConfigItem(*wi);
+  for (cmLinkItem const& wi : impl->WrongConfigLibraries) {
+    this->CheckWrongConfigItem(wi);
   }
 }
 
@@ -514,17 +508,16 @@ void cmComputeLinkDepends::AddLinkEntries(int depender_index,
   std::map<int, DependSet> dependSets;
 
   // Loop over the libraries linked directly by the depender.
-  for (typename std::vector<T>::const_iterator li = libs.begin();
-       li != libs.end(); ++li) {
+  for (T const& l : libs) {
     // Skip entries that will resolve to the target getting linked or
     // are empty.
-    cmLinkItem const& item = *li;
+    cmLinkItem const& item = l;
     if (item == this->Target->GetName() || item.empty()) {
       continue;
     }
 
     // Add a link entry for this item.
-    int dependee_index = this->AddLinkEntry(*li);
+    int dependee_index = this->AddLinkEntry(l);
 
     // The dependee must come after the depender.
     if (depender_index >= 0) {
@@ -535,16 +528,15 @@ void cmComputeLinkDepends::AddLinkEntries(int depender_index,
     }
 
     // Update the inferred dependencies for earlier items.
-    for (std::map<int, DependSet>::iterator dsi = dependSets.begin();
-         dsi != dependSets.end(); ++dsi) {
+    for (auto& dependSet : dependSets) {
       // Add this item to the inferred dependencies of other items.
       // Target items are never inferred dependees because unknown
       // items are outside libraries that should not be depending on
       // targets.
       if (!this->EntryList[dependee_index].Target &&
           !this->EntryList[dependee_index].IsFlag &&
-          dependee_index != dsi->first) {
-        dsi->second.insert(dependee_index);
+          dependee_index != dependSet.first) {
+        dependSet.second.insert(dependee_index);
       }
     }
 
@@ -556,9 +548,8 @@ void cmComputeLinkDepends::AddLinkEntries(int depender_index,
   }
 
   // Store the inferred dependency sets discovered for this list.
-  for (std::map<int, DependSet>::iterator dsi = dependSets.begin();
-       dsi != dependSets.end(); ++dsi) {
-    this->InferredDependSets[dsi->first]->push_back(dsi->second);
+  for (auto const& dependSet : dependSets) {
+    this->InferredDependSets[dependSet.first]->push_back(dependSet.second);
   }
 }
 
@@ -608,14 +599,14 @@ void cmComputeLinkDepends::InferDependencies()
 
 void cmComputeLinkDepends::CleanConstraintGraph()
 {
-  for (Graph::iterator i = this->EntryConstraintGraph.begin();
-       i != this->EntryConstraintGraph.end(); ++i) {
+  for (cmGraphEdgeList& edgeList : this->EntryConstraintGraph) {
     // Sort the outgoing edges for each graph node so that the
     // original order will be preserved as much as possible.
-    std::sort(i->begin(), i->end());
+    std::sort(edgeList.begin(), edgeList.end());
 
     // Make the edge list unique.
-    i->erase(std::unique(i->begin(), i->end()), i->end());
+    edgeList.erase(std::unique(edgeList.begin(), edgeList.end()),
+                   edgeList.end());
   }
 }
 
@@ -660,9 +651,8 @@ void cmComputeLinkDepends::OrderLinkEntires()
   }
 
   // Start with the original link line.
-  for (std::vector<int>::const_iterator i = this->OriginalEntries.begin();
-       i != this->OriginalEntries.end(); ++i) {
-    this->VisitEntry(*i);
+  for (int originalEntry : this->OriginalEntries) {
+    this->VisitEntry(originalEntry);
   }
 
   // Now explore anything left pending.  Since the component graph is
@@ -684,13 +674,12 @@ void cmComputeLinkDepends::DisplayComponents()
   for (unsigned int c = 0; c < components.size(); ++c) {
     fprintf(stderr, "Component (%u):\n", c);
     NodeList const& nl = components[c];
-    for (NodeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-      int i = *ni;
+    for (int i : nl) {
       fprintf(stderr, "  item %d [%s]\n", i, this->EntryList[i].Item.c_str());
     }
     EdgeList const& ol = this->CCG->GetComponentGraphEdges(c);
-    for (EdgeList::const_iterator oi = ol.begin(); oi != ol.end(); ++oi) {
-      int i = *oi;
+    for (cmGraphEdge const& oi : ol) {
+      int i = oi;
       fprintf(stderr, "  followed by Component (%d)\n", i);
     }
     fprintf(stderr, "  topo order index %d\n", this->ComponentOrder[c]);
@@ -771,10 +760,10 @@ void cmComputeLinkDepends::VisitEntry(int index)
   // are now pending.
   if (completed) {
     EdgeList const& ol = this->CCG->GetComponentGraphEdges(component);
-    for (EdgeList::const_iterator oi = ol.begin(); oi != ol.end(); ++oi) {
+    for (cmGraphEdge const& oi : ol) {
       // This entire component is now pending no matter whether it has
       // been partially seen already.
-      this->MakePendingComponent(*oi);
+      this->MakePendingComponent(oi);
     }
   }
 }
@@ -816,8 +805,8 @@ cmComputeLinkDepends::MakePendingComponent(unsigned int component)
 int cmComputeLinkDepends::ComputeComponentCount(NodeList const& nl)
 {
   unsigned int count = 2;
-  for (NodeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-    if (cmGeneratorTarget const* target = this->EntryList[*ni].Target) {
+  for (int ni : nl) {
+    if (cmGeneratorTarget const* target = this->EntryList[ni].Target) {
       if (cmLinkInterface const* iface =
             target->GetLinkInterface(this->Config, this->Target)) {
         if (iface->Multiplicity > count) {
@@ -832,13 +821,11 @@ int cmComputeLinkDepends::ComputeComponentCount(NodeList const& nl)
 void cmComputeLinkDepends::DisplayFinalEntries()
 {
   fprintf(stderr, "target [%s] links to:\n", this->Target->GetName().c_str());
-  for (std::vector<LinkEntry>::const_iterator lei =
-         this->FinalLinkEntries.begin();
-       lei != this->FinalLinkEntries.end(); ++lei) {
-    if (lei->Target) {
-      fprintf(stderr, "  target [%s]\n", lei->Target->GetName().c_str());
+  for (LinkEntry const& lei : this->FinalLinkEntries) {
+    if (lei.Target) {
+      fprintf(stderr, "  target [%s]\n", lei.Target->GetName().c_str());
     } else {
-      fprintf(stderr, "  item [%s]\n", lei->Item.c_str());
+      fprintf(stderr, "  item [%s]\n", lei.Item.c_str());
     }
   }
   fprintf(stderr, "\n");

+ 44 - 67
Source/cmComputeLinkInformation.cxx

@@ -468,13 +468,11 @@ bool cmComputeLinkInformation::Compute()
   cmComputeLinkDepends::EntryVector const& linkEntries = cld.Compute();
 
   // Add the link line items.
-  for (cmComputeLinkDepends::EntryVector::const_iterator lei =
-         linkEntries.begin();
-       lei != linkEntries.end(); ++lei) {
-    if (lei->IsSharedDep) {
-      this->AddSharedDepItem(lei->Item, lei->Target);
+  for (cmComputeLinkDepends::LinkEntry const& linkEntry : linkEntries) {
+    if (linkEntry.IsSharedDep) {
+      this->AddSharedDepItem(linkEntry.Item, linkEntry.Target);
     } else {
-      this->AddItem(lei->Item, lei->Target);
+      this->AddItem(linkEntry.Item, linkEntry.Target);
     }
   }
 
@@ -494,10 +492,7 @@ bool cmComputeLinkInformation::Compute()
     // directories.
     std::set<cmGeneratorTarget const*> const& wrongItems =
       cld.GetOldWrongConfigItems();
-    for (std::set<cmGeneratorTarget const*>::const_iterator i =
-           wrongItems.begin();
-         i != wrongItems.end(); ++i) {
-      cmGeneratorTarget const* tgt = *i;
+    for (cmGeneratorTarget const* tgt : wrongItems) {
       bool implib = (this->UseImportLibrary &&
                      (tgt->GetType() == cmStateEnums::SHARED_LIBRARY));
       cmStateEnums::ArtifactType artifact = implib
@@ -540,11 +535,10 @@ void cmComputeLinkInformation::AddImplicitLinkInfo()
   // The link closure lists all languages whose implicit info is needed.
   cmGeneratorTarget::LinkClosure const* lc =
     this->Target->GetLinkClosure(this->Config);
-  for (std::vector<std::string>::const_iterator li = lc->Languages.begin();
-       li != lc->Languages.end(); ++li) {
+  for (std::string const& li : lc->Languages) {
     // Skip those of the linker language.  They are implicit.
-    if (*li != this->LinkLanguage) {
-      this->AddImplicitLinkInfo(*li);
+    if (li != this->LinkLanguage) {
+      this->AddImplicitLinkInfo(li);
     }
   }
 }
@@ -559,10 +553,9 @@ void cmComputeLinkInformation::AddImplicitLinkInfo(std::string const& lang)
   if (const char* libs = this->Makefile->GetDefinition(libVar)) {
     std::vector<std::string> libsVec;
     cmSystemTools::ExpandListArgument(libs, libsVec);
-    for (std::vector<std::string>::const_iterator i = libsVec.begin();
-         i != libsVec.end(); ++i) {
-      if (this->ImplicitLinkLibs.find(*i) == this->ImplicitLinkLibs.end()) {
-        this->AddItem(*i, nullptr);
+    for (std::string const& i : libsVec) {
+      if (this->ImplicitLinkLibs.find(i) == this->ImplicitLinkLibs.end()) {
+        this->AddItem(i, nullptr);
       }
     }
   }
@@ -811,18 +804,16 @@ void cmComputeLinkInformation::ComputeItemParserInfo()
         mf->GetDefinition("CMAKE_EXTRA_LINK_EXTENSIONS")) {
     std::vector<std::string> linkSuffixVec;
     cmSystemTools::ExpandListArgument(linkSuffixes, linkSuffixVec);
-    for (std::vector<std::string>::iterator i = linkSuffixVec.begin();
-         i != linkSuffixVec.end(); ++i) {
-      this->AddLinkExtension(i->c_str(), LinkUnknown);
+    for (std::string const& i : linkSuffixVec) {
+      this->AddLinkExtension(i.c_str(), LinkUnknown);
     }
   }
   if (const char* sharedSuffixes =
         mf->GetDefinition("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES")) {
     std::vector<std::string> sharedSuffixVec;
     cmSystemTools::ExpandListArgument(sharedSuffixes, sharedSuffixVec);
-    for (std::vector<std::string>::iterator i = sharedSuffixVec.begin();
-         i != sharedSuffixVec.end(); ++i) {
-      this->AddLinkExtension(i->c_str(), LinkShared);
+    for (std::string const& i : sharedSuffixVec) {
+      this->AddLinkExtension(i.c_str(), LinkShared);
     }
   }
 
@@ -840,9 +831,8 @@ void cmComputeLinkInformation::ComputeItemParserInfo()
   // be the library name.  Match index 3 will be the library
   // extension.
   reg = "^(";
-  for (std::set<std::string>::iterator p = this->LinkPrefixes.begin();
-       p != this->LinkPrefixes.end(); ++p) {
-    reg += *p;
+  for (std::string const& p : this->LinkPrefixes) {
+    reg += p;
     reg += "|";
   }
   reg += ")";
@@ -906,8 +896,7 @@ std::string cmComputeLinkInformation::CreateExtensionRegex(
   // Build a list of extension choices.
   std::string libext = "(";
   const char* sep = "";
-  for (std::vector<std::string>::const_iterator i = exts.begin();
-       i != exts.end(); ++i) {
+  for (std::string const& i : exts) {
     // Separate this choice from the previous one.
     libext += sep;
     sep = "|";
@@ -915,9 +904,9 @@ std::string cmComputeLinkInformation::CreateExtensionRegex(
     // Store this extension choice with the "." escaped.
     libext += "\\";
 #if defined(_WIN32) && !defined(__CYGWIN__)
-    libext += this->NoCaseExpression(i->c_str());
+    libext += this->NoCaseExpression(i.c_str());
 #else
-    libext += *i;
+    libext += i;
 #endif
   }
 
@@ -1457,10 +1446,8 @@ bool cmComputeLinkInformation::FinishLinkerSearchDirectories()
   }
 
   // Add the link directories for full path items.
-  for (std::vector<std::string>::const_iterator i =
-         this->OldLinkDirItems.begin();
-       i != this->OldLinkDirItems.end(); ++i) {
-    this->OrderLinkerSearchPath->AddLinkLibrary(*i);
+  for (std::string const& i : this->OldLinkDirItems) {
+    this->OrderLinkerSearchPath->AddLinkLibrary(i);
   }
   return true;
 }
@@ -1489,19 +1476,17 @@ void cmComputeLinkInformation::PrintLinkPolicyDiagnosis(std::ostream& os)
     std::string::size_type max_size = 76;
     std::string line;
     const char* sep = "  ";
-    for (std::vector<std::string>::const_iterator i =
-           this->OldUserFlagItems.begin();
-         i != this->OldUserFlagItems.end(); ++i) {
+    for (std::string const& i : this->OldUserFlagItems) {
       // If the addition of another item will exceed the limit then
       // output the current line and reset it.  Note that the separator
       // is either " " or ", " which is always 2 characters.
-      if (!line.empty() && (line.size() + i->size() + 2) > max_size) {
+      if (!line.empty() && (line.size() + i.size() + 2) > max_size) {
         os << line << "\n";
         sep = "  ";
         line = "";
       }
       line += sep;
-      line += *i;
+      line += i;
       // Convert to the other separator.
       sep = ", ";
     }
@@ -1513,11 +1498,9 @@ void cmComputeLinkInformation::PrintLinkPolicyDiagnosis(std::ostream& os)
   // List the paths old behavior is adding.
   os << "and other libraries with known full path:\n";
   std::set<std::string> emitted;
-  for (std::vector<std::string>::const_iterator i =
-         this->OldLinkDirItems.begin();
-       i != this->OldLinkDirItems.end(); ++i) {
-    if (emitted.insert(cmSystemTools::GetFilenamePath(*i)).second) {
-      os << "  " << *i << "\n";
+  for (std::string const& i : this->OldLinkDirItems) {
+    if (emitted.insert(cmSystemTools::GetFilenamePath(i)).second) {
+      os << "  " << i << "\n";
     }
   }
 
@@ -1544,9 +1527,8 @@ void cmComputeLinkInformation::LoadImplicitLinkInfo()
   // and add them to the set
   if (const char* libraryArch =
         this->Makefile->GetDefinition("CMAKE_LIBRARY_ARCHITECTURE")) {
-    for (std::vector<std::string>::const_iterator i = implicitDirVec.begin();
-         i != implicitDirVec.end(); ++i) {
-      this->ImplicitLinkDirs.insert(*i + "/" + libraryArch);
+    for (std::string const& i : implicitDirVec) {
+      this->ImplicitLinkDirs.insert(i + "/" + libraryArch);
     }
   }
 
@@ -1573,11 +1555,9 @@ void cmComputeLinkInformation::LoadImplicitLinkInfo()
   }
 
   // Store implicit link libraries.
-  for (std::vector<std::string>::const_iterator i = implicitLibVec.begin();
-       i != implicitLibVec.end(); ++i) {
+  for (std::string const& item : implicitLibVec) {
     // Items starting in '-' but not '-l' are flags, not libraries,
     // and should not be filtered by this implicit list.
-    std::string const& item = *i;
     if (item[0] != '-' || item[1] == 'l') {
       this->ImplicitLinkLibs.insert(item);
     }
@@ -1694,10 +1674,9 @@ static void cmCLI_ExpandListUnique(const char* str,
 {
   std::vector<std::string> tmp;
   cmSystemTools::ExpandListArgument(str, tmp);
-  for (std::vector<std::string>::iterator i = tmp.begin(); i != tmp.end();
-       ++i) {
-    if (emitted.insert(*i).second) {
-      out.push_back(*i);
+  for (std::string const& i : tmp) {
+    if (emitted.insert(i).second) {
+      out.push_back(i);
     }
   }
 }
@@ -1750,12 +1729,11 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
       this->Makefile->GetSafeDefinition("CMAKE_INSTALL_PREFIX");
     cmSystemTools::ConvertToUnixSlashes(rootPath);
     std::vector<std::string> const& rdirs = this->GetRuntimeSearchPath();
-    for (std::vector<std::string>::const_iterator ri = rdirs.begin();
-         ri != rdirs.end(); ++ri) {
+    for (std::string const& ri : rdirs) {
       // Put this directory in the rpath if using build-tree rpath
       // support or if using the link path as an rpath.
       if (use_build_rpath) {
-        std::string d = *ri;
+        std::string d = ri;
         if (!rootPath.empty() && d.find(rootPath) == 0) {
           d = d.substr(rootPath.size());
         } else if (stagePath && *stagePath && d.find(stagePath) == 0) {
@@ -1773,11 +1751,11 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
         const char* topSourceDir = this->CMakeInstance->GetHomeDirectory();
         const char* topBinaryDir =
           this->CMakeInstance->GetHomeOutputDirectory();
-        if (!cmSystemTools::ComparePath(*ri, topSourceDir) &&
-            !cmSystemTools::ComparePath(*ri, topBinaryDir) &&
-            !cmSystemTools::IsSubDirectory(*ri, topSourceDir) &&
-            !cmSystemTools::IsSubDirectory(*ri, topBinaryDir)) {
-          std::string d = *ri;
+        if (!cmSystemTools::ComparePath(ri, topSourceDir) &&
+            !cmSystemTools::ComparePath(ri, topBinaryDir) &&
+            !cmSystemTools::IsSubDirectory(ri, topSourceDir) &&
+            !cmSystemTools::IsSubDirectory(ri, topBinaryDir)) {
+          std::string d = ri;
           if (!rootPath.empty() && d.find(rootPath) == 0) {
             d = d.substr(rootPath.size());
           } else if (stagePath && *stagePath && d.find(stagePath) == 0) {
@@ -1800,12 +1778,11 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
   {
     cmGeneratorTarget::LinkClosure const* lc =
       this->Target->GetLinkClosure(this->Config);
-    for (std::vector<std::string>::const_iterator li = lc->Languages.begin();
-         li != lc->Languages.end(); ++li) {
+    for (std::string const& li : lc->Languages) {
       std::string useVar =
-        "CMAKE_" + *li + "_USE_IMPLICIT_LINK_DIRECTORIES_IN_RUNTIME_PATH";
+        "CMAKE_" + li + "_USE_IMPLICIT_LINK_DIRECTORIES_IN_RUNTIME_PATH";
       if (this->Makefile->IsOn(useVar)) {
-        std::string dirVar = "CMAKE_" + *li + "_IMPLICIT_LINK_DIRECTORIES";
+        std::string dirVar = "CMAKE_" + li + "_IMPLICIT_LINK_DIRECTORIES";
         if (const char* dirs = this->Makefile->GetDefinition(dirVar)) {
           cmCLI_ExpandListUnique(dirs, runtimeDirs, emitted);
         }

+ 42 - 55
Source/cmComputeTargetDepends.cxx

@@ -148,10 +148,10 @@ void cmComputeTargetDepends::GetTargetDirectDepends(cmGeneratorTarget const* t,
 
   // Get its final dependencies.
   EdgeList const& nl = this->FinalGraph[i];
-  for (EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-    cmGeneratorTarget const* dep = this->Targets[*ni];
+  for (cmGraphEdge const& ni : nl) {
+    cmGeneratorTarget const* dep = this->Targets[ni];
     cmTargetDependSet::iterator di = deps.insert(dep).first;
-    di->SetType(ni->IsStrong());
+    di->SetType(ni.IsStrong());
   }
 }
 
@@ -160,15 +160,13 @@ void cmComputeTargetDepends::CollectTargets()
   // Collect all targets from all generators.
   std::vector<cmLocalGenerator*> const& lgens =
     this->GlobalGenerator->GetLocalGenerators();
-  for (unsigned int i = 0; i < lgens.size(); ++i) {
+  for (cmLocalGenerator* lgen : lgens) {
     const std::vector<cmGeneratorTarget*>& targets =
-      lgens[i]->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ++ti) {
-      cmGeneratorTarget* gt = *ti;
+      lgen->GetGeneratorTargets();
+    for (cmGeneratorTarget const* ti : targets) {
       int index = static_cast<int>(this->Targets.size());
-      this->TargetIndex[gt] = index;
-      this->Targets.push_back(gt);
+      this->TargetIndex[ti] = index;
+      this->Targets.push_back(ti);
     }
   }
 }
@@ -204,14 +202,11 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index)
     if (configs.empty()) {
       configs.push_back("");
     }
-    for (std::vector<std::string>::const_iterator it = configs.begin();
-         it != configs.end(); ++it) {
+    for (std::string const& it : configs) {
       std::vector<cmSourceFile const*> objectFiles;
-      depender->GetExternalObjects(objectFiles, *it);
-      for (std::vector<cmSourceFile const*>::const_iterator oi =
-             objectFiles.begin();
-           oi != objectFiles.end(); ++oi) {
-        std::string objLib = (*oi)->GetObjectLibrary();
+      depender->GetExternalObjects(objectFiles, it);
+      for (cmSourceFile const* o : objectFiles) {
+        std::string objLib = o->GetObjectLibrary();
         if (!objLib.empty() && emitted.insert(objLib).second) {
           if (depender->GetType() != cmStateEnums::EXECUTABLE &&
               depender->GetType() != cmStateEnums::STATIC_LIBRARY &&
@@ -228,17 +223,15 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index)
         }
       }
 
-      cmLinkImplementation const* impl = depender->GetLinkImplementation(*it);
+      cmLinkImplementation const* impl = depender->GetLinkImplementation(it);
 
       // A target should not depend on itself.
       emitted.insert(depender->GetName());
-      for (std::vector<cmLinkImplItem>::const_iterator lib =
-             impl->Libraries.begin();
-           lib != impl->Libraries.end(); ++lib) {
+      for (cmLinkImplItem const& lib : impl->Libraries) {
         // Don't emit the same library twice for this target.
-        if (emitted.insert(*lib).second) {
-          this->AddTargetDepend(depender_index, *lib, true);
-          this->AddInterfaceDepends(depender_index, *lib, *it, emitted);
+        if (emitted.insert(lib).second) {
+          this->AddTargetDepend(depender_index, lib, true);
+          this->AddInterfaceDepends(depender_index, lib, it, emitted);
         }
       }
     }
@@ -250,11 +243,10 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index)
     std::set<std::string> emitted;
     // A target should not depend on itself.
     emitted.insert(depender->GetName());
-    for (std::set<cmLinkItem>::const_iterator util = tutils.begin();
-         util != tutils.end(); ++util) {
+    for (cmLinkItem const& litem : tutils) {
       // Don't emit the same utility twice for this target.
-      if (emitted.insert(*util).second) {
-        this->AddTargetDepend(depender_index, *util, false);
+      if (emitted.insert(litem).second) {
+        this->AddTargetDepend(depender_index, litem, false);
       }
     }
   }
@@ -267,13 +259,11 @@ void cmComputeTargetDepends::AddInterfaceDepends(
   cmGeneratorTarget const* depender = this->Targets[depender_index];
   if (cmLinkInterface const* iface =
         dependee->GetLinkInterface(config, depender)) {
-    for (std::vector<cmLinkItem>::const_iterator lib =
-           iface->Libraries.begin();
-         lib != iface->Libraries.end(); ++lib) {
+    for (cmLinkItem const& lib : iface->Libraries) {
       // Don't emit the same library twice for this target.
-      if (emitted.insert(*lib).second) {
-        this->AddTargetDepend(depender_index, *lib, true);
-        this->AddInterfaceDepends(depender_index, *lib, config, emitted);
+      if (emitted.insert(lib).second) {
+        this->AddTargetDepend(depender_index, lib, true);
+        this->AddInterfaceDepends(depender_index, lib, config, emitted);
       }
     }
   }
@@ -365,9 +355,8 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index,
     // Skip IMPORTED and INTERFACE targets but follow their utility
     // dependencies.
     std::set<cmLinkItem> const& utils = dependee->GetUtilityItems();
-    for (std::set<cmLinkItem>::const_iterator i = utils.begin();
-         i != utils.end(); ++i) {
-      if (cmGeneratorTarget const* transitive_dependee = i->Target) {
+    for (cmLinkItem const& i : utils) {
+      if (cmGeneratorTarget const* transitive_dependee = i.Target) {
         this->AddTargetDepend(depender_index, transitive_dependee, false);
       }
     }
@@ -395,11 +384,11 @@ void cmComputeTargetDepends::DisplayGraph(Graph const& graph,
     cmGeneratorTarget const* depender = this->Targets[depender_index];
     fprintf(stderr, "target %d is [%s]\n", depender_index,
             depender->GetName().c_str());
-    for (EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-      int dependee_index = *ni;
+    for (cmGraphEdge const& ni : nl) {
+      int dependee_index = ni;
       cmGeneratorTarget const* dependee = this->Targets[dependee_index];
       fprintf(stderr, "  depends on target %d [%s] (%s)\n", dependee_index,
-              dependee->GetName().c_str(), ni->IsStrong() ? "strong" : "weak");
+              dependee->GetName().c_str(), ni.IsStrong() ? "strong" : "weak");
     }
   }
   fprintf(stderr, "\n");
@@ -414,8 +403,7 @@ void cmComputeTargetDepends::DisplayComponents(
   for (int c = 0; c < n; ++c) {
     NodeList const& nl = components[c];
     fprintf(stderr, "Component (%d):\n", c);
-    for (NodeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-      int i = *ni;
+    for (int i : nl) {
       fprintf(stderr, "  contains target %d [%s]\n", i,
               this->Targets[i]->GetName().c_str());
     }
@@ -446,8 +434,8 @@ bool cmComputeTargetDepends::CheckComponents(
     }
 
     // Make sure the component is all STATIC_LIBRARY targets.
-    for (NodeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-      if (this->Targets[*ni]->GetType() != cmStateEnums::STATIC_LIBRARY) {
+    for (int ni : nl) {
+      if (this->Targets[ni]->GetType() != cmStateEnums::STATIC_LIBRARY) {
         this->ComplainAboutBadComponent(ccg, c);
         return false;
       }
@@ -466,9 +454,8 @@ void cmComputeTargetDepends::ComplainAboutBadComponent(
   std::vector<NodeList> const& components = ccg.GetComponents();
   std::vector<int> const& cmap = ccg.GetComponentMap();
   NodeList const& cl = components[c];
-  for (NodeList::const_iterator ci = cl.begin(); ci != cl.end(); ++ci) {
+  for (int i : cl) {
     // Get the depender.
-    int i = *ci;
     cmGeneratorTarget const* depender = this->Targets[i];
 
     // Describe the depender.
@@ -477,12 +464,12 @@ void cmComputeTargetDepends::ComplainAboutBadComponent(
 
     // List its dependencies that are inside the component.
     EdgeList const& nl = this->InitialGraph[i];
-    for (EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-      int j = *ni;
+    for (cmGraphEdge const& ni : nl) {
+      int j = ni;
       if (cmap[j] == c) {
         cmGeneratorTarget const* dependee = this->Targets[j];
         e << "    depends on \"" << dependee->GetName() << "\""
-          << " (" << (ni->IsStrong() ? "strong" : "weak") << ")\n";
+          << " (" << (ni.IsStrong() ? "strong" : "weak") << ")\n";
       }
     }
   }
@@ -514,9 +501,9 @@ bool cmComputeTargetDepends::IntraComponent(std::vector<int> const& cmap,
   if (emitted.insert(i).second) {
     // Honor strong intra-component edges in the final order.
     EdgeList const& el = this->InitialGraph[i];
-    for (EdgeList::const_iterator ei = el.begin(); ei != el.end(); ++ei) {
-      int j = *ei;
-      if (cmap[j] == c && ei->IsStrong()) {
+    for (cmGraphEdge const& edge : el) {
+      int j = edge;
+      if (cmap[j] == c && edge.IsStrong()) {
         this->FinalGraph[i].push_back(cmGraphEdge(j, true));
         if (!this->IntraComponent(cmap, c, j, head, emitted, visited)) {
           return false;
@@ -573,11 +560,11 @@ bool cmComputeTargetDepends::ComputeFinalDepends(
        ++depender_component) {
     int depender_component_tail = this->ComponentTail[depender_component];
     EdgeList const& nl = cgraph[depender_component];
-    for (EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) {
-      int dependee_component = *ni;
+    for (cmGraphEdge const& ni : nl) {
+      int dependee_component = ni;
       int dependee_component_head = this->ComponentHead[dependee_component];
       this->FinalGraph[depender_component_tail].push_back(
-        cmGraphEdge(dependee_component_head, ni->IsStrong()));
+        cmGraphEdge(dependee_component_head, ni.IsStrong()));
     }
   }
   return true;

+ 21 - 30
Source/cmCoreTryCompile.cxx

@@ -417,16 +417,15 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
     // Detect languages to enable.
     cmGlobalGenerator* gg = this->Makefile->GetGlobalGenerator();
     std::set<std::string> testLangs;
-    for (std::vector<std::string>::iterator si = sources.begin();
-         si != sources.end(); ++si) {
-      std::string ext = cmSystemTools::GetFilenameLastExtension(*si);
+    for (std::string const& si : sources) {
+      std::string ext = cmSystemTools::GetFilenameLastExtension(si);
       std::string lang = gg->GetLanguageFromExtension(ext.c_str());
       if (!lang.empty()) {
         testLangs.insert(lang);
       } else {
         std::ostringstream err;
         err << "Unknown extension \"" << ext << "\" for file\n"
-            << "  " << *si << "\n"
+            << "  " << si << "\n"
             << "try_compile() works only for enabled languages.  "
             << "Currently these are:\n  ";
         std::vector<std::string> langs;
@@ -467,11 +466,10 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
     }
 
     std::string projectLangs;
-    for (std::set<std::string>::iterator li = testLangs.begin();
-         li != testLangs.end(); ++li) {
-      projectLangs += " " + *li;
+    for (std::string const& li : testLangs) {
+      projectLangs += " " + li;
       std::string rulesOverrideBase = "CMAKE_USER_MAKE_RULES_OVERRIDE";
-      std::string rulesOverrideLang = rulesOverrideBase + "_" + *li;
+      std::string rulesOverrideLang = rulesOverrideBase + "_" + li;
       if (const char* rulesOverridePath =
             this->Makefile->GetDefinition(rulesOverrideLang)) {
         fprintf(fout, "set(%s \"%s\")\n", rulesOverrideLang.c_str(),
@@ -484,15 +482,14 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
     }
     fprintf(fout, "project(CMAKE_TRY_COMPILE%s)\n", projectLangs.c_str());
     fprintf(fout, "set(CMAKE_VERBOSE_MAKEFILE 1)\n");
-    for (std::set<std::string>::iterator li = testLangs.begin();
-         li != testLangs.end(); ++li) {
-      std::string langFlags = "CMAKE_" + *li + "_FLAGS";
+    for (std::string const& li : testLangs) {
+      std::string langFlags = "CMAKE_" + li + "_FLAGS";
       const char* flags = this->Makefile->GetDefinition(langFlags);
-      fprintf(fout, "set(CMAKE_%s_FLAGS %s)\n", li->c_str(),
+      fprintf(fout, "set(CMAKE_%s_FLAGS %s)\n", li.c_str(),
               cmOutputConverter::EscapeForCMake(flags ? flags : "").c_str());
       fprintf(fout, "set(CMAKE_%s_FLAGS \"${CMAKE_%s_FLAGS}"
                     " ${COMPILE_DEFINITIONS}\")\n",
-              li->c_str(), li->c_str());
+              li.c_str(), li.c_str());
     }
     switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0066)) {
       case cmPolicies::WARN:
@@ -522,9 +519,8 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
         static std::string const cfgDefault = "DEBUG";
         std::string const cfg =
           !tcConfig.empty() ? cmSystemTools::UpperCase(tcConfig) : cfgDefault;
-        for (std::set<std::string>::iterator li = testLangs.begin();
-             li != testLangs.end(); ++li) {
-          std::string const langFlagsCfg = "CMAKE_" + *li + "_FLAGS_" + cfg;
+        for (std::string const& li : testLangs) {
+          std::string const langFlagsCfg = "CMAKE_" + li + "_FLAGS_" + cfg;
           const char* flagsCfg = this->Makefile->GetDefinition(langFlagsCfg);
           fprintf(fout, "set(%s %s)\n", langFlagsCfg.c_str(),
                   cmOutputConverter::EscapeForCMake(flagsCfg ? flagsCfg : "")
@@ -638,9 +634,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
         cmakeFlags.push_back(flag);
       }
 
-      for (std::set<std::string>::iterator vi = vars.begin(); vi != vars.end();
-           ++vi) {
-        std::string const& var = *vi;
+      for (std::string const& var : vars) {
         if (const char* val = this->Makefile->GetDefinition(var)) {
           std::string flag = "-D" + var + "=" + val;
           cmakeFlags.push_back(flag);
@@ -669,13 +663,12 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
       /* Create the actual static library.  */
       fprintf(fout, "add_library(%s STATIC", targetName.c_str());
     }
-    for (std::vector<std::string>::iterator si = sources.begin();
-         si != sources.end(); ++si) {
-      fprintf(fout, " \"%s\"", si->c_str());
+    for (std::string const& si : sources) {
+      fprintf(fout, " \"%s\"", si.c_str());
 
       // Add dependencies on any non-temporary sources.
-      if (si->find("CMakeTmp") == std::string::npos) {
-        this->Makefile->AddCMakeDependFile(*si);
+      if (si.find("CMakeTmp") == std::string::npos) {
+        this->Makefile->AddCMakeDependFile(si);
       }
     }
     fprintf(fout, ")\n");
@@ -762,9 +755,8 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
         "is not honoring language standard variables in the test project:\n"
         ;
       /* clang-format on */
-      for (std::vector<std::string>::iterator vi = this->WarnCMP0067.begin();
-           vi != this->WarnCMP0067.end(); ++vi) {
-        w << "  " << *vi << "\n";
+      for (std::string const& vi : this->WarnCMP0067) {
+        w << "  " << vi << "\n";
       }
       this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
     }
@@ -963,10 +955,9 @@ void cmCoreTryCompile::FindOutputFile(const std::string& targetName,
 #endif
   searchDirs.push_back("/Development");
 
-  for (std::vector<std::string>::const_iterator it = searchDirs.begin();
-       it != searchDirs.end(); ++it) {
+  for (std::string const& sdir : searchDirs) {
     std::string command = this->BinaryDirectory;
-    command += *it;
+    command += sdir;
     command += tmpOutputFile;
     if (cmSystemTools::FileExists(command.c_str())) {
       this->OutputFile = cmSystemTools::CollapseFullPath(command);

+ 3 - 4
Source/cmCryptoHash.cxx

@@ -103,10 +103,9 @@ std::string cmCryptoHash::ByteHashToString(
                                 '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
 
   std::string res;
-  for (std::vector<unsigned char>::const_iterator vit = hash.begin();
-       vit != hash.end(); ++vit) {
-    res.push_back(hex[(*vit) >> 4]);
-    res.push_back(hex[(*vit) & 0xF]);
+  for (unsigned char v : hash) {
+    res.push_back(hex[v >> 4]);
+    res.push_back(hex[v & 0xF]);
   }
   return res;
 }

+ 8 - 12
Source/cmCustomCommandGenerator.cxx

@@ -26,12 +26,10 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc,
   , GE(new cmGeneratorExpression(cc.GetBacktrace()))
 {
   const cmCustomCommandLines& cmdlines = this->CC.GetCommandLines();
-  for (cmCustomCommandLines::const_iterator cmdline = cmdlines.begin();
-       cmdline != cmdlines.end(); ++cmdline) {
+  for (cmCustomCommandLine const& cmdline : cmdlines) {
     cmCustomCommandLine argv;
-    for (cmCustomCommandLine::const_iterator clarg = cmdline->begin();
-         clarg != cmdline->end(); ++clarg) {
-      CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = this->GE->Parse(*clarg);
+    for (std::string const& clarg : cmdline) {
+      CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = this->GE->Parse(clarg);
       std::string parsed_arg = cge->Evaluate(this->LG, this->Config);
       if (this->CC.GetCommandExpandLists()) {
         std::vector<std::string> ExpandedArg;
@@ -45,16 +43,14 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc,
   }
 
   std::vector<std::string> depends = this->CC.GetDepends();
-  for (std::vector<std::string>::const_iterator i = depends.begin();
-       i != depends.end(); ++i) {
-    CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = this->GE->Parse(*i);
+  for (std::string const& d : depends) {
+    CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = this->GE->Parse(d);
     std::vector<std::string> result;
     cmSystemTools::ExpandListArgument(cge->Evaluate(this->LG, this->Config),
                                       result);
-    for (std::vector<std::string>::iterator it = result.begin();
-         it != result.end(); ++it) {
-      if (cmSystemTools::FileIsFullPath(it->c_str())) {
-        *it = cmSystemTools::CollapseFullPath(*it);
+    for (std::string& it : result) {
+      if (cmSystemTools::FileIsFullPath(it.c_str())) {
+        it = cmSystemTools::CollapseFullPath(it);
       }
     }
     this->Depends.insert(this->Depends.end(), result.begin(), result.end());

+ 12 - 15
Source/cmDefinitions.cxx

@@ -66,10 +66,9 @@ std::vector<std::string> cmDefinitions::UnusedKeys() const
   std::vector<std::string> keys;
   keys.reserve(this->Map.size());
   // Consider local definitions.
-  for (MapType::const_iterator mi = this->Map.begin(); mi != this->Map.end();
-       ++mi) {
-    if (!mi->second.Used) {
-      keys.push_back(mi->first);
+  for (auto const& mi : this->Map) {
+    if (!mi.second.Used) {
+      keys.push_back(mi.first);
     }
   }
   return keys;
@@ -81,15 +80,14 @@ cmDefinitions cmDefinitions::MakeClosure(StackIter begin, StackIter end)
   std::set<std::string> undefined;
   for (StackIter it = begin; it != end; ++it) {
     // Consider local definitions.
-    for (MapType::const_iterator mi = it->Map.begin(); mi != it->Map.end();
-         ++mi) {
+    for (auto const& mi : it->Map) {
       // Use this key if it is not already set or unset.
-      if (closure.Map.find(mi->first) == closure.Map.end() &&
-          undefined.find(mi->first) == undefined.end()) {
-        if (mi->second.Exists) {
-          closure.Map.insert(*mi);
+      if (closure.Map.find(mi.first) == closure.Map.end() &&
+          undefined.find(mi.first) == undefined.end()) {
+        if (mi.second.Exists) {
+          closure.Map.insert(mi);
         } else {
-          undefined.insert(mi->first);
+          undefined.insert(mi.first);
         }
       }
     }
@@ -105,11 +103,10 @@ std::vector<std::string> cmDefinitions::ClosureKeys(StackIter begin,
 
   for (StackIter it = begin; it != end; ++it) {
     defined.reserve(defined.size() + it->Map.size());
-    for (MapType::const_iterator mi = it->Map.begin(); mi != it->Map.end();
-         ++mi) {
+    for (auto const& mi : it->Map) {
       // Use this key if it is not already set or unset.
-      if (bound.insert(mi->first).second && mi->second.Exists) {
-        defined.push_back(mi->first);
+      if (bound.insert(mi.first).second && mi.second.Exists) {
+        defined.push_back(mi.first);
       }
     }
   }

+ 2 - 4
Source/cmDepends.cxx

@@ -53,12 +53,10 @@ bool cmDepends::Write(std::ostream& makeDepends, std::ostream& internalDepends)
     std::string const& obj = *si++;
     dependencies[obj].insert(src);
   }
-  for (std::map<std::string, std::set<std::string>>::const_iterator it =
-         dependencies.begin();
-       it != dependencies.end(); ++it) {
+  for (auto const& d : dependencies) {
 
     // Write the dependencies for this pair.
-    if (!this->WriteDependencies(it->second, it->first, makeDepends,
+    if (!this->WriteDependencies(d.second, d.first, makeDepends,
                                  internalDepends)) {
       return false;
     }

+ 27 - 40
Source/cmDependsC.cxx

@@ -110,12 +110,11 @@ bool cmDependsC::WriteDependencies(const std::set<std::string>& sources,
     int srcFiles = static_cast<int>(sources.size());
     this->Encountered.clear();
 
-    for (std::set<std::string>::const_iterator srcIt = sources.begin();
-         srcIt != sources.end(); ++srcIt) {
+    for (std::string const& src : sources) {
       UnscannedEntry root;
-      root.FileName = *srcIt;
+      root.FileName = src;
       this->Unscanned.push(root);
-      this->Encountered.insert(*srcIt);
+      this->Encountered.insert(src);
     }
 
     std::set<std::string> scanned;
@@ -150,14 +149,12 @@ bool cmDependsC::WriteDependencies(const std::set<std::string>& sources,
         if (headerLocationIt != this->HeaderLocationCache.end()) {
           fullName = headerLocationIt->second;
         } else {
-          for (std::vector<std::string>::const_iterator i =
-                 this->IncludePath.begin();
-               i != this->IncludePath.end(); ++i) {
+          for (std::string const& i : this->IncludePath) {
             // Construct the name of the file as if it were in the current
             // include directory.  Avoid using a leading "./".
 
             tempPathStr =
-              cmSystemTools::CollapseCombinedPath(*i, current.FileName);
+              cmSystemTools::CollapseCombinedPath(i, current.FileName);
 
             // Look for the file in this location.
             if (cmSystemTools::FileExists(tempPathStr.c_str(), true)) {
@@ -189,13 +186,11 @@ bool cmDependsC::WriteDependencies(const std::set<std::string>& sources,
         if (fileIt != this->FileCache.end()) {
           fileIt->second->Used = true;
           dependencies.insert(fullName);
-          for (std::vector<UnscannedEntry>::const_iterator incIt =
-                 fileIt->second->UnscannedEntries.begin();
-               incIt != fileIt->second->UnscannedEntries.end(); ++incIt) {
-            if (this->Encountered.find(incIt->FileName) ==
+          for (UnscannedEntry const& inc : fileIt->second->UnscannedEntries) {
+            if (this->Encountered.find(inc.FileName) ==
                 this->Encountered.end()) {
-              this->Encountered.insert(incIt->FileName);
-              this->Unscanned.push(*incIt);
+              this->Encountered.insert(inc.FileName);
+              this->Unscanned.push(inc);
             }
           }
         } else {
@@ -234,14 +229,13 @@ bool cmDependsC::WriteDependencies(const std::set<std::string>& sources,
   std::string obj_m = cmSystemTools::ConvertToOutputPath(obj_i.c_str());
   internalDepends << obj_i << std::endl;
 
-  for (std::set<std::string>::const_iterator i = dependencies.begin();
-       i != dependencies.end(); ++i) {
+  for (std::string const& dep : dependencies) {
     makeDepends
       << obj_m << ": "
       << cmSystemTools::ConvertToOutputPath(
-           this->LocalGenerator->ConvertToRelativePath(binDir, *i).c_str())
+           this->LocalGenerator->ConvertToRelativePath(binDir, dep).c_str())
       << std::endl;
-    internalDepends << " " << *i << std::endl;
+    internalDepends << " " << dep << std::endl;
   }
   makeDepends << std::endl;
 
@@ -330,20 +324,16 @@ void cmDependsC::WriteCacheFile() const
   cacheOut << this->IncludeRegexComplainString << "\n\n";
   cacheOut << this->IncludeRegexTransformString << "\n\n";
 
-  for (std::map<std::string, cmIncludeLines*>::const_iterator fileIt =
-         this->FileCache.begin();
-       fileIt != this->FileCache.end(); ++fileIt) {
-    if (fileIt->second->Used) {
-      cacheOut << fileIt->first << std::endl;
-
-      for (std::vector<UnscannedEntry>::const_iterator incIt =
-             fileIt->second->UnscannedEntries.begin();
-           incIt != fileIt->second->UnscannedEntries.end(); ++incIt) {
-        cacheOut << incIt->FileName << std::endl;
-        if (incIt->QuotedLocation.empty()) {
+  for (auto const& fileIt : this->FileCache) {
+    if (fileIt.second->Used) {
+      cacheOut << fileIt.first << std::endl;
+
+      for (UnscannedEntry const& inc : fileIt.second->UnscannedEntries) {
+        cacheOut << inc.FileName << std::endl;
+        if (inc.QuotedLocation.empty()) {
           cacheOut << "-" << std::endl;
         } else {
-          cacheOut << incIt->QuotedLocation << std::endl;
+          cacheOut << inc.QuotedLocation << std::endl;
         }
       }
       cacheOut << std::endl;
@@ -411,9 +401,8 @@ void cmDependsC::SetupTransforms()
   if (const char* xform = mf->GetDefinition("CMAKE_INCLUDE_TRANSFORMS")) {
     cmSystemTools::ExpandListArgument(xform, transformRules, true);
   }
-  for (std::vector<std::string>::const_iterator tri = transformRules.begin();
-       tri != transformRules.end(); ++tri) {
-    this->ParseTransform(*tri);
+  for (std::string const& tr : transformRules) {
+    this->ParseTransform(tr);
   }
 
   this->IncludeRegexTransformString = INCLUDE_REGEX_TRANSFORM_MARKER;
@@ -422,10 +411,9 @@ void cmDependsC::SetupTransforms()
     // transformed.
     std::string xform = "^([ \t]*[#%][ \t]*(include|import)[ \t]*)(";
     const char* sep = "";
-    for (TransformRulesType::const_iterator tri = this->TransformRules.begin();
-         tri != this->TransformRules.end(); ++tri) {
+    for (auto const& tr : this->TransformRules) {
       xform += sep;
-      xform += tri->first;
+      xform += tr.first;
       sep = "|";
     }
     xform += ")[ \t]*\\(([^),]*)\\)";
@@ -434,12 +422,11 @@ void cmDependsC::SetupTransforms()
     // Build a string that encodes all transformation rules and will
     // change when rules are changed.
     this->IncludeRegexTransformString += xform;
-    for (TransformRulesType::const_iterator tri = this->TransformRules.begin();
-         tri != this->TransformRules.end(); ++tri) {
+    for (auto const& tr : this->TransformRules) {
       this->IncludeRegexTransformString += " ";
-      this->IncludeRegexTransformString += tri->first;
+      this->IncludeRegexTransformString += tr.first;
       this->IncludeRegexTransformString += "(%)=";
-      this->IncludeRegexTransformString += tri->second;
+      this->IncludeRegexTransformString += tr.second;
     }
   }
 }

+ 37 - 54
Source/cmDependsFortran.cxx

@@ -73,12 +73,10 @@ cmDependsFortran::cmDependsFortran(cmLocalGenerator* lg)
 
   // translate i.e. FOO=BAR to FOO and add it to the list of defined
   // preprocessor symbols
-  for (std::vector<std::string>::const_iterator it = definitions.begin();
-       it != definitions.end(); ++it) {
-    std::string def = *it;
+  for (std::string def : definitions) {
     std::string::size_type assignment = def.find('=');
     if (assignment != std::string::npos) {
-      def = it->substr(0, assignment);
+      def = def.substr(0, assignment);
     }
     this->PPDefinitions.insert(def);
   }
@@ -105,9 +103,7 @@ bool cmDependsFortran::WriteDependencies(const std::set<std::string>& sources,
   }
 
   bool okay = true;
-  for (std::set<std::string>::const_iterator it = sources.begin();
-       it != sources.end(); ++it) {
-    const std::string& src = *it;
+  for (std::string const& src : sources) {
     // Get the information object for this source.
     cmFortranSourceInfo& info =
       this->Internal->CreateObjectInfo(obj.c_str(), src.c_str());
@@ -154,9 +150,8 @@ bool cmDependsFortran::Finalize(std::ostream& makeDepends,
   // Actually write dependencies to the streams.
   typedef cmDependsFortranInternals::ObjectInfoMap ObjectInfoMap;
   ObjectInfoMap const& objInfo = this->Internal->ObjectInfo;
-  for (ObjectInfoMap::const_iterator i = objInfo.begin(); i != objInfo.end();
-       ++i) {
-    if (!this->WriteDependenciesReal(i->first.c_str(), i->second, mod_dir,
+  for (auto const& i : objInfo) {
+    if (!this->WriteDependenciesReal(i.first.c_str(), i.second, mod_dir,
                                      stamp_dir, makeDepends,
                                      internalDepends)) {
       return false;
@@ -170,9 +165,8 @@ bool cmDependsFortran::Finalize(std::ostream& makeDepends,
   fiStream << "# The fortran modules provided by this target.\n";
   fiStream << "provides\n";
   std::set<std::string> const& provides = this->Internal->TargetProvides;
-  for (std::set<std::string>::const_iterator i = provides.begin();
-       i != provides.end(); ++i) {
-    fiStream << " " << *i << "\n";
+  for (std::string const& i : provides) {
+    fiStream << " " << i << "\n";
   }
 
   // Create a script to clean the modules.
@@ -184,19 +178,18 @@ bool cmDependsFortran::Finalize(std::ostream& makeDepends,
     fcStream << "FILE(REMOVE";
     std::string currentBinDir =
       this->LocalGenerator->GetCurrentBinaryDirectory();
-    for (std::set<std::string>::const_iterator i = provides.begin();
-         i != provides.end(); ++i) {
+    for (std::string const& i : provides) {
       std::string mod_upper = mod_dir;
       mod_upper += "/";
-      mod_upper += cmSystemTools::UpperCase(*i);
+      mod_upper += cmSystemTools::UpperCase(i);
       mod_upper += ".mod";
       std::string mod_lower = mod_dir;
       mod_lower += "/";
-      mod_lower += *i;
+      mod_lower += i;
       mod_lower += ".mod";
       std::string stamp = stamp_dir;
       stamp += "/";
-      stamp += *i;
+      stamp += i;
       stamp += ".mod.stamp";
       fcStream << "\n";
       fcStream << "  \""
@@ -219,16 +212,14 @@ void cmDependsFortran::LocateModules()
   // Collect the set of modules provided and required by all sources.
   typedef cmDependsFortranInternals::ObjectInfoMap ObjectInfoMap;
   ObjectInfoMap const& objInfo = this->Internal->ObjectInfo;
-  for (ObjectInfoMap::const_iterator infoI = objInfo.begin();
-       infoI != objInfo.end(); ++infoI) {
-    cmFortranSourceInfo const& info = infoI->second;
+  for (auto const& infoI : objInfo) {
+    cmFortranSourceInfo const& info = infoI.second;
     // Include this module in the set provided by this target.
     this->Internal->TargetProvides.insert(info.Provides.begin(),
                                           info.Provides.end());
 
-    for (std::set<std::string>::const_iterator i = info.Requires.begin();
-         i != info.Requires.end(); ++i) {
-      this->Internal->TargetRequires[*i] = "";
+    for (std::string const& r : info.Requires) {
+      this->Internal->TargetRequires[r] = "";
     }
   }
 
@@ -247,9 +238,8 @@ void cmDependsFortran::LocateModules()
         mf->GetDefinition("CMAKE_TARGET_LINKED_INFO_FILES")) {
     cmSystemTools::ExpandListArgument(infoFilesValue, infoFiles);
   }
-  for (std::vector<std::string>::const_iterator i = infoFiles.begin();
-       i != infoFiles.end(); ++i) {
-    std::string targetDir = cmSystemTools::GetFilenamePath(*i);
+  for (std::string const& i : infoFiles) {
+    std::string targetDir = cmSystemTools::GetFilenamePath(i);
     std::string fname = targetDir + "/fortran.internal";
     cmsys::ifstream fin(fname.c_str());
     if (fin) {
@@ -262,9 +252,8 @@ void cmDependsFortran::MatchLocalModules()
 {
   const char* stampDir = this->TargetDirectory.c_str();
   std::set<std::string> const& provides = this->Internal->TargetProvides;
-  for (std::set<std::string>::const_iterator i = provides.begin();
-       i != provides.end(); ++i) {
-    this->ConsiderModule(i->c_str(), stampDir);
+  for (std::string const& i : provides) {
+    this->ConsiderModule(i.c_str(), stampDir);
   }
 }
 
@@ -326,35 +315,32 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
   std::string obj_m = cmSystemTools::ConvertToOutputPath(obj_i.c_str());
   internalDepends << obj_i << std::endl;
   internalDepends << " " << src << std::endl;
-  for (std::set<std::string>::const_iterator i = info.Includes.begin();
-       i != info.Includes.end(); ++i) {
+  for (std::string const& i : info.Includes) {
     makeDepends << obj_m << ": "
                 << cmSystemTools::ConvertToOutputPath(
-                     this->MaybeConvertToRelativePath(binDir, *i).c_str())
+                     this->MaybeConvertToRelativePath(binDir, i).c_str())
                 << std::endl;
-    internalDepends << " " << *i << std::endl;
+    internalDepends << " " << i << std::endl;
   }
   makeDepends << std::endl;
 
   // Write module requirements to the output stream.
-  for (std::set<std::string>::const_iterator i = info.Requires.begin();
-       i != info.Requires.end(); ++i) {
+  for (std::string const& i : info.Requires) {
     // Require only modules not provided in the same source.
-    if (std::set<std::string>::const_iterator(info.Provides.find(*i)) !=
-        info.Provides.end()) {
+    if (info.Provides.find(i) != info.Provides.cend()) {
       continue;
     }
 
     // If the module is provided in this target special handling is
     // needed.
-    if (this->Internal->TargetProvides.find(*i) !=
+    if (this->Internal->TargetProvides.find(i) !=
         this->Internal->TargetProvides.end()) {
       // The module is provided by a different source in the same
       // target.  Add the proxy dependency to make sure the other
       // source builds first.
       std::string proxy = stamp_dir;
       proxy += "/";
-      proxy += *i;
+      proxy += i;
       proxy += ".mod.proxy";
       proxy = cmSystemTools::ConvertToOutputPath(
         this->MaybeConvertToRelativePath(binDir, proxy).c_str());
@@ -366,7 +352,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
     // The object file should depend on timestamped files for the
     // modules it uses.
     TargetRequiresMap::const_iterator required =
-      this->Internal->TargetRequires.find(*i);
+      this->Internal->TargetRequires.find(i);
     if (required == this->Internal->TargetRequires.end()) {
       abort();
     }
@@ -379,7 +365,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
       // This module is not known to CMake.  Try to locate it where
       // the compiler will and depend on that.
       std::string module;
-      if (this->FindModule(*i, module)) {
+      if (this->FindModule(i, module)) {
         module = cmSystemTools::ConvertToOutputPath(
           this->MaybeConvertToRelativePath(binDir, module).c_str());
         makeDepends << obj_m << ": " << module << "\n";
@@ -388,11 +374,10 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
   }
 
   // Write provided modules to the output stream.
-  for (std::set<std::string>::const_iterator i = info.Provides.begin();
-       i != info.Provides.end(); ++i) {
+  for (std::string const& i : info.Provides) {
     std::string proxy = stamp_dir;
     proxy += "/";
-    proxy += *i;
+    proxy += i;
     proxy += ".mod.proxy";
     proxy = cmSystemTools::ConvertToOutputPath(
       this->MaybeConvertToRelativePath(binDir, proxy).c_str());
@@ -404,18 +389,17 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
     // Create a target to copy the module after the object file
     // changes.
     makeDepends << obj_m << ".provides.build:\n";
-    for (std::set<std::string>::const_iterator i = info.Provides.begin();
-         i != info.Provides.end(); ++i) {
+    for (std::string const& i : info.Provides) {
       // Include this module in the set provided by this target.
-      this->Internal->TargetProvides.insert(*i);
+      this->Internal->TargetProvides.insert(i);
 
       // Always use lower case for the mod stamp file name.  The
       // cmake_copy_f90_mod will call back to this class, which will
       // try various cases for the real mod file name.
-      std::string m = cmSystemTools::LowerCase(*i);
+      std::string m = cmSystemTools::LowerCase(i);
       std::string modFile = mod_dir;
       modFile += "/";
-      modFile += *i;
+      modFile += i;
       modFile = this->LocalGenerator->ConvertToOutputFormat(
         this->MaybeConvertToRelativePath(binDir, modFile),
         cmOutputConverter::SHELL);
@@ -462,10 +446,9 @@ bool cmDependsFortran::FindModule(std::string const& name, std::string& module)
 
   // Search the include path for the module.
   std::string fullName;
-  for (std::vector<std::string>::const_iterator i = this->IncludePath.begin();
-       i != this->IncludePath.end(); ++i) {
+  for (std::string const& ip : this->IncludePath) {
     // Try the lower-case name.
-    fullName = *i;
+    fullName = ip;
     fullName += "/";
     fullName += mod_lower;
     if (cmSystemTools::FileExists(fullName.c_str(), true)) {
@@ -474,7 +457,7 @@ bool cmDependsFortran::FindModule(std::string const& name, std::string& module)
     }
 
     // Try the upper-case name.
-    fullName = *i;
+    fullName = ip;
     fullName += "/";
     fullName += mod_upper;
     if (cmSystemTools::FileExists(fullName.c_str(), true)) {

+ 14 - 26
Source/cmDependsJavaParserHelper.cxx

@@ -40,10 +40,8 @@ void cmDependsJavaParserHelper::CurrentClass::AddFileNamesForPrinting(
   }
   rname += this->Name;
   files->push_back(rname);
-  std::vector<CurrentClass>::const_iterator it;
-  for (it = this->NestedClasses.begin(); it != this->NestedClasses.end();
-       ++it) {
-    it->AddFileNamesForPrinting(files, rname.c_str(), sep);
+  for (CurrentClass const& nc : this->NestedClasses) {
+    nc.AddFileNamesForPrinting(files, rname.c_str(), sep);
   }
 }
 
@@ -64,9 +62,8 @@ void cmDependsJavaParserHelper::AddClassFound(const char* sclass)
   if (!sclass) {
     return;
   }
-  std::vector<std::string>::iterator it;
-  for (it = this->ClassesFound.begin(); it != this->ClassesFound.end(); it++) {
-    if (*it == sclass) {
+  for (std::string const& cf : this->ClassesFound) {
+    if (cf == sclass) {
       return;
     }
   }
@@ -75,10 +72,8 @@ void cmDependsJavaParserHelper::AddClassFound(const char* sclass)
 
 void cmDependsJavaParserHelper::AddPackagesImport(const char* sclass)
 {
-  std::vector<std::string>::iterator it;
-  for (it = this->PackagesImport.begin(); it != this->PackagesImport.end();
-       it++) {
-    if (*it == sclass) {
+  for (std::string const& pi : this->PackagesImport) {
+    if (pi == sclass) {
       return;
     }
   }
@@ -208,10 +203,8 @@ void cmDependsJavaParserHelper::PrintClasses()
     std::cerr << "Error when parsing. No classes on class stack" << std::endl;
     abort();
   }
-  std::vector<std::string> files = this->GetFilesProduced();
-  std::vector<std::string>::iterator sit;
-  for (sit = files.begin(); sit != files.end(); ++sit) {
-    std::cout << "  " << *sit << ".class" << std::endl;
+  for (std::string const& f : this->GetFilesProduced()) {
+    std::cout << "  " << f << ".class" << std::endl;
   }
 }
 
@@ -219,10 +212,8 @@ std::vector<std::string> cmDependsJavaParserHelper::GetFilesProduced()
 {
   std::vector<std::string> files;
   CurrentClass const& toplevel = this->ClassStack.front();
-  std::vector<CurrentClass>::const_iterator it;
-  for (it = toplevel.NestedClasses.begin(); it != toplevel.NestedClasses.end();
-       ++it) {
-    it->AddFileNamesForPrinting(&files, nullptr, "$");
+  for (CurrentClass const& nc : toplevel.NestedClasses) {
+    nc.AddFileNamesForPrinting(&files, nullptr, "$");
   }
   return files;
 }
@@ -262,10 +253,8 @@ int cmDependsJavaParserHelper::ParseString(const char* str, int verb)
     std::cout << std::endl;
     std::cout << "Depends on:";
     if (!this->ClassesFound.empty()) {
-      std::vector<std::string>::iterator it;
-      for (it = this->ClassesFound.begin(); it != this->ClassesFound.end();
-           ++it) {
-        std::cout << " " << *it;
+      for (std::string const& cf : this->ClassesFound) {
+        std::cout << " " << cf;
       }
     }
     std::cout << std::endl;
@@ -282,9 +271,8 @@ int cmDependsJavaParserHelper::ParseString(const char* str, int verb)
 
 void cmDependsJavaParserHelper::CleanupParser()
 {
-  std::vector<char*>::iterator it;
-  for (it = this->Allocates.begin(); it != this->Allocates.end(); ++it) {
-    delete[] * it;
+  for (char* allocate : this->Allocates) {
+    delete[] allocate;
   }
   this->Allocates.erase(this->Allocates.begin(), this->Allocates.end());
 }

+ 17 - 26
Source/cmDocumentation.cxx

@@ -123,23 +123,21 @@ bool cmDocumentation::PrintRequestedDocumentation(std::ostream& os)
   bool result = true;
 
   // Loop over requested documentation types.
-  for (std::vector<RequestedHelpItem>::const_iterator i =
-         this->RequestedHelpItems.begin();
-       i != this->RequestedHelpItems.end(); ++i) {
-    this->CurrentArgument = i->Argument;
+  for (RequestedHelpItem const& rhi : this->RequestedHelpItems) {
+    this->CurrentArgument = rhi.Argument;
     // If a file name was given, use it.  Otherwise, default to the
     // given stream.
     cmsys::ofstream fout;
     std::ostream* s = &os;
-    if (!i->Filename.empty()) {
-      fout.open(i->Filename.c_str());
+    if (!rhi.Filename.empty()) {
+      fout.open(rhi.Filename.c_str());
       s = &fout;
     } else if (++count > 1) {
       os << "\n\n";
     }
 
     // Print this documentation type to the stream.
-    if (!this->PrintDocumentation(i->HelpType, *s) || s->fail()) {
+    if (!this->PrintDocumentation(rhi.HelpType, *s) || s->fail()) {
       result = false;
     }
   }
@@ -394,10 +392,8 @@ void cmDocumentation::SetSection(const char* name, const char* docs[][2])
 void cmDocumentation::SetSections(
   std::map<std::string, cmDocumentationSection*>& sections)
 {
-  for (std::map<std::string, cmDocumentationSection*>::const_iterator it =
-         sections.begin();
-       it != sections.end(); ++it) {
-    this->SetSection(it->first.c_str(), it->second);
+  for (auto const& s : sections) {
+    this->SetSection(s.first.c_str(), s.second);
   }
 }
 
@@ -489,10 +485,9 @@ void cmDocumentation::PrintNames(std::ostream& os, std::string const& pattern)
   std::vector<std::string> files;
   this->GlobHelp(files, pattern);
   std::vector<std::string> names;
-  for (std::vector<std::string>::const_iterator i = files.begin();
-       i != files.end(); ++i) {
+  for (std::string const& f : files) {
     std::string line;
-    cmsys::ifstream fin(i->c_str());
+    cmsys::ifstream fin(f.c_str());
     while (fin && cmSystemTools::GetLineFromStream(fin, line)) {
       if (!line.empty() && (isalnum(line[0]) || line[0] == '<')) {
         names.push_back(line);
@@ -501,9 +496,8 @@ void cmDocumentation::PrintNames(std::ostream& os, std::string const& pattern)
     }
   }
   std::sort(names.begin(), names.end());
-  for (std::vector<std::string>::iterator i = names.begin(); i != names.end();
-       ++i) {
-    os << *i << "\n";
+  for (std::string const& n : names) {
+    os << n << "\n";
   }
 }
 
@@ -514,9 +508,8 @@ bool cmDocumentation::PrintFiles(std::ostream& os, std::string const& pattern)
   this->GlobHelp(files, pattern);
   std::sort(files.begin(), files.end());
   cmRST r(os, cmSystemTools::GetCMakeRoot() + "/Help");
-  for (std::vector<std::string>::const_iterator i = files.begin();
-       i != files.end(); ++i) {
-    found = r.ProcessFile(*i) || found;
+  for (std::string const& f : files) {
+    found = r.ProcessFile(f) || found;
   }
   return found;
 }
@@ -586,15 +579,13 @@ bool cmDocumentation::PrintHelpListModules(std::ostream& os)
   std::vector<std::string> files;
   this->GlobHelp(files, "module/*");
   std::vector<std::string> modules;
-  for (std::vector<std::string>::iterator fi = files.begin();
-       fi != files.end(); ++fi) {
-    std::string module = cmSystemTools::GetFilenameName(*fi);
+  for (std::string const& f : files) {
+    std::string module = cmSystemTools::GetFilenameName(f);
     modules.push_back(module.substr(0, module.size() - 4));
   }
   std::sort(modules.begin(), modules.end());
-  for (std::vector<std::string>::iterator i = modules.begin();
-       i != modules.end(); ++i) {
-    os << *i << "\n";
+  for (std::string const& m : modules) {
+    os << m << "\n";
   }
   return true;
 }

+ 7 - 8
Source/cmDocumentationFormatter.cxx

@@ -168,26 +168,25 @@ void cmDocumentationFormatter::PrintSection(
   os << section.GetName() << "\n";
 
   const std::vector<cmDocumentationEntry>& entries = section.GetEntries();
-  for (std::vector<cmDocumentationEntry>::const_iterator op = entries.begin();
-       op != entries.end(); ++op) {
-    if (!op->Name.empty()) {
-      os << "  " << op->Name;
+  for (cmDocumentationEntry const& entry : entries) {
+    if (!entry.Name.empty()) {
+      os << "  " << entry.Name;
       this->TextIndent = "                                 ";
       int align = static_cast<int>(strlen(this->TextIndent)) - 4;
-      for (int i = static_cast<int>(op->Name.size()); i < align; ++i) {
+      for (int i = static_cast<int>(entry.Name.size()); i < align; ++i) {
         os << " ";
       }
-      if (op->Name.size() > strlen(this->TextIndent) - 4) {
+      if (entry.Name.size() > strlen(this->TextIndent) - 4) {
         os << "\n";
         os.write(this->TextIndent, strlen(this->TextIndent) - 2);
       }
       os << "= ";
-      this->PrintColumn(os, op->Brief.c_str());
+      this->PrintColumn(os, entry.Brief.c_str());
       os << "\n";
     } else {
       os << "\n";
       this->TextIndent = "";
-      this->PrintFormatted(os, op->Brief.c_str());
+      this->PrintFormatted(os, entry.Brief.c_str());
     }
   }
   os << "\n";

+ 2 - 4
Source/cmDynamicLoader.cxx

@@ -65,10 +65,8 @@ bool cmDynamicLoaderCache::FlushCache(const char* path)
 
 void cmDynamicLoaderCache::FlushCache()
 {
-  for (std::map<std::string, cmsys::DynamicLoader::LibraryHandle>::iterator
-         it = this->CacheMap.begin();
-       it != this->CacheMap.end(); it++) {
-    cmsys::DynamicLoader::CloseLibrary(it->second);
+  for (auto const& it : this->CacheMap) {
+    cmsys::DynamicLoader::CloseLibrary(it.second);
   }
   delete cmDynamicLoaderCache::Instance;
   cmDynamicLoaderCache::Instance = nullptr;

+ 4 - 8
Source/cmELF.cxx

@@ -547,10 +547,7 @@ cmELF::DynamicEntryList cmELFInternalImpl<Types>::GetDynamicEntries()
 
   // Copy into public array
   result.reserve(this->DynamicSectionEntries.size());
-  for (typename std::vector<ELF_Dyn>::iterator di =
-         this->DynamicSectionEntries.begin();
-       di != this->DynamicSectionEntries.end(); ++di) {
-    ELF_Dyn& dyn = *di;
+  for (ELF_Dyn& dyn : this->DynamicSectionEntries) {
     result.push_back(
       std::pair<unsigned long, unsigned long>(dyn.d_tag, dyn.d_un.d_val));
   }
@@ -565,12 +562,11 @@ std::vector<char> cmELFInternalImpl<Types>::EncodeDynamicEntries(
   std::vector<char> result;
   result.reserve(sizeof(ELF_Dyn) * entries.size());
 
-  for (cmELF::DynamicEntryList::const_iterator it = entries.begin();
-       it != entries.end(); it++) {
+  for (auto const& entry : entries) {
     // Store the entry in an ELF_Dyn, byteswap it, then serialize to chars
     ELF_Dyn dyn;
-    dyn.d_tag = static_cast<tagtype>(it->first);
-    dyn.d_un.d_val = static_cast<tagtype>(it->second);
+    dyn.d_tag = static_cast<tagtype>(entry.first);
+    dyn.d_un.d_val = static_cast<tagtype>(entry.second);
 
     if (this->NeedSwap) {
       ByteSwap(dyn);

+ 3 - 4
Source/cmEnableLanguageCommand.cxx

@@ -16,12 +16,11 @@ bool cmEnableLanguageCommand::InitialPass(std::vector<std::string> const& args,
     this->SetError("called with incorrect number of arguments");
     return false;
   }
-  for (std::vector<std::string>::const_iterator it = args.begin();
-       it != args.end(); ++it) {
-    if ((*it) == "OPTIONAL") {
+  for (std::string const& it : args) {
+    if (it == "OPTIONAL") {
       optional = true;
     } else {
-      languages.push_back(*it);
+      languages.push_back(it);
     }
   }
 

+ 7 - 7
Source/cmExecProgramCommand.cxx

@@ -26,8 +26,8 @@ bool cmExecProgramCommand::InitialPass(std::vector<std::string> const& args,
   bool haveoutput_variable = false;
   std::string return_variable;
   bool havereturn_variable = false;
-  for (size_t i = 0; i < args.size(); ++i) {
-    if (args[i] == "OUTPUT_VARIABLE") {
+  for (std::string const& arg : args) {
+    if (arg == "OUTPUT_VARIABLE") {
       count++;
       doingargs = false;
       havereturn_variable = false;
@@ -37,10 +37,10 @@ bool cmExecProgramCommand::InitialPass(std::vector<std::string> const& args,
         this->SetError("called with incorrect number of arguments");
         return false;
       }
-      output_variable = args[i];
+      output_variable = arg;
       haveoutput_variable = false;
       count++;
-    } else if (args[i] == "RETURN_VALUE") {
+    } else if (arg == "RETURN_VALUE") {
       count++;
       doingargs = false;
       haveoutput_variable = false;
@@ -50,16 +50,16 @@ bool cmExecProgramCommand::InitialPass(std::vector<std::string> const& args,
         this->SetError("called with incorrect number of arguments");
         return false;
       }
-      return_variable = args[i];
+      return_variable = arg;
       havereturn_variable = false;
       count++;
-    } else if (args[i] == "ARGS") {
+    } else if (arg == "ARGS") {
       count++;
       havereturn_variable = false;
       haveoutput_variable = false;
       doingargs = true;
     } else if (doingargs) {
-      arguments += args[i];
+      arguments += arg;
       arguments += " ";
       count++;
     }

+ 5 - 5
Source/cmExecuteProcessCommand.cxx

@@ -170,13 +170,13 @@ bool cmExecuteProcessCommand::InitialPass(std::vector<std::string> const& args,
     this->SetError(" called with no COMMAND argument.");
     return false;
   }
-  for (unsigned int i = 0; i < cmds.size(); ++i) {
-    if (cmds[i].empty()) {
+  for (auto& cmd : cmds) {
+    if (cmd.empty()) {
       this->SetError(" given COMMAND argument with no value.");
       return false;
     }
     // Add the null terminating pointer to the command argument list.
-    cmds[i].push_back(nullptr);
+    cmd.push_back(nullptr);
   }
 
   // Parse the timeout string.
@@ -192,8 +192,8 @@ bool cmExecuteProcessCommand::InitialPass(std::vector<std::string> const& args,
   cmsysProcess* cp = cmsysProcess_New();
 
   // Set the command sequence.
-  for (unsigned int i = 0; i < cmds.size(); ++i) {
-    cmsysProcess_AddCommand(cp, &*cmds[i].begin());
+  for (auto const& cmd : cmds) {
+    cmsysProcess_AddCommand(cp, &*cmd.begin());
   }
 
   // Set the process working directory.

+ 16 - 20
Source/cmExportBuildAndroidMKGenerator.cxx

@@ -3,7 +3,6 @@
 #include "cmExportBuildAndroidMKGenerator.h"
 
 #include <algorithm>
-#include <map>
 #include <sstream>
 #include <utility>
 
@@ -98,43 +97,41 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
   }
   if (!properties.empty()) {
     os << "LOCAL_CPP_FEATURES := rtti exceptions\n";
-    for (ImportPropertyMap::const_iterator pi = properties.begin();
-         pi != properties.end(); ++pi) {
-      if (pi->first == "INTERFACE_COMPILE_OPTIONS") {
+    for (auto const& property : properties) {
+      if (property.first == "INTERFACE_COMPILE_OPTIONS") {
         os << "LOCAL_CPP_FEATURES += ";
-        os << (pi->second) << "\n";
-      } else if (pi->first == "INTERFACE_LINK_LIBRARIES") {
+        os << (property.second) << "\n";
+      } else if (property.first == "INTERFACE_LINK_LIBRARIES") {
         // need to look at list in pi->second and see if static or shared
         // FindTargetToLink
         // target->GetLocalGenerator()->FindGeneratorTargetToUse()
         // then add to LOCAL_CPPFLAGS
         std::vector<std::string> libraries;
-        cmSystemTools::ExpandListArgument(pi->second, libraries);
+        cmSystemTools::ExpandListArgument(property.second, libraries);
         std::string staticLibs;
         std::string sharedLibs;
         std::string ldlibs;
-        for (std::vector<std::string>::iterator i = libraries.begin();
-             i != libraries.end(); ++i) {
+        for (std::string const& lib : libraries) {
           cmGeneratorTarget* gt =
-            target->GetLocalGenerator()->FindGeneratorTargetToUse(*i);
+            target->GetLocalGenerator()->FindGeneratorTargetToUse(lib);
           if (gt) {
 
             if (gt->GetType() == cmStateEnums::SHARED_LIBRARY ||
                 gt->GetType() == cmStateEnums::MODULE_LIBRARY) {
-              sharedLibs += " " + *i;
+              sharedLibs += " " + lib;
             } else {
-              staticLibs += " " + *i;
+              staticLibs += " " + lib;
             }
           } else {
             // evaluate any generator expressions with the current
             // build type of the makefile
             cmGeneratorExpression ge;
-            CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = ge.Parse(*i);
+            CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = ge.Parse(lib);
             std::string evaluated =
               cge->Evaluate(target->GetLocalGenerator(), config);
             bool relpath = false;
             if (type == cmExportBuildAndroidMKGenerator::INSTALL) {
-              relpath = i->substr(0, 3) == "../";
+              relpath = lib.substr(0, 3) == "../";
             }
             // check for full path or if it already has a -l, or
             // in the case of an install check for relative paths
@@ -157,20 +154,19 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
         if (!ldlibs.empty()) {
           os << "LOCAL_EXPORT_LDLIBS :=" << ldlibs << "\n";
         }
-      } else if (pi->first == "INTERFACE_INCLUDE_DIRECTORIES") {
-        std::string includes = pi->second;
+      } else if (property.first == "INTERFACE_INCLUDE_DIRECTORIES") {
+        std::string includes = property.second;
         std::vector<std::string> includeList;
         cmSystemTools::ExpandListArgument(includes, includeList);
         os << "LOCAL_EXPORT_C_INCLUDES := ";
         std::string end;
-        for (std::vector<std::string>::iterator i = includeList.begin();
-             i != includeList.end(); ++i) {
-          os << end << *i;
+        for (std::string const& i : includeList) {
+          os << end << i;
           end = "\\\n";
         }
         os << "\n";
       } else {
-        os << "# " << pi->first << " " << (pi->second) << "\n";
+        os << "# " << property.first << " " << (property.second) << "\n";
       }
     }
   }

+ 12 - 27
Source/cmExportBuildFileGenerator.cxx

@@ -45,9 +45,8 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
     std::string sep;
     std::vector<std::string> targets;
     this->GetTargets(targets);
-    for (std::vector<std::string>::const_iterator tei = targets.begin();
-         tei != targets.end(); ++tei) {
-      cmGeneratorTarget* te = this->LG->FindGeneratorTargetToUse(*tei);
+    for (std::string const& tei : targets) {
+      cmGeneratorTarget* te = this->LG->FindGeneratorTargetToUse(tei);
       expectedTargets += sep + this->Namespace + te->GetExportName();
       sep = " ";
       if (this->ExportedTargets.insert(te).second) {
@@ -71,10 +70,7 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
   std::vector<std::string> missingTargets;
 
   // Create all the imported targets.
-  for (std::vector<cmGeneratorTarget*>::const_iterator tei =
-         this->Exports.begin();
-       tei != this->Exports.end(); ++tei) {
-    cmGeneratorTarget* gte = *tei;
+  for (cmGeneratorTarget* gte : this->Exports) {
     this->GenerateImportTargetCode(os, gte);
 
     gte->Target->AppendBuildInterfaceIncludes();
@@ -115,10 +111,8 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
   }
 
   // Generate import file content for each configuration.
-  for (std::vector<std::string>::const_iterator ci =
-         this->Configurations.begin();
-       ci != this->Configurations.end(); ++ci) {
-    this->GenerateImportConfig(os, *ci, missingTargets);
+  for (std::string const& c : this->Configurations) {
+    this->GenerateImportConfig(os, c, missingTargets);
   }
 
   this->GenerateMissingTargetsCheckCode(os, missingTargets);
@@ -130,11 +124,8 @@ void cmExportBuildFileGenerator::GenerateImportTargetsConfig(
   std::ostream& os, const std::string& config, std::string const& suffix,
   std::vector<std::string>& missingTargets)
 {
-  for (std::vector<cmGeneratorTarget*>::const_iterator tei =
-         this->Exports.begin();
-       tei != this->Exports.end(); ++tei) {
+  for (cmGeneratorTarget* target : this->Exports) {
     // Collect import properties for this target.
-    cmGeneratorTarget* target = *tei;
     ImportPropertyMap properties;
 
     if (target->GetType() != cmStateEnums::INTERFACE_LIBRARY) {
@@ -184,10 +175,8 @@ void cmExportBuildFileGenerator::SetImportLocationProperty(
     target->GetObjectSources(objectSources, config);
     std::string const obj_dir = target->GetObjectDirectory(config);
     std::vector<std::string> objects;
-    for (std::vector<cmSourceFile const*>::const_iterator si =
-           objectSources.begin();
-         si != objectSources.end(); ++si) {
-      const std::string& obj = target->GetObjectName(*si);
+    for (cmSourceFile const* sf : objectSources) {
+      const std::string& obj = target->GetObjectName(sf);
       objects.push_back(obj_dir + obj);
     }
 
@@ -256,10 +245,8 @@ void cmExportBuildFileGenerator::GetTargets(
   std::vector<std::string>& targets) const
 {
   if (this->ExportSet) {
-    for (std::vector<cmTargetExport*>::const_iterator tei =
-           this->ExportSet->GetTargetExports()->begin();
-         tei != this->ExportSet->GetTargetExports()->end(); ++tei) {
-      targets.push_back((*tei)->TargetName);
+    for (cmTargetExport* te : *this->ExportSet->GetTargetExports()) {
+      targets.push_back(te->TargetName);
     }
     return;
   }
@@ -274,10 +261,8 @@ std::vector<std::string> cmExportBuildFileGenerator::FindNamespaces(
   std::map<std::string, cmExportBuildFileGenerator*>& exportSets =
     gg->GetBuildExportSets();
 
-  for (std::map<std::string, cmExportBuildFileGenerator*>::const_iterator
-         expIt = exportSets.begin();
-       expIt != exportSets.end(); ++expIt) {
-    const cmExportBuildFileGenerator* exportSet = expIt->second;
+  for (auto const& exp : exportSets) {
+    const cmExportBuildFileGenerator* exportSet = exp.second;
     std::vector<std::string> targets;
     exportSet->GetTargets(targets);
     if (std::find(targets.begin(), targets.end(), name) != targets.end()) {

+ 10 - 14
Source/cmExportCommand.cxx

@@ -136,42 +136,40 @@ bool cmExportCommand::InitialPass(std::vector<std::string> const& args,
     }
     this->ExportSet = setMap[setName];
   } else if (this->Targets.WasFound()) {
-    for (std::vector<std::string>::const_iterator currentTarget =
-           this->Targets.GetVector().begin();
-         currentTarget != this->Targets.GetVector().end(); ++currentTarget) {
-      if (this->Makefile->IsAlias(*currentTarget)) {
+    for (std::string const& currentTarget : this->Targets.GetVector()) {
+      if (this->Makefile->IsAlias(currentTarget)) {
         std::ostringstream e;
-        e << "given ALIAS target \"" << *currentTarget
+        e << "given ALIAS target \"" << currentTarget
           << "\" which may not be exported.";
         this->SetError(e.str());
         return false;
       }
 
-      if (cmTarget* target = gg->FindTarget(*currentTarget)) {
+      if (cmTarget* target = gg->FindTarget(currentTarget)) {
         if (target->GetType() == cmStateEnums::OBJECT_LIBRARY) {
           std::string reason;
           if (!this->Makefile->GetGlobalGenerator()
                  ->HasKnownObjectFileLocation(&reason)) {
             std::ostringstream e;
-            e << "given OBJECT library \"" << *currentTarget
+            e << "given OBJECT library \"" << currentTarget
               << "\" which may not be exported" << reason << ".";
             this->SetError(e.str());
             return false;
           }
         }
         if (target->GetType() == cmStateEnums::UTILITY) {
-          this->SetError("given custom target \"" + *currentTarget +
+          this->SetError("given custom target \"" + currentTarget +
                          "\" which may not be exported.");
           return false;
         }
       } else {
         std::ostringstream e;
-        e << "given target \"" << *currentTarget
+        e << "given target \"" << currentTarget
           << "\" which is not built by this project.";
         this->SetError(e.str());
         return false;
       }
-      targets.push_back(*currentTarget);
+      targets.push_back(currentTarget);
     }
     if (this->Append.IsEnabled()) {
       if (cmExportBuildFileGenerator* ebfg =
@@ -209,10 +207,8 @@ bool cmExportCommand::InitialPass(std::vector<std::string> const& args,
   if (configurationTypes.empty()) {
     configurationTypes.push_back("");
   }
-  for (std::vector<std::string>::const_iterator ci =
-         configurationTypes.begin();
-       ci != configurationTypes.end(); ++ci) {
-    ebfg->AddConfiguration(*ci);
+  for (std::string const& ct : configurationTypes) {
+    ebfg->AddConfiguration(ct);
   }
   if (this->ExportSet) {
     gg->AddBuildExportExportSet(ebfg);

+ 43 - 53
Source/cmExportFileGenerator.cxx

@@ -206,9 +206,8 @@ static bool checkInterfaceDirs(const std::string& prepro,
 
   bool hadFatalError = false;
 
-  for (std::vector<std::string>::iterator li = parts.begin();
-       li != parts.end(); ++li) {
-    size_t genexPos = cmGeneratorExpression::Find(*li);
+  for (std::string const& li : parts) {
+    size_t genexPos = cmGeneratorExpression::Find(li);
     if (genexPos == 0) {
       continue;
     }
@@ -233,20 +232,20 @@ static bool checkInterfaceDirs(const std::string& prepro,
         hadFatalError = true;
       }
     }
-    if (cmHasLiteralPrefix(li->c_str(), "${_IMPORT_PREFIX}")) {
+    if (cmHasLiteralPrefix(li.c_str(), "${_IMPORT_PREFIX}")) {
       continue;
     }
-    if (!cmSystemTools::FileIsFullPath(li->c_str())) {
+    if (!cmSystemTools::FileIsFullPath(li.c_str())) {
       /* clang-format off */
       e << "Target \"" << target->GetName() << "\" " << prop <<
            " property contains relative path:\n"
-           "  \"" << *li << "\"";
+           "  \"" << li << "\"";
       /* clang-format on */
       target->GetLocalGenerator()->IssueMessage(messageType, e.str());
     }
-    bool inBinary = isSubDirectory(li->c_str(), topBinaryDir);
-    bool inSource = isSubDirectory(li->c_str(), topSourceDir);
-    if (isSubDirectory(li->c_str(), installDir)) {
+    bool inBinary = isSubDirectory(li.c_str(), topBinaryDir);
+    bool inSource = isSubDirectory(li.c_str(), topSourceDir);
+    if (isSubDirectory(li.c_str(), installDir)) {
       // The include directory is inside the install tree.  If the
       // install tree is not inside the source tree or build tree then
       // fall through to the checks below that the include directory is not
@@ -261,7 +260,7 @@ static bool checkInterfaceDirs(const std::string& prepro,
             case cmPolicies::WARN: {
               std::ostringstream s;
               s << cmPolicies::GetPolicyWarning(cmPolicies::CMP0052) << "\n";
-              s << "Directory:\n    \"" << *li
+              s << "Directory:\n    \"" << li
                 << "\"\nin "
                    "INTERFACE_INCLUDE_DIRECTORIES of target \""
                 << target->GetName() << "\" is a subdirectory of the install "
@@ -293,7 +292,7 @@ static bool checkInterfaceDirs(const std::string& prepro,
       /* clang-format off */
       e << "Target \"" << target->GetName() << "\" " << prop <<
            " property contains path:\n"
-           "  \"" << *li << "\"\nwhich is prefixed in the build directory.";
+           "  \"" << li << "\"\nwhich is prefixed in the build directory.";
       /* clang-format on */
       target->GetLocalGenerator()->IssueMessage(messageType, e.str());
     }
@@ -302,7 +301,7 @@ static bool checkInterfaceDirs(const std::string& prepro,
         e << "Target \"" << target->GetName() << "\" " << prop
           << " property contains path:\n"
              "  \""
-          << *li << "\"\nwhich is prefixed in the source directory.";
+          << li << "\"\nwhich is prefixed in the source directory.";
         target->GetLocalGenerator()->IssueMessage(messageType, e.str());
       }
     }
@@ -316,15 +315,14 @@ static void prefixItems(std::string& exportDirs)
   cmGeneratorExpression::Split(exportDirs, entries);
   exportDirs = "";
   const char* sep = "";
-  for (std::vector<std::string>::const_iterator ei = entries.begin();
-       ei != entries.end(); ++ei) {
+  for (std::string const& e : entries) {
     exportDirs += sep;
     sep = ";";
-    if (!cmSystemTools::FileIsFullPath(ei->c_str()) &&
-        ei->find("${_IMPORT_PREFIX}") == std::string::npos) {
+    if (!cmSystemTools::FileIsFullPath(e.c_str()) &&
+        e.find("${_IMPORT_PREFIX}") == std::string::npos) {
       exportDirs += "${_IMPORT_PREFIX}/";
     }
-    exportDirs += *ei;
+    exportDirs += e;
   }
 }
 
@@ -461,18 +459,17 @@ void getCompatibleInterfaceProperties(cmGeneratorTarget* target,
 
   const cmComputeLinkInformation::ItemVector& deps = info->GetItems();
 
-  for (cmComputeLinkInformation::ItemVector::const_iterator li = deps.begin();
-       li != deps.end(); ++li) {
-    if (!li->Target) {
+  for (auto const& dep : deps) {
+    if (!dep.Target) {
       continue;
     }
-    getPropertyContents(li->Target, "COMPATIBLE_INTERFACE_BOOL",
+    getPropertyContents(dep.Target, "COMPATIBLE_INTERFACE_BOOL",
                         ifaceProperties);
-    getPropertyContents(li->Target, "COMPATIBLE_INTERFACE_STRING",
+    getPropertyContents(dep.Target, "COMPATIBLE_INTERFACE_STRING",
                         ifaceProperties);
-    getPropertyContents(li->Target, "COMPATIBLE_INTERFACE_NUMBER_MIN",
+    getPropertyContents(dep.Target, "COMPATIBLE_INTERFACE_NUMBER_MIN",
                         ifaceProperties);
-    getPropertyContents(li->Target, "COMPATIBLE_INTERFACE_NUMBER_MAX",
+    getPropertyContents(dep.Target, "COMPATIBLE_INTERFACE_NUMBER_MAX",
                         ifaceProperties);
   }
 }
@@ -504,15 +501,13 @@ void cmExportFileGenerator::PopulateCompatibleInterfaceProperties(
     std::vector<std::string> configNames;
     gtarget->Target->GetMakefile()->GetConfigurations(configNames);
 
-    for (std::vector<std::string>::const_iterator ci = configNames.begin();
-         ci != configNames.end(); ++ci) {
-      getCompatibleInterfaceProperties(gtarget, ifaceProperties, *ci);
+    for (std::string const& cn : configNames) {
+      getCompatibleInterfaceProperties(gtarget, ifaceProperties, cn);
     }
   }
 
-  for (std::set<std::string>::const_iterator it = ifaceProperties.begin();
-       it != ifaceProperties.end(); ++it) {
-    this->PopulateInterfaceProperty("INTERFACE_" + *it, gtarget, properties);
+  for (std::string const& ip : ifaceProperties) {
+    this->PopulateInterfaceProperty("INTERFACE_" + ip, gtarget, properties);
   }
 }
 
@@ -524,10 +519,9 @@ void cmExportFileGenerator::GenerateInterfaceProperties(
     std::string targetName = this->Namespace;
     targetName += target->GetExportName();
     os << "set_target_properties(" << targetName << " PROPERTIES\n";
-    for (ImportPropertyMap::const_iterator pi = properties.begin();
-         pi != properties.end(); ++pi) {
-      os << "  " << pi->first << " " << cmExportFileGeneratorEscape(pi->second)
-         << "\n";
+    for (auto const& property : properties) {
+      os << "  " << property.first << " "
+         << cmExportFileGeneratorEscape(property.second) << "\n";
     }
     os << ")\n\n";
   }
@@ -572,14 +566,13 @@ void cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
 
   std::string sep;
   input = "";
-  for (std::vector<std::string>::iterator li = parts.begin();
-       li != parts.end(); ++li) {
-    if (cmGeneratorExpression::Find(*li) == std::string::npos) {
-      this->AddTargetNamespace(*li, target, missingTargets);
+  for (std::string& li : parts) {
+    if (cmGeneratorExpression::Find(li) == std::string::npos) {
+      this->AddTargetNamespace(li, target, missingTargets);
     } else {
-      this->ResolveTargetsInGeneratorExpression(*li, target, missingTargets);
+      this->ResolveTargetsInGeneratorExpression(li, target, missingTargets);
     }
-    input += sep + *li;
+    input += sep + li;
     sep = ";";
   }
 }
@@ -797,13 +790,12 @@ void cmExportFileGenerator::SetImportLinkProperty(
   // Construct the property value.
   std::string link_entries;
   const char* sep = "";
-  for (typename std::vector<T>::const_iterator li = entries.begin();
-       li != entries.end(); ++li) {
+  for (T const& l : entries) {
     // Separate this from the previous entry.
     link_entries += sep;
     sep = ";";
 
-    std::string temp = *li;
+    std::string temp = l;
     this->AddTargetNamespace(temp, target, missingTargets);
     link_entries += temp;
   }
@@ -988,10 +980,9 @@ void cmExportFileGenerator::GenerateImportPropertyCode(
   }
   os << ")\n";
   os << "set_target_properties(" << targetName << " PROPERTIES\n";
-  for (ImportPropertyMap::const_iterator pi = properties.begin();
-       pi != properties.end(); ++pi) {
-    os << "  " << pi->first << " " << cmExportFileGeneratorEscape(pi->second)
-       << "\n";
+  for (auto const& property : properties) {
+    os << "  " << property.first << " "
+       << cmExportFileGeneratorEscape(property.second) << "\n";
   }
   os << "  )\n"
      << "\n";
@@ -1015,9 +1006,9 @@ void cmExportFileGenerator::GenerateMissingTargetsCheckCode(
         "foreach(_target ";
   /* clang-format on */
   std::set<std::string> emitted;
-  for (unsigned int i = 0; i < missingTargets.size(); ++i) {
-    if (emitted.insert(missingTargets[i]).second) {
-      os << "\"" << missingTargets[i] << "\" ";
+  for (std::string const& missingTarget : missingTargets) {
+    if (emitted.insert(missingTarget).second) {
+      os << "\"" << missingTarget << "\" ";
     }
   }
   /* clang-format off */
@@ -1094,9 +1085,8 @@ void cmExportFileGenerator::GenerateImportedFileChecksCode(
         "list(APPEND _IMPORT_CHECK_FILES_FOR_"
      << targetName << " ";
 
-  for (std::set<std::string>::const_iterator li = importedLocations.begin();
-       li != importedLocations.end(); ++li) {
-    ImportPropertyMap::const_iterator pi = properties.find(*li);
+  for (std::string const& li : importedLocations) {
+    ImportPropertyMap::const_iterator pi = properties.find(li);
     if (pi != properties.end()) {
       os << cmExportFileGeneratorEscape(pi->second) << " ";
     }

+ 1 - 4
Source/cmExportInstallAndroidMKGenerator.cxx

@@ -34,11 +34,8 @@ void cmExportInstallAndroidMKGenerator::GenerateImportHeaderCode(
   }
   os << "_IMPORT_PREFIX := "
      << "$(LOCAL_PATH)" << path << "\n\n";
-  for (std::vector<cmTargetExport*>::const_iterator tei =
-         this->IEGen->GetExportSet()->GetTargetExports()->begin();
-       tei != this->IEGen->GetExportSet()->GetTargetExports()->end(); ++tei) {
+  for (cmTargetExport* te : *this->IEGen->GetExportSet()->GetTargetExports()) {
     // Collect import properties for this target.
-    cmTargetExport const* te = *tei;
     if (te->Target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }

+ 20 - 33
Source/cmExportInstallFileGenerator.cxx

@@ -4,7 +4,6 @@
 
 #include "cmAlgorithms.h"
 #include "cmExportSet.h"
-#include "cmExportSetMap.h"
 #include "cmGeneratedFileStream.h"
 #include "cmGeneratorExpression.h"
 #include "cmGeneratorTarget.h"
@@ -22,6 +21,8 @@
 #include <sstream>
 #include <utility>
 
+class cmExportSetMap;
+
 cmExportInstallFileGenerator::cmExportInstallFileGenerator(
   cmInstallExportGenerator* iegen)
   : IEGen(iegen)
@@ -42,14 +43,10 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
   {
     std::string expectedTargets;
     std::string sep;
-    for (std::vector<cmTargetExport*>::const_iterator tei =
-           this->IEGen->GetExportSet()->GetTargetExports()->begin();
-         tei != this->IEGen->GetExportSet()->GetTargetExports()->end();
-         ++tei) {
-      expectedTargets +=
-        sep + this->Namespace + (*tei)->Target->GetExportName();
+    for (cmTargetExport* te :
+         *this->IEGen->GetExportSet()->GetTargetExports()) {
+      expectedTargets += sep + this->Namespace + te->Target->GetExportName();
       sep = " ";
-      cmTargetExport* te = *tei;
       if (this->ExportedTargets.insert(te->Target).second) {
         allTargets.push_back(te);
       } else {
@@ -76,9 +73,8 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
   bool require3_1_0 = false;
   bool requiresConfigFiles = false;
   // Create all the imported targets.
-  for (std::vector<cmTargetExport*>::const_iterator tei = allTargets.begin();
-       tei != allTargets.end(); ++tei) {
-    cmGeneratorTarget* gt = (*tei)->Target;
+  for (cmTargetExport* te : allTargets) {
+    cmGeneratorTarget* gt = te->Target;
 
     requiresConfigFiles =
       requiresConfigFiles || gt->GetType() != cmStateEnums::INTERFACE_LIBRARY;
@@ -88,10 +84,8 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
     ImportPropertyMap properties;
 
     this->PopulateIncludeDirectoriesInterface(
-      *tei, cmGeneratorExpression::InstallInterface, properties,
-      missingTargets);
-    this->PopulateSourcesInterface(*tei,
-                                   cmGeneratorExpression::InstallInterface,
+      te, cmGeneratorExpression::InstallInterface, properties, missingTargets);
+    this->PopulateSourcesInterface(te, cmGeneratorExpression::InstallInterface,
                                    properties, missingTargets);
     this->PopulateInterfaceProperty("INTERFACE_SYSTEM_INCLUDE_DIRECTORIES", gt,
                                     cmGeneratorExpression::InstallInterface,
@@ -154,10 +148,8 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
   // Generate an import file for each configuration.
   // Don't do this if we only export INTERFACE_LIBRARY targets.
   if (requiresConfigFiles) {
-    for (std::vector<std::string>::const_iterator ci =
-           this->Configurations.begin();
-         ci != this->Configurations.end(); ++ci) {
-      if (!this->GenerateImportFileConfig(*ci, missingTargets)) {
+    for (std::string const& c : this->Configurations) {
+      if (!this->GenerateImportFileConfig(c, missingTargets)) {
         result = false;
       }
     }
@@ -314,11 +306,8 @@ void cmExportInstallFileGenerator::GenerateImportTargetsConfig(
   std::vector<std::string>& missingTargets)
 {
   // Add each target in the set to the export.
-  for (std::vector<cmTargetExport*>::const_iterator tei =
-         this->IEGen->GetExportSet()->GetTargetExports()->begin();
-       tei != this->IEGen->GetExportSet()->GetTargetExports()->end(); ++tei) {
+  for (cmTargetExport* te : *this->IEGen->GetExportSet()->GetTargetExports()) {
     // Collect import properties for this target.
-    cmTargetExport const* te = *tei;
     if (te->Target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
@@ -409,9 +398,8 @@ void cmExportInstallFileGenerator::SetImportLocationProperty(
     // IMPORTED_OBJECTS as a list of object files
     std::vector<std::string> objects;
     itgen->GetInstallObjectNames(config, objects);
-    for (std::vector<std::string>::iterator i = objects.begin();
-         i != objects.end(); ++i) {
-      *i = value + *i;
+    for (std::string& obj : objects) {
+      obj = value + obj;
     }
 
     // Store the property.
@@ -465,15 +453,14 @@ std::vector<std::string> cmExportInstallFileGenerator::FindNamespaces(
   std::vector<std::string> namespaces;
   const cmExportSetMap& exportSets = gg->GetExportSets();
 
-  for (cmExportSetMap::const_iterator expIt = exportSets.begin();
-       expIt != exportSets.end(); ++expIt) {
-    const cmExportSet* exportSet = expIt->second;
+  for (auto const& expIt : exportSets) {
+    const cmExportSet* exportSet = expIt.second;
     std::vector<cmTargetExport*> const* targets =
       exportSet->GetTargetExports();
 
     bool containsTarget = false;
-    for (unsigned int i = 0; i < targets->size(); i++) {
-      if (name == (*targets)[i]->TargetName) {
+    for (cmTargetExport* target : *targets) {
+      if (name == target->TargetName) {
         containsTarget = true;
         break;
       }
@@ -482,8 +469,8 @@ std::vector<std::string> cmExportInstallFileGenerator::FindNamespaces(
     if (containsTarget) {
       std::vector<cmInstallExportGenerator const*> const* installs =
         exportSet->GetInstallations();
-      for (unsigned int i = 0; i < installs->size(); i++) {
-        namespaces.push_back((*installs)[i]->GetNamespace());
+      for (cmInstallExportGenerator const* install : *installs) {
+        namespaces.push_back(install->GetNamespace());
       }
     }
   }

+ 17 - 25
Source/cmExportLibraryDependenciesCommand.cxx

@@ -4,7 +4,6 @@
 
 #include "cmsys/FStream.hxx"
 #include <map>
-#include <unordered_map>
 #include <utility>
 
 #include "cmGeneratedFileStream.h"
@@ -75,12 +74,11 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const
   std::map<std::string, std::string> libDepsOld;
   std::map<std::string, std::string> libDepsNew;
   std::map<std::string, std::string> libTypes;
-  for (std::vector<cmMakefile*>::const_iterator i = locals.begin();
-       i != locals.end(); ++i) {
-    const cmTargets& tgts = (*i)->GetTargets();
-    for (cmTargets::const_iterator l = tgts.begin(); l != tgts.end(); ++l) {
+  for (cmMakefile* local : locals) {
+    const cmTargets& tgts = local->GetTargets();
+    for (auto const& tgt : tgts) {
       // Get the current target.
-      cmTarget const& target = l->second;
+      cmTarget const& target = tgt.second;
 
       // Skip non-library targets.
       if (target.GetType() < cmStateEnums::STATIC_LIBRARY ||
@@ -98,12 +96,11 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const
       std::string valueNew;
       cmTarget::LinkLibraryVectorType const& libs =
         target.GetOriginalLinkLibraries();
-      for (cmTarget::LinkLibraryVectorType::const_iterator li = libs.begin();
-           li != libs.end(); ++li) {
-        std::string ltVar = li->first;
+      for (cmTarget::LibraryID const& li : libs) {
+        std::string ltVar = li.first;
         ltVar += "_LINK_TYPE";
         std::string ltValue;
-        switch (li->second) {
+        switch (li.second) {
           case GENERAL_LibraryType:
             valueNew += "general;";
             ltValue = "general";
@@ -117,7 +114,7 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const
             ltValue = "optimized";
             break;
         }
-        std::string lib = li->first;
+        std::string lib = li.first;
         if (cmTarget* libtgt = global->FindTarget(lib)) {
           // Handle simple output name changes.  This command is
           // deprecated so we do not support full target name
@@ -150,26 +147,21 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const
   fout << "# Generated by CMake\n\n";
   fout << "if(" << vertest << ")\n";
   fout << "  # Information for CMake 2.6 and above.\n";
-  for (std::map<std::string, std::string>::const_iterator i =
-         libDepsNew.begin();
-       i != libDepsNew.end(); ++i) {
-    if (!i->second.empty()) {
-      fout << "  set(\"" << i->first << "\" \"" << i->second << "\")\n";
+  for (auto const& i : libDepsNew) {
+    if (!i.second.empty()) {
+      fout << "  set(\"" << i.first << "\" \"" << i.second << "\")\n";
     }
   }
   fout << "else()\n";
   fout << "  # Information for CMake 2.4 and lower.\n";
-  for (std::map<std::string, std::string>::const_iterator i =
-         libDepsOld.begin();
-       i != libDepsOld.end(); ++i) {
-    if (!i->second.empty()) {
-      fout << "  set(\"" << i->first << "\" \"" << i->second << "\")\n";
+  for (auto const& i : libDepsOld) {
+    if (!i.second.empty()) {
+      fout << "  set(\"" << i.first << "\" \"" << i.second << "\")\n";
     }
   }
-  for (std::map<std::string, std::string>::const_iterator i = libTypes.begin();
-       i != libTypes.end(); ++i) {
-    if (i->second != "general") {
-      fout << "  set(\"" << i->first << "\" \"" << i->second << "\")\n";
+  for (auto const& i : libTypes) {
+    if (i.second != "general") {
+      fout << "  set(\"" << i.first << "\" \"" << i.second << "\")\n";
     }
   }
   fout << "endif()\n";

+ 2 - 3
Source/cmExportSet.cxx

@@ -13,9 +13,8 @@ cmExportSet::~cmExportSet()
 
 void cmExportSet::Compute(cmLocalGenerator* lg)
 {
-  for (std::vector<cmTargetExport*>::iterator it = this->TargetExports.begin();
-       it != this->TargetExports.end(); ++it) {
-    (*it)->Target = lg->FindGeneratorTargetToUse((*it)->TargetName);
+  for (cmTargetExport* tgtExport : this->TargetExports) {
+    tgtExport->Target = lg->FindGeneratorTargetToUse(tgtExport->TargetName);
   }
 }
 

+ 11 - 15
Source/cmExportTryCompileFileGenerator.cxx

@@ -77,11 +77,9 @@ std::string cmExportTryCompileFileGenerator::FindTargets(
 
   const std::set<cmGeneratorTarget const*>& allTargets =
     cge->GetAllTargetsSeen();
-  for (std::set<cmGeneratorTarget const*>::const_iterator li =
-         allTargets.begin();
-       li != allTargets.end(); ++li) {
-    if (emitted.insert(*li).second) {
-      this->Exports.push_back(*li);
+  for (cmGeneratorTarget const* target : allTargets) {
+    if (emitted.insert(target).second) {
+      this->Exports.push_back(target);
     }
   }
   return result;
@@ -92,22 +90,20 @@ void cmExportTryCompileFileGenerator::PopulateProperties(
   std::set<cmGeneratorTarget const*>& emitted)
 {
   std::vector<std::string> props = target->GetPropertyKeys();
-  for (std::vector<std::string>::const_iterator i = props.begin();
-       i != props.end(); ++i) {
+  for (std::string const& p : props) {
 
-    properties[*i] = target->GetProperty(*i);
+    properties[p] = target->GetProperty(p);
 
-    if (i->find("IMPORTED_LINK_INTERFACE_LIBRARIES") == 0 ||
-        i->find("IMPORTED_LINK_DEPENDENT_LIBRARIES") == 0 ||
-        i->find("INTERFACE_LINK_LIBRARIES") == 0) {
-      std::string evalResult = this->FindTargets(*i, target, emitted);
+    if (p.find("IMPORTED_LINK_INTERFACE_LIBRARIES") == 0 ||
+        p.find("IMPORTED_LINK_DEPENDENT_LIBRARIES") == 0 ||
+        p.find("INTERFACE_LINK_LIBRARIES") == 0) {
+      std::string evalResult = this->FindTargets(p, target, emitted);
 
       std::vector<std::string> depends;
       cmSystemTools::ExpandListArgument(evalResult, depends);
-      for (std::vector<std::string>::const_iterator li = depends.begin();
-           li != depends.end(); ++li) {
+      for (std::string const& li : depends) {
         cmGeneratorTarget* tgt =
-          target->GetLocalGenerator()->FindGeneratorTargetToUse(*li);
+          target->GetLocalGenerator()->FindGeneratorTargetToUse(li);
         if (tgt && emitted.insert(tgt).second) {
           this->Exports.push_back(tgt);
         }

+ 61 - 91
Source/cmExtraCodeBlocksGenerator.cxx

@@ -63,11 +63,9 @@ cmExtraCodeBlocksGenerator::GetFactory()
 void cmExtraCodeBlocksGenerator::Generate()
 {
   // for each sub project in the project create a codeblocks project
-  for (std::map<std::string, std::vector<cmLocalGenerator*>>::const_iterator
-         it = this->GlobalGenerator->GetProjectMap().begin();
-       it != this->GlobalGenerator->GetProjectMap().end(); ++it) {
+  for (auto const& it : this->GlobalGenerator->GetProjectMap()) {
     // create a project file
-    this->CreateProjectFile(it->second);
+    this->CreateProjectFile(it.second);
   }
 }
 
@@ -116,15 +114,14 @@ void Tree::InsertPath(const std::vector<std::string>& splitted,
     files.insert(fileName);
     return;
   }
-  for (std::vector<Tree>::iterator it = folders.begin(); it != folders.end();
-       ++it) {
-    if ((*it).path == splitted[start]) {
+  for (Tree& folder : folders) {
+    if (folder.path == splitted[start]) {
       if (start + 1 < splitted.size()) {
-        it->InsertPath(splitted, start + 1, fileName);
+        folder.InsertPath(splitted, start + 1, fileName);
         return;
       }
       // last part of splitted
-      it->files.insert(fileName);
+      folder.files.insert(fileName);
       return;
     }
   }
@@ -145,9 +142,8 @@ void Tree::BuildVirtualFolder(cmXMLWriter& xml) const
 {
   xml.StartElement("Option");
   std::string virtualFolders = "CMake Files\\;";
-  for (std::vector<Tree>::const_iterator it = folders.begin();
-       it != folders.end(); ++it) {
-    it->BuildVirtualFolderImpl(virtualFolders, "");
+  for (Tree const& folder : folders) {
+    folder.BuildVirtualFolderImpl(virtualFolders, "");
   }
   xml.Attribute("virtualFolders", virtualFolders);
   xml.EndElement();
@@ -157,18 +153,16 @@ void Tree::BuildVirtualFolderImpl(std::string& virtualFolders,
                                   const std::string& prefix) const
 {
   virtualFolders += "CMake Files\\" + prefix + path + "\\;";
-  for (std::vector<Tree>::const_iterator it = folders.begin();
-       it != folders.end(); ++it) {
-    it->BuildVirtualFolderImpl(virtualFolders, prefix + path + "\\");
+  for (Tree const& folder : folders) {
+    folder.BuildVirtualFolderImpl(virtualFolders, prefix + path + "\\");
   }
 }
 
 void Tree::BuildUnit(cmXMLWriter& xml, const std::string& fsPath) const
 {
-  for (std::set<std::string>::const_iterator it = files.begin();
-       it != files.end(); ++it) {
+  for (std::string const& f : files) {
     xml.StartElement("Unit");
-    xml.Attribute("filename", fsPath + *it);
+    xml.Attribute("filename", fsPath + f);
 
     xml.StartElement("Option");
     xml.Attribute("virtualFolder", "CMake Files\\");
@@ -176,9 +170,8 @@ void Tree::BuildUnit(cmXMLWriter& xml, const std::string& fsPath) const
 
     xml.EndElement();
   }
-  for (std::vector<Tree>::const_iterator it = folders.begin();
-       it != folders.end(); ++it) {
-    it->BuildUnitImpl(xml, "", fsPath);
+  for (Tree const& folder : folders) {
+    folder.BuildUnitImpl(xml, "", fsPath);
   }
 }
 
@@ -186,10 +179,9 @@ void Tree::BuildUnitImpl(cmXMLWriter& xml,
                          const std::string& virtualFolderPath,
                          const std::string& fsPath) const
 {
-  for (std::set<std::string>::const_iterator it = files.begin();
-       it != files.end(); ++it) {
+  for (std::string const& f : files) {
     xml.StartElement("Unit");
-    xml.Attribute("filename", fsPath + path + "/" + *it);
+    xml.Attribute("filename", fsPath + path + "/" + f);
 
     xml.StartElement("Option");
     xml.Attribute("virtualFolder",
@@ -198,10 +190,9 @@ void Tree::BuildUnitImpl(cmXMLWriter& xml,
 
     xml.EndElement();
   }
-  for (std::vector<Tree>::const_iterator it = folders.begin();
-       it != folders.end(); ++it) {
-    it->BuildUnitImpl(xml, virtualFolderPath + path + "\\",
-                      fsPath + path + "/");
+  for (Tree const& folder : folders) {
+    folder.BuildUnitImpl(xml, virtualFolderPath + path + "\\",
+                         fsPath + path + "/");
   }
 }
 
@@ -217,29 +208,24 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
   Tree tree;
 
   // build tree of virtual folders
-  for (std::map<std::string, std::vector<cmLocalGenerator*>>::const_iterator
-         it = this->GlobalGenerator->GetProjectMap().begin();
-       it != this->GlobalGenerator->GetProjectMap().end(); ++it) {
+  for (auto const& it : this->GlobalGenerator->GetProjectMap()) {
     // Collect all files
     std::vector<std::string> listFiles;
-    for (std::vector<cmLocalGenerator*>::const_iterator jt =
-           it->second.begin();
-         jt != it->second.end(); ++jt) {
+    for (cmLocalGenerator* lg : it.second) {
       const std::vector<std::string>& files =
-        (*jt)->GetMakefile()->GetListFiles();
+        lg->GetMakefile()->GetListFiles();
       listFiles.insert(listFiles.end(), files.begin(), files.end());
     }
 
     // Convert
-    for (std::vector<std::string>::const_iterator jt = listFiles.begin();
-         jt != listFiles.end(); ++jt) {
+    for (std::string const& listFile : listFiles) {
       // don't put cmake's own files into the project (#12110):
-      if (jt->find(cmSystemTools::GetCMakeRoot()) == 0) {
+      if (listFile.find(cmSystemTools::GetCMakeRoot()) == 0) {
         continue;
       }
 
       const std::string& relative = cmSystemTools::RelativePath(
-        it->second[0]->GetSourceDirectory(), jt->c_str());
+        it.second[0]->GetSourceDirectory(), listFile.c_str());
       std::vector<std::string> splitted;
       cmSystemTools::SplitPath(relative, splitted, false);
       // Split filename from path
@@ -295,20 +281,17 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
 
   // add all executable and library targets and some of the GLOBAL
   // and UTILITY targets
-  for (std::vector<cmLocalGenerator*>::const_iterator lg = lgs.begin();
-       lg != lgs.end(); lg++) {
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*lg)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ti++) {
-      std::string targetName = (*ti)->GetName();
-      switch ((*ti)->GetType()) {
+  for (cmLocalGenerator* lg : lgs) {
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* target : targets) {
+      std::string targetName = target->GetName();
+      switch (target->GetType()) {
         case cmStateEnums::GLOBAL_TARGET: {
           // Only add the global targets from CMAKE_BINARY_DIR,
           // not from the subdirs
-          if (strcmp((*lg)->GetCurrentBinaryDirectory(),
-                     (*lg)->GetBinaryDirectory()) == 0) {
-            this->AppendTarget(xml, targetName, nullptr, make.c_str(), *lg,
+          if (strcmp(lg->GetCurrentBinaryDirectory(),
+                     lg->GetBinaryDirectory()) == 0) {
+            this->AppendTarget(xml, targetName, nullptr, make.c_str(), lg,
                                compiler.c_str(), makeArgs);
           }
         } break;
@@ -324,7 +307,7 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
             break;
           }
 
-          this->AppendTarget(xml, targetName, nullptr, make.c_str(), *lg,
+          this->AppendTarget(xml, targetName, nullptr, make.c_str(), lg,
                              compiler.c_str(), makeArgs);
           break;
         case cmStateEnums::EXECUTABLE:
@@ -332,12 +315,12 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
         case cmStateEnums::SHARED_LIBRARY:
         case cmStateEnums::MODULE_LIBRARY:
         case cmStateEnums::OBJECT_LIBRARY: {
-          cmGeneratorTarget* gt = *ti;
-          this->AppendTarget(xml, targetName, gt, make.c_str(), *lg,
+          cmGeneratorTarget* gt = target;
+          this->AppendTarget(xml, targetName, gt, make.c_str(), lg,
                              compiler.c_str(), makeArgs);
           std::string fastTarget = targetName;
           fastTarget += "/fast";
-          this->AppendTarget(xml, fastTarget, gt, make.c_str(), *lg,
+          this->AppendTarget(xml, fastTarget, gt, make.c_str(), lg,
                              compiler.c_str(), makeArgs);
         } break;
         default:
@@ -358,14 +341,11 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
   std::vector<std::string> const& srcExts =
     this->GlobalGenerator->GetCMakeInstance()->GetSourceExtensions();
 
-  for (std::vector<cmLocalGenerator*>::const_iterator lg = lgs.begin();
-       lg != lgs.end(); lg++) {
-    cmMakefile* makefile = (*lg)->GetMakefile();
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*lg)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ti++) {
-      switch ((*ti)->GetType()) {
+  for (cmLocalGenerator* lg : lgs) {
+    cmMakefile* makefile = lg->GetMakefile();
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* target : targets) {
+      switch (target->GetType()) {
         case cmStateEnums::EXECUTABLE:
         case cmStateEnums::STATIC_LIBRARY:
         case cmStateEnums::SHARED_LIBRARY:
@@ -374,41 +354,38 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
         case cmStateEnums::UTILITY: // can have sources since 2.6.3
         {
           std::vector<cmSourceFile*> sources;
-          cmGeneratorTarget* gt = *ti;
+          cmGeneratorTarget* gt = target;
           gt->GetSourceFiles(sources,
                              makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-          for (std::vector<cmSourceFile*>::const_iterator si = sources.begin();
-               si != sources.end(); si++) {
+          for (cmSourceFile* s : sources) {
             // don't add source files from UTILITY target which have the
             // GENERATED property set:
             if (gt->GetType() == cmStateEnums::UTILITY &&
-                (*si)->GetPropertyAsBool("GENERATED")) {
+                s->GetPropertyAsBool("GENERATED")) {
               continue;
             }
 
             // check whether it is a C/C++ implementation file
             bool isCFile = false;
-            std::string lang = (*si)->GetLanguage();
+            std::string lang = s->GetLanguage();
             if (lang == "C" || lang == "CXX") {
-              std::string const& srcext = (*si)->GetExtension();
-              for (std::vector<std::string>::const_iterator ext =
-                     srcExts.begin();
-                   ext != srcExts.end(); ++ext) {
-                if (srcext == *ext) {
+              std::string const& srcext = s->GetExtension();
+              for (std::string const& ext : srcExts) {
+                if (srcext == ext) {
                   isCFile = true;
                   break;
                 }
               }
             }
 
-            std::string const& fullPath = (*si)->GetFullPath();
+            std::string const& fullPath = s->GetFullPath();
 
             if (isCFile) {
               cFiles.push_back(fullPath);
             }
 
             CbpUnit& cbpUnit = allFiles[fullPath];
-            cbpUnit.Targets.push_back(*ti);
+            cbpUnit.Targets.push_back(target);
           }
         }
         default: // intended fallthrough
@@ -427,19 +404,16 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
   // file exists. If it does, it is inserted into the map of files.
   // A very similar version of that code exists also in the kdevelop
   // project generator.
-  for (std::vector<std::string>::const_iterator sit = cFiles.begin();
-       sit != cFiles.end(); ++sit) {
-    std::string const& fileName = *sit;
+  for (std::string const& fileName : cFiles) {
     std::string headerBasename = cmSystemTools::GetFilenamePath(fileName);
     headerBasename += "/";
     headerBasename += cmSystemTools::GetFilenameWithoutExtension(fileName);
 
     // check if there's a matching header around
-    for (std::vector<std::string>::const_iterator ext = headerExts.begin();
-         ext != headerExts.end(); ++ext) {
+    for (std::string const& ext : headerExts) {
       std::string hname = headerBasename;
       hname += ".";
-      hname += *ext;
+      hname += ext;
       // if it's already in the set, don't check if it exists on disk
       if (allFiles.find(hname) != allFiles.end()) {
         break;
@@ -453,19 +427,16 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
   }
 
   // insert all source files in the CodeBlocks project
-  for (all_files_map_t::const_iterator sit = allFiles.begin();
-       sit != allFiles.end(); ++sit) {
-    std::string const& unitFilename = sit->first;
-    CbpUnit const& unit = sit->second;
+  for (auto const& s : allFiles) {
+    std::string const& unitFilename = s.first;
+    CbpUnit const& unit = s.second;
 
     xml.StartElement("Unit");
     xml.Attribute("filename", unitFilename);
 
-    for (std::vector<const cmGeneratorTarget*>::const_iterator ti =
-           unit.Targets.begin();
-         ti != unit.Targets.end(); ++ti) {
+    for (cmGeneratorTarget const* tgt : unit.Targets) {
       xml.StartElement("Option");
-      xml.Attribute("target", (*ti)->GetName());
+      xml.Attribute("target", tgt->GetName());
       xml.EndElement();
     }
 
@@ -575,10 +546,9 @@ void cmExtraCodeBlocksGenerator::AppendTarget(
     target->GetCompileDefinitions(cdefs, buildType, "C");
 
     // Expand the list.
-    for (std::vector<std::string>::const_iterator di = cdefs.begin();
-         di != cdefs.end(); ++di) {
+    for (std::string const& d : cdefs) {
       xml.StartElement("Add");
-      xml.Attribute("option", "-D" + *di);
+      xml.Attribute("option", "-D" + d);
       xml.EndElement();
     }
 

+ 41 - 60
Source/cmExtraCodeLiteGenerator.cxx

@@ -60,20 +60,18 @@ void cmExtraCodeLiteGenerator::Generate()
   // loop projects and locate the root project.
   // and extract the information for creating the worspace
   // root makefile
-  for (std::map<std::string, std::vector<cmLocalGenerator*>>::const_iterator
-         it = projectMap.begin();
-       it != projectMap.end(); ++it) {
-    const cmMakefile* mf = it->second[0]->GetMakefile();
+  for (auto const& it : projectMap) {
+    const cmMakefile* mf = it.second[0]->GetMakefile();
     this->ConfigName = GetConfigurationName(mf);
 
-    if (strcmp(it->second[0]->GetCurrentBinaryDirectory(),
-               it->second[0]->GetBinaryDirectory()) == 0) {
-      workspaceOutputDir = it->second[0]->GetCurrentBinaryDirectory();
-      workspaceProjectName = it->second[0]->GetProjectName();
-      workspaceSourcePath = it->second[0]->GetSourceDirectory();
+    if (strcmp(it.second[0]->GetCurrentBinaryDirectory(),
+               it.second[0]->GetBinaryDirectory()) == 0) {
+      workspaceOutputDir = it.second[0]->GetCurrentBinaryDirectory();
+      workspaceProjectName = it.second[0]->GetProjectName();
+      workspaceSourcePath = it.second[0]->GetSourceDirectory();
       workspaceFileName = workspaceOutputDir + "/";
       workspaceFileName += workspaceProjectName + ".workspace";
-      this->WorkspacePath = it->second[0]->GetCurrentBinaryDirectory();
+      this->WorkspacePath = it.second[0]->GetCurrentBinaryDirectory();
       ;
       break;
     }
@@ -101,10 +99,9 @@ void cmExtraCodeLiteGenerator::Generate()
   xml.Attribute("Name", this->ConfigName);
   xml.Attribute("Selected", "yes");
 
-  for (std::vector<std::string>::iterator it(ProjectNames.begin());
-       it != ProjectNames.end(); it++) {
+  for (std::string const& it : ProjectNames) {
     xml.StartElement("Project");
-    xml.Attribute("Name", *it);
+    xml.Attribute("Name", it);
     xml.Attribute("ConfigName", this->ConfigName);
     xml.EndElement();
   }
@@ -122,14 +119,11 @@ std::vector<std::string> cmExtraCodeLiteGenerator::CreateProjectsByTarget(
   // for each target in the workspace create a codelite project
   const std::vector<cmLocalGenerator*>& lgs =
     this->GlobalGenerator->GetLocalGenerators();
-  for (std::vector<cmLocalGenerator*>::const_iterator lg(lgs.begin());
-       lg != lgs.end(); lg++) {
-    for (std::vector<cmGeneratorTarget*>::const_iterator lt =
-           (*lg)->GetGeneratorTargets().begin();
-         lt != (*lg)->GetGeneratorTargets().end(); lt++) {
-      cmStateEnums::TargetType type = (*lt)->GetType();
-      std::string outputDir = (*lg)->GetCurrentBinaryDirectory();
-      std::string targetName = (*lt)->GetName();
+  for (cmLocalGenerator* lg : lgs) {
+    for (cmGeneratorTarget* lt : lg->GetGeneratorTargets()) {
+      cmStateEnums::TargetType type = lt->GetType();
+      std::string outputDir = lg->GetCurrentBinaryDirectory();
+      std::string targetName = lt->GetName();
       std::string filename = outputDir + "/" + targetName + ".project";
       retval.push_back(targetName);
       // Make the project file relative to the workspace
@@ -149,7 +143,7 @@ std::vector<std::string> cmExtraCodeLiteGenerator::CreateProjectsByTarget(
           xml->Attribute("Active", "No");
           xml->EndElement();
 
-          CreateNewProjectFile(*lt, filename);
+          CreateNewProjectFile(lt, filename);
           break;
         default:
           break;
@@ -165,12 +159,10 @@ std::vector<std::string> cmExtraCodeLiteGenerator::CreateProjectsByProjectMaps(
 {
   std::vector<std::string> retval;
   // for each sub project in the workspace create a codelite project
-  for (std::map<std::string, std::vector<cmLocalGenerator*>>::const_iterator
-         it = this->GlobalGenerator->GetProjectMap().begin();
-       it != this->GlobalGenerator->GetProjectMap().end(); it++) {
+  for (auto const& it : this->GlobalGenerator->GetProjectMap()) {
 
-    std::string outputDir = it->second[0]->GetCurrentBinaryDirectory();
-    std::string projectName = it->second[0]->GetProjectName();
+    std::string outputDir = it.second[0]->GetCurrentBinaryDirectory();
+    std::string projectName = it.second[0]->GetProjectName();
     retval.push_back(projectName);
     std::string filename = outputDir + "/" + projectName + ".project";
 
@@ -179,7 +171,7 @@ std::vector<std::string> cmExtraCodeLiteGenerator::CreateProjectsByProjectMaps(
                                            filename.c_str());
 
     // create a project file
-    this->CreateProjectFile(it->second);
+    this->CreateProjectFile(it.second);
     xml->StartElement("Project");
     xml->Attribute("Name", projectName);
     xml->Attribute("Path", filename);
@@ -235,16 +227,14 @@ std::string cmExtraCodeLiteGenerator::CollectSourceFiles(
       std::vector<cmSourceFile*> sources;
       gt->GetSourceFiles(sources,
                          makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-      for (std::vector<cmSourceFile*>::const_iterator si = sources.begin();
-           si != sources.end(); si++) {
+      for (cmSourceFile* s : sources) {
         // check whether it is a C/C++ implementation file
         bool isCFile = false;
-        std::string lang = (*si)->GetLanguage();
+        std::string lang = s->GetLanguage();
         if (lang == "C" || lang == "CXX") {
-          std::string const& srcext = (*si)->GetExtension();
-          for (std::vector<std::string>::const_iterator ext = srcExts.begin();
-               ext != srcExts.end(); ++ext) {
-            if (srcext == *ext) {
+          std::string const& srcext = s->GetExtension();
+          for (std::string const& ext : srcExts) {
+            if (srcext == ext) {
               isCFile = true;
               break;
             }
@@ -253,9 +243,9 @@ std::string cmExtraCodeLiteGenerator::CollectSourceFiles(
 
         // then put it accordingly into one of the two containers
         if (isCFile) {
-          cFiles[(*si)->GetFullPath()] = *si;
+          cFiles[s->GetFullPath()] = s;
         } else {
-          otherFiles.insert((*si)->GetFullPath());
+          otherFiles.insert(s->GetFullPath());
         }
       }
     }
@@ -289,14 +279,11 @@ void cmExtraCodeLiteGenerator::CreateNewProjectFile(
   std::map<std::string, cmSourceFile*> cFiles;
   std::set<std::string> otherFiles;
 
-  for (std::vector<cmLocalGenerator*>::const_iterator lg = lgs.begin();
-       lg != lgs.end(); lg++) {
-    cmMakefile* makefile = (*lg)->GetMakefile();
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*lg)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ti++) {
-      projectType = CollectSourceFiles(makefile, *ti, cFiles, otherFiles);
+  for (cmLocalGenerator* lg : lgs) {
+    cmMakefile* makefile = lg->GetMakefile();
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* target : targets) {
+      projectType = CollectSourceFiles(makefile, target, cFiles, otherFiles);
     }
   }
 
@@ -324,19 +311,16 @@ void cmExtraCodeLiteGenerator::FindMatchingHeaderfiles(
   // file exists. If it does, it is inserted into the map of files.
   // A very similar version of that code exists also in the kdevelop
   // project generator.
-  for (std::map<std::string, cmSourceFile*>::const_iterator sit =
-         cFiles.begin();
-       sit != cFiles.end(); ++sit) {
-    std::string headerBasename = cmSystemTools::GetFilenamePath(sit->first);
+  for (auto const& sit : cFiles) {
+    std::string headerBasename = cmSystemTools::GetFilenamePath(sit.first);
     headerBasename += "/";
-    headerBasename += cmSystemTools::GetFilenameWithoutExtension(sit->first);
+    headerBasename += cmSystemTools::GetFilenameWithoutExtension(sit.first);
 
     // check if there's a matching header around
-    for (std::vector<std::string>::const_iterator ext = headerExts.begin();
-         ext != headerExts.end(); ++ext) {
+    for (std::string const& ext : headerExts) {
       std::string hname = headerBasename;
       hname += ".";
-      hname += *ext;
+      hname += ext;
       // if it's already in the set, don't check if it exists on disk
       std::set<std::string>::const_iterator headerIt = otherFiles.find(hname);
       if (headerIt != otherFiles.end()) {
@@ -359,10 +343,9 @@ void cmExtraCodeLiteGenerator::CreateFoldersAndFiles(
   std::vector<std::string> components;
   size_t numOfEndEl = 0;
 
-  for (std::set<std::string>::const_iterator it = cFiles.begin();
-       it != cFiles.end(); ++it) {
+  for (std::string const& cFile : cFiles) {
     std::string frelapath =
-      cmSystemTools::RelativePath(projectPath.c_str(), it->c_str());
+      cmSystemTools::RelativePath(projectPath.c_str(), cFile.c_str());
     cmsys::SystemTools::SplitPath(frelapath, components, false);
     components.pop_back(); // erase last member -> it is file, not folder
     components.erase(components.begin()); // erase "root"
@@ -424,10 +407,8 @@ void cmExtraCodeLiteGenerator::CreateFoldersAndFiles(
   const std::string& projectPath)
 {
   std::set<std::string> s;
-  for (std::map<std::string, cmSourceFile*>::const_iterator it =
-         cFiles.begin();
-       it != cFiles.end(); ++it) {
-    s.insert(it->first);
+  for (auto const& it : cFiles) {
+    s.insert(it.first);
   }
   this->CreateFoldersAndFiles(s, xml, projectPath);
 }

+ 67 - 95
Source/cmExtraEclipseCDT4Generator.cxx

@@ -5,7 +5,6 @@
 #include "cmsys/RegularExpression.hxx"
 #include <algorithm>
 #include <assert.h>
-#include <map>
 #include <sstream>
 #include <stdio.h>
 #include <utility>
@@ -78,16 +77,15 @@ void cmExtraEclipseCDT4Generator::EnableLanguage(
   std::vector<std::string> const& languages, cmMakefile* /*unused*/,
   bool /*optional*/)
 {
-  for (std::vector<std::string>::const_iterator lit = languages.begin();
-       lit != languages.end(); ++lit) {
-    if (*lit == "CXX") {
+  for (std::string const& l : languages) {
+    if (l == "CXX") {
       this->Natures.insert("org.eclipse.cdt.core.ccnature");
       this->Natures.insert("org.eclipse.cdt.core.cnature");
       this->CXXEnabled = true;
-    } else if (*lit == "C") {
+    } else if (l == "C") {
       this->Natures.insert("org.eclipse.cdt.core.cnature");
       this->CEnabled = true;
-    } else if (*lit == "Java") {
+    } else if (l == "Java") {
       this->Natures.insert("org.eclipse.jdt.core.javanature");
     }
   }
@@ -382,18 +380,16 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile()
   xml.Element("nature", "org.eclipse.cdt.make.core.ScannerConfigNature");
   ;
 
-  for (std::set<std::string>::const_iterator nit = this->Natures.begin();
-       nit != this->Natures.end(); ++nit) {
-    xml.Element("nature", *nit);
+  for (std::string const& n : this->Natures) {
+    xml.Element("nature", n);
   }
 
   if (const char* extraNaturesProp =
         mf->GetState()->GetGlobalProperty("ECLIPSE_EXTRA_NATURES")) {
     std::vector<std::string> extraNatures;
     cmSystemTools::ExpandListArgument(extraNaturesProp, extraNatures);
-    for (std::vector<std::string>::const_iterator nit = extraNatures.begin();
-         nit != extraNatures.end(); ++nit) {
-      xml.Element("nature", *nit);
+    for (std::string const& n : extraNatures) {
+      xml.Element("nature", n);
     }
   }
 
@@ -435,25 +431,22 @@ void cmExtraEclipseCDT4Generator::WriteGroups(
   std::vector<cmSourceGroup> const& sourceGroups, std::string& linkName,
   cmXMLWriter& xml)
 {
-  for (std::vector<cmSourceGroup>::const_iterator sgIt = sourceGroups.begin();
-       sgIt != sourceGroups.end(); ++sgIt) {
+  for (cmSourceGroup const& sg : sourceGroups) {
     std::string linkName3 = linkName;
     linkName3 += "/";
-    linkName3 += sgIt->GetFullName();
+    linkName3 += sg.GetFullName();
 
     std::replace(linkName3.begin(), linkName3.end(), '\\', '/');
 
     this->AppendLinkedResource(xml, linkName3, "virtual:/virtual",
                                VirtualFolder);
-    std::vector<cmSourceGroup> const& children = sgIt->GetGroupChildren();
+    std::vector<cmSourceGroup> const& children = sg.GetGroupChildren();
     if (!children.empty()) {
       this->WriteGroups(children, linkName, xml);
     }
-    std::vector<const cmSourceFile*> sFiles = sgIt->GetSourceFiles();
-    for (std::vector<const cmSourceFile*>::const_iterator fileIt =
-           sFiles.begin();
-         fileIt != sFiles.end(); ++fileIt) {
-      std::string const& fullPath = (*fileIt)->GetFullPath();
+    std::vector<const cmSourceFile*> sFiles = sg.GetSourceFiles();
+    for (cmSourceFile const* file : sFiles) {
+      std::string const& fullPath = file->GetFullPath();
 
       if (!cmSystemTools::FileIsDirectory(fullPath)) {
         std::string linkName4 = linkName3;
@@ -471,28 +464,24 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(cmXMLWriter& xml)
   std::string linkName = "[Targets]";
   this->AppendLinkedResource(xml, linkName, "virtual:/virtual", VirtualFolder);
 
-  for (std::vector<cmLocalGenerator*>::const_iterator lgIt =
-         this->GlobalGenerator->GetLocalGenerators().begin();
-       lgIt != this->GlobalGenerator->GetLocalGenerators().end(); ++lgIt) {
-    cmMakefile* makefile = (*lgIt)->GetMakefile();
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*lgIt)->GetGeneratorTargets();
+  for (cmLocalGenerator* lg : this->GlobalGenerator->GetLocalGenerators()) {
+    cmMakefile* makefile = lg->GetMakefile();
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
 
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ++ti) {
+    for (cmGeneratorTarget* target : targets) {
       std::string linkName2 = linkName;
       linkName2 += "/";
-      switch ((*ti)->GetType()) {
+      switch (target->GetType()) {
         case cmStateEnums::EXECUTABLE:
         case cmStateEnums::STATIC_LIBRARY:
         case cmStateEnums::SHARED_LIBRARY:
         case cmStateEnums::MODULE_LIBRARY:
         case cmStateEnums::OBJECT_LIBRARY: {
           const char* prefix =
-            ((*ti)->GetType() == cmStateEnums::EXECUTABLE ? "[exe] "
-                                                          : "[lib] ");
+            (target->GetType() == cmStateEnums::EXECUTABLE ? "[exe] "
+                                                           : "[lib] ");
           linkName2 += prefix;
-          linkName2 += (*ti)->GetName();
+          linkName2 += target->GetName();
           this->AppendLinkedResource(xml, linkName2, "virtual:/virtual",
                                      VirtualFolder);
           if (!this->GenerateLinkedResources) {
@@ -501,17 +490,16 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(cmXMLWriter& xml)
           std::vector<cmSourceGroup> sourceGroups =
             makefile->GetSourceGroups();
           // get the files from the source lists then add them to the groups
-          cmGeneratorTarget* gt = const_cast<cmGeneratorTarget*>(*ti);
+          cmGeneratorTarget* gt = const_cast<cmGeneratorTarget*>(target);
           std::vector<cmSourceFile*> files;
           gt->GetSourceFiles(files,
                              makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-          for (std::vector<cmSourceFile*>::const_iterator sfIt = files.begin();
-               sfIt != files.end(); sfIt++) {
+          for (cmSourceFile* sf : files) {
             // Add the file to the list of sources.
-            std::string const& source = (*sfIt)->GetFullPath();
+            std::string const& source = sf->GetFullPath();
             cmSourceGroup* sourceGroup =
               makefile->FindSourceGroup(source.c_str(), sourceGroups);
-            sourceGroup->AssignSource(*sfIt);
+            sourceGroup->AssignSource(sf);
           }
 
           this->WriteGroups(sourceGroups, linkName2, xml);
@@ -536,17 +524,15 @@ void cmExtraEclipseCDT4Generator::CreateLinksToSubprojects(
   this->AppendLinkedResource(xml, "[Subprojects]", "virtual:/virtual",
                              VirtualFolder);
 
-  for (std::map<std::string, std::vector<cmLocalGenerator*>>::const_iterator
-         it = this->GlobalGenerator->GetProjectMap().begin();
-       it != this->GlobalGenerator->GetProjectMap().end(); ++it) {
+  for (auto const& it : this->GlobalGenerator->GetProjectMap()) {
     std::string linkSourceDirectory =
-      this->GetEclipsePath(it->second[0]->GetCurrentSourceDirectory());
+      this->GetEclipsePath(it.second[0]->GetCurrentSourceDirectory());
     // a linked resource must not point to a parent directory of .project or
     // .project itself
     if ((baseDir != linkSourceDirectory) &&
         !cmSystemTools::IsSubDirectory(baseDir, linkSourceDirectory)) {
       std::string linkName = "[Subprojects]/";
-      linkName += it->first;
+      linkName += it.first;
       this->AppendLinkedResource(xml, linkName,
                                  this->GetEclipsePath(linkSourceDirectory),
                                  LinkToFolder);
@@ -560,10 +546,9 @@ void cmExtraEclipseCDT4Generator::AppendIncludeDirectories(
   cmXMLWriter& xml, const std::vector<std::string>& includeDirs,
   std::set<std::string>& emittedDirs)
 {
-  for (std::vector<std::string>::const_iterator inc = includeDirs.begin();
-       inc != includeDirs.end(); ++inc) {
-    if (!inc->empty()) {
-      std::string dir = cmSystemTools::CollapseFullPath(*inc);
+  for (std::string const& inc : includeDirs) {
+    if (!inc.empty()) {
+      std::string dir = cmSystemTools::CollapseFullPath(inc);
 
       // handle framework include dirs on OSX, the remainder after the
       // Frameworks/ part has to be stripped
@@ -712,19 +697,17 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
     xml.EndElement();
   }
 
-  for (std::vector<std::string>::const_iterator it =
-         this->SrcLinkedResources.begin();
-       it != this->SrcLinkedResources.end(); ++it) {
+  for (std::string const& p : this->SrcLinkedResources) {
     xml.StartElement("pathentry");
     xml.Attribute("kind", "src");
-    xml.Attribute("path", *it);
+    xml.Attribute("path", p);
     xml.EndElement();
 
     // exlude source directory from output search path
     // - only if not named the same as an output directory
     if (!cmSystemTools::FileIsDirectory(
-          std::string(this->HomeOutputDirectory + "/" + *it))) {
-      excludeFromOut += *it + "/|";
+          std::string(this->HomeOutputDirectory + "/" + p))) {
+      excludeFromOut += p + "/|";
     }
   }
 
@@ -738,34 +721,31 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
 
   // add pre-processor definitions to allow eclipse to gray out sections
   emmited.clear();
-  for (std::vector<cmLocalGenerator*>::const_iterator it =
-         this->GlobalGenerator->GetLocalGenerators().begin();
-       it != this->GlobalGenerator->GetLocalGenerators().end(); ++it) {
+  for (cmLocalGenerator* lgen : this->GlobalGenerator->GetLocalGenerators()) {
 
     if (const char* cdefs =
-          (*it)->GetMakefile()->GetProperty("COMPILE_DEFINITIONS")) {
+          lgen->GetMakefile()->GetProperty("COMPILE_DEFINITIONS")) {
       // Expand the list.
       std::vector<std::string> defs;
       cmGeneratorExpression::Split(cdefs, defs);
 
-      for (std::vector<std::string>::const_iterator di = defs.begin();
-           di != defs.end(); ++di) {
-        if (cmGeneratorExpression::Find(*di) != std::string::npos) {
+      for (std::string const& d : defs) {
+        if (cmGeneratorExpression::Find(d) != std::string::npos) {
           continue;
         }
 
-        std::string::size_type equals = di->find('=', 0);
-        std::string::size_type enddef = di->length();
+        std::string::size_type equals = d.find('=', 0);
+        std::string::size_type enddef = d.length();
 
         std::string def;
         std::string val;
         if (equals != std::string::npos && equals < enddef) {
           // we have -DFOO=BAR
-          def = di->substr(0, equals);
-          val = di->substr(equals + 1, enddef - equals + 1);
+          def = d.substr(0, equals);
+          val = d.substr(equals + 1, enddef - equals + 1);
         } else {
           // we have -DFOO
-          def = *di;
+          def = d;
         }
 
         // insert the definition if not already added.
@@ -850,16 +830,13 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
 
   // include dirs
   emmited.clear();
-  for (std::vector<cmLocalGenerator*>::const_iterator it =
-         this->GlobalGenerator->GetLocalGenerators().begin();
-       it != this->GlobalGenerator->GetLocalGenerators().end(); ++it) {
+  for (cmLocalGenerator* lgen : this->GlobalGenerator->GetLocalGenerators()) {
     const std::vector<cmGeneratorTarget*>& targets =
-      (*it)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator l = targets.begin();
-         l != targets.end(); ++l) {
+      lgen->GetGeneratorTargets();
+    for (cmGeneratorTarget* target : targets) {
       std::vector<std::string> includeDirs;
       std::string config = mf->GetSafeDefinition("CMAKE_BUILD_TYPE");
-      (*it)->GetIncludeDirectories(includeDirs, *l, "C", config);
+      lgen->GetIncludeDirectories(includeDirs, target, "C", config);
       this->AppendIncludeDirectories(xml, includeDirs, emmited);
     }
   }
@@ -908,21 +885,18 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
 
   // add all executable and library targets and some of the GLOBAL
   // and UTILITY targets
-  for (std::vector<cmLocalGenerator*>::const_iterator it =
-         this->GlobalGenerator->GetLocalGenerators().begin();
-       it != this->GlobalGenerator->GetLocalGenerators().end(); ++it) {
+  for (cmLocalGenerator* lgen : this->GlobalGenerator->GetLocalGenerators()) {
     const std::vector<cmGeneratorTarget*>& targets =
-      (*it)->GetGeneratorTargets();
-    std::string subdir = (*it)->ConvertToRelativePath(
-      this->HomeOutputDirectory, (*it)->GetCurrentBinaryDirectory());
+      lgen->GetGeneratorTargets();
+    std::string subdir = lgen->ConvertToRelativePath(
+      this->HomeOutputDirectory, lgen->GetCurrentBinaryDirectory());
     if (subdir == ".") {
       subdir = "";
     }
 
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ++ti) {
-      std::string targetName = (*ti)->GetName();
-      switch ((*ti)->GetType()) {
+    for (cmGeneratorTarget* target : targets) {
+      std::string targetName = target->GetName();
+      switch (target->GetType()) {
         case cmStateEnums::GLOBAL_TARGET: {
           // Only add the global targets from CMAKE_BINARY_DIR,
           // not from the subdirs
@@ -950,8 +924,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
         case cmStateEnums::MODULE_LIBRARY:
         case cmStateEnums::OBJECT_LIBRARY: {
           const char* prefix =
-            ((*ti)->GetType() == cmStateEnums::EXECUTABLE ? "[exe] "
-                                                          : "[lib] ");
+            (target->GetType() == cmStateEnums::EXECUTABLE ? "[exe] "
+                                                           : "[lib] ");
           this->AppendTarget(xml, targetName, make, makeArgs, subdir, prefix);
           std::string fastTarget = targetName;
           fastTarget += "/fast";
@@ -963,19 +937,19 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
             virtDir += prefix;
             virtDir += targetName;
             std::string buildArgs = "-C \"";
-            buildArgs += (*it)->GetBinaryDirectory();
+            buildArgs += lgen->GetBinaryDirectory();
             buildArgs += "\" ";
             buildArgs += makeArgs;
             this->AppendTarget(xml, "Build", make, buildArgs, virtDir, "",
                                targetName.c_str());
 
             std::string cleanArgs = "-E chdir \"";
-            cleanArgs += (*it)->GetCurrentBinaryDirectory();
+            cleanArgs += lgen->GetCurrentBinaryDirectory();
             cleanArgs += "\" \"";
             cleanArgs += cmSystemTools::GetCMakeCommand();
             cleanArgs += "\" -P \"";
-            cmGeneratorTarget* gt = *ti;
-            cleanArgs += (*it)->GetTargetDirectory(gt);
+            cmGeneratorTarget* gt = target;
+            cleanArgs += lgen->GetTargetDirectory(gt);
             cleanArgs += "/cmake_clean.cmake\"";
             this->AppendTarget(xml, "Clean", cmSystemTools::GetCMakeCommand(),
                                cleanArgs, virtDir, "", "");
@@ -997,17 +971,15 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
     // insert rules for compiling, preprocessing and assembling individual
     // files
     std::vector<std::string> objectFileTargets;
-    (*it)->GetIndividualFileTargets(objectFileTargets);
-    for (std::vector<std::string>::const_iterator fit =
-           objectFileTargets.begin();
-         fit != objectFileTargets.end(); ++fit) {
+    lg->GetIndividualFileTargets(objectFileTargets);
+    for (std::string const& f : objectFileTargets) {
       const char* prefix = "[obj] ";
-      if ((*fit)[fit->length() - 1] == 's') {
+      if (f[f.length() - 1] == 's') {
         prefix = "[to asm] ";
-      } else if ((*fit)[fit->length() - 1] == 'i') {
+      } else if (f[f.length() - 1] == 'i') {
         prefix = "[pre] ";
       }
-      this->AppendTarget(xml, *fit, make, makeArgs, subdir, prefix);
+      this->AppendTarget(xml, f, make, makeArgs, subdir, prefix);
     }
   }
 

+ 20 - 30
Source/cmExtraKateGenerator.cxx

@@ -112,18 +112,16 @@ void cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
 
   // add all executable and library targets and some of the GLOBAL
   // and UTILITY targets
-  for (std::vector<cmLocalGenerator*>::const_iterator it =
-         this->GlobalGenerator->GetLocalGenerators().begin();
-       it != this->GlobalGenerator->GetLocalGenerators().end(); ++it) {
+  for (cmLocalGenerator* localGen :
+       this->GlobalGenerator->GetLocalGenerators()) {
     const std::vector<cmGeneratorTarget*>& targets =
-      (*it)->GetGeneratorTargets();
-    std::string currentDir = (*it)->GetCurrentBinaryDirectory();
-    bool topLevel = (currentDir == (*it)->GetBinaryDirectory());
-
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ++ti) {
-      std::string targetName = (*ti)->GetName();
-      switch ((*ti)->GetType()) {
+      localGen->GetGeneratorTargets();
+    std::string currentDir = localGen->GetCurrentBinaryDirectory();
+    bool topLevel = (currentDir == localGen->GetBinaryDirectory());
+
+    for (cmGeneratorTarget* target : targets) {
+      std::string const& targetName = target->GetName();
+      switch (target->GetType()) {
         case cmStateEnums::GLOBAL_TARGET: {
           bool insertTarget = false;
           // Only add the global targets from CMAKE_BINARY_DIR,
@@ -134,7 +132,7 @@ void cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
             // this will not work within the IDE
             if (targetName == "edit_cache") {
               const char* editCommand =
-                (*it)->GetMakefile()->GetDefinition("CMAKE_EDIT_COMMAND");
+                localGen->GetMakefile()->GetDefinition("CMAKE_EDIT_COMMAND");
               if (editCommand == nullptr) {
                 insertTarget = false;
               } else if (strstr(editCommand, "ccmake") != nullptr) {
@@ -183,12 +181,9 @@ void cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg,
     // insert rules for compiling, preprocessing and assembling individual
     // files
     std::vector<std::string> objectFileTargets;
-    (*it)->GetIndividualFileTargets(objectFileTargets);
-    for (std::vector<std::string>::const_iterator fit =
-           objectFileTargets.begin();
-         fit != objectFileTargets.end(); ++fit) {
-      this->AppendTarget(fout, *fit, make, makeArgs, currentDir,
-                         homeOutputDir);
+    localGen->GetIndividualFileTargets(objectFileTargets);
+    for (std::string const& f : objectFileTargets) {
+      this->AppendTarget(fout, f, make, makeArgs, currentDir, homeOutputDir);
     }
   }
 
@@ -251,22 +246,18 @@ std::string cmExtraKateGenerator::GenerateFilesString(
   const std::vector<cmLocalGenerator*>& lgs =
     this->GlobalGenerator->GetLocalGenerators();
 
-  for (std::vector<cmLocalGenerator*>::const_iterator it = lgs.begin();
-       it != lgs.end(); it++) {
-    cmMakefile* makefile = (*it)->GetMakefile();
+  for (cmLocalGenerator* lgen : lgs) {
+    cmMakefile* makefile = lgen->GetMakefile();
     const std::vector<std::string>& listFiles = makefile->GetListFiles();
-    for (std::vector<std::string>::const_iterator lt = listFiles.begin();
-         lt != listFiles.end(); lt++) {
-      tmp = *lt;
+    for (std::string const& listFile : listFiles) {
+      tmp = listFile;
       {
         files.insert(tmp);
       }
     }
 
     const std::vector<cmSourceFile*>& sources = makefile->GetSourceFiles();
-    for (std::vector<cmSourceFile*>::const_iterator sfIt = sources.begin();
-         sfIt != sources.end(); sfIt++) {
-      cmSourceFile* sf = *sfIt;
+    for (cmSourceFile* sf : sources) {
       if (sf->GetPropertyAsBool("GENERATED")) {
         continue;
       }
@@ -278,11 +269,10 @@ std::string cmExtraKateGenerator::GenerateFilesString(
 
   const char* sep = "";
   tmp = "\"list\": [";
-  for (std::set<std::string>::const_iterator it = files.begin();
-       it != files.end(); ++it) {
+  for (std::string const& f : files) {
     tmp += sep;
     tmp += " \"";
-    tmp += *it;
+    tmp += f;
     tmp += "\"";
     sep = ",";
   }

+ 23 - 32
Source/cmExtraSublimeTextGenerator.cxx

@@ -68,11 +68,9 @@ void cmExtraSublimeTextGenerator::Generate()
     "CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS");
 
   // for each sub project in the project create a sublime text 2 project
-  for (std::map<std::string, std::vector<cmLocalGenerator*>>::const_iterator
-         it = this->GlobalGenerator->GetProjectMap().begin();
-       it != this->GlobalGenerator->GetProjectMap().end(); ++it) {
+  for (auto const& it : this->GlobalGenerator->GetProjectMap()) {
     // create a project file
-    this->CreateProjectFile(it->second);
+    this->CreateProjectFile(it.second);
   }
 }
 
@@ -144,20 +142,19 @@ void cmExtraSublimeTextGenerator::CreateNewProjectFile(
     fout << "\n\t{";
     fout << "\n\t\t" << systemName << ":";
     fout << "\n\t\t{";
-    for (std::vector<std::string>::iterator i = tokens.begin();
-         i != tokens.end(); ++i) {
-      size_t const pos = i->find_first_of('=');
+    for (std::string const& t : tokens) {
+      size_t const pos = t.find_first_of('=');
 
       if (pos != std::string::npos) {
-        std::string varName = i->substr(0, pos);
-        std::string varValue = i->substr(pos + 1);
+        std::string varName = t.substr(0, pos);
+        std::string varValue = t.substr(pos + 1);
 
         fout << "\n\t\t\t\"" << varName << "\":\"" << varValue << "\"";
       } else {
         std::ostringstream e;
         e << "Could not parse Env Vars specified in "
              "\"CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS\""
-          << ", corrupted string " << *i;
+          << ", corrupted string " << t;
         mf->IssueMessage(cmake::FATAL_ERROR, e.str());
       }
     }
@@ -182,21 +179,18 @@ void cmExtraSublimeTextGenerator::AppendAllTargets(
 
   // add all executable and library targets and some of the GLOBAL
   // and UTILITY targets
-  for (std::vector<cmLocalGenerator*>::const_iterator lg = lgs.begin();
-       lg != lgs.end(); lg++) {
-    cmMakefile* makefile = (*lg)->GetMakefile();
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*lg)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ti++) {
-      std::string targetName = (*ti)->GetName();
-      switch ((*ti)->GetType()) {
+  for (cmLocalGenerator* lg : lgs) {
+    cmMakefile* makefile = lg->GetMakefile();
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* target : targets) {
+      std::string targetName = target->GetName();
+      switch (target->GetType()) {
         case cmStateEnums::GLOBAL_TARGET: {
           // Only add the global targets from CMAKE_BINARY_DIR,
           // not from the subdirs
-          if (strcmp((*lg)->GetCurrentBinaryDirectory(),
-                     (*lg)->GetBinaryDirectory()) == 0) {
-            this->AppendTarget(fout, targetName, *lg, nullptr, make.c_str(),
+          if (strcmp(lg->GetCurrentBinaryDirectory(),
+                     lg->GetBinaryDirectory()) == 0) {
+            this->AppendTarget(fout, targetName, lg, nullptr, make.c_str(),
                                makefile, compiler.c_str(), sourceFileFlags,
                                false);
           }
@@ -213,7 +207,7 @@ void cmExtraSublimeTextGenerator::AppendAllTargets(
             break;
           }
 
-          this->AppendTarget(fout, targetName, *lg, nullptr, make.c_str(),
+          this->AppendTarget(fout, targetName, lg, nullptr, make.c_str(),
                              makefile, compiler.c_str(), sourceFileFlags,
                              false);
           break;
@@ -222,12 +216,12 @@ void cmExtraSublimeTextGenerator::AppendAllTargets(
         case cmStateEnums::SHARED_LIBRARY:
         case cmStateEnums::MODULE_LIBRARY:
         case cmStateEnums::OBJECT_LIBRARY: {
-          this->AppendTarget(fout, targetName, *lg, *ti, make.c_str(),
+          this->AppendTarget(fout, targetName, lg, target, make.c_str(),
                              makefile, compiler.c_str(), sourceFileFlags,
                              false);
           std::string fastTarget = targetName;
           fastTarget += "/fast";
-          this->AppendTarget(fout, fastTarget, *lg, *ti, make.c_str(),
+          this->AppendTarget(fout, fastTarget, lg, target, make.c_str(),
                              makefile, compiler.c_str(), sourceFileFlags,
                              false);
         } break;
@@ -249,11 +243,7 @@ void cmExtraSublimeTextGenerator::AppendTarget(
     std::vector<cmSourceFile*> sourceFiles;
     target->GetSourceFiles(sourceFiles,
                            makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-    std::vector<cmSourceFile*>::const_iterator sourceFilesEnd =
-      sourceFiles.end();
-    for (std::vector<cmSourceFile*>::const_iterator iter = sourceFiles.begin();
-         iter != sourceFilesEnd; ++iter) {
-      cmSourceFile* sourceFile = *iter;
+    for (cmSourceFile* sourceFile : sourceFiles) {
       MapSourceFileFlags::iterator sourceFileFlagsIter =
         sourceFileFlags.find(sourceFile->GetFullPath());
       if (sourceFileFlagsIter == sourceFileFlags.end()) {
@@ -264,8 +254,9 @@ void cmExtraSublimeTextGenerator::AppendTarget(
             .first;
       }
       std::vector<std::string>& flags = sourceFileFlagsIter->second;
-      std::string flagsString = this->ComputeFlagsForObject(*iter, lg, target);
-      std::string definesString = this->ComputeDefines(*iter, lg, target);
+      std::string flagsString =
+        this->ComputeFlagsForObject(sourceFile, lg, target);
+      std::string definesString = this->ComputeDefines(sourceFile, lg, target);
       flags.clear();
       cmsys::RegularExpression flagRegex;
       // Regular expression to extract compiler flags from a string

+ 21 - 28
Source/cmFileCommand.cxx

@@ -723,20 +723,18 @@ bool cmFileCommand::HandleStringsCommand(std::vector<std::string> const& args)
   // Encode the result in a CMake list.
   const char* sep = "";
   std::string output;
-  for (std::vector<std::string>::const_iterator si = strings.begin();
-       si != strings.end(); ++si) {
+  for (std::string const& sr : strings) {
     // Separate the strings in the output to make it a list.
     output += sep;
     sep = ";";
 
     // Store the string in the output, but escape semicolons to
     // make sure it is a list.
-    std::string const& sr = *si;
-    for (unsigned int i = 0; i < sr.size(); ++i) {
-      if (sr[i] == ';') {
+    for (char i : sr) {
+      if (i == ';') {
         output += '\\';
       }
-      output += sr[i];
+      output += i;
     }
   }
 
@@ -841,17 +839,16 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args,
 
     if (!globMessages.empty()) {
       bool shouldExit = false;
-      for (cmsys::Glob::GlobMessagesIterator it = globMessages.begin();
-           it != globMessages.end(); ++it) {
-        if (it->type == cmsys::Glob::cyclicRecursion) {
+      for (cmsys::Glob::Message const& globMessage : globMessages) {
+        if (globMessage.type == cmsys::Glob::cyclicRecursion) {
           this->Makefile->IssueMessage(
             cmake::AUTHOR_WARNING,
             "Cyclic recursion detected while globbing for '" + *i + "':\n" +
-              it->content);
+              globMessage.content);
         } else {
           this->Makefile->IssueMessage(
             cmake::FATAL_ERROR, "Error has occurred while globbing for '" +
-              *i + "' - " + it->content);
+              *i + "' - " + globMessage.content);
           shouldExit = true;
         }
       }
@@ -1060,12 +1057,11 @@ protected:
     // Collect properties from all matching rules.
     bool matched = false;
     MatchProperties result;
-    for (std::vector<MatchRule>::iterator mr = this->MatchRules.begin();
-         mr != this->MatchRules.end(); ++mr) {
-      if (mr->Regex.find(file_to_match)) {
+    for (MatchRule& mr : this->MatchRules) {
+      if (mr.Regex.find(file_to_match)) {
         matched = true;
-        result.Exclude |= mr->Properties.Exclude;
-        result.Permissions |= mr->Properties.Permissions;
+        result.Exclude |= mr.Properties.Exclude;
+        result.Permissions |= mr.Properties.Permissions;
       }
     }
     if (!matched && !this->MatchlessFiles) {
@@ -1421,23 +1417,22 @@ bool cmFileCopier::Run(std::vector<std::string> const& args)
     return false;
   }
 
-  for (std::vector<std::string>::const_iterator i = this->Files.begin();
-       i != this->Files.end(); ++i) {
+  for (std::string const& f : this->Files) {
     std::string file;
-    if (!i->empty() && !cmSystemTools::FileIsFullPath(*i)) {
+    if (!f.empty() && !cmSystemTools::FileIsFullPath(f)) {
       if (!this->FilesFromDir.empty()) {
         file = this->FilesFromDir;
       } else {
         file = this->Makefile->GetCurrentSourceDirectory();
       }
       file += "/";
-      file += *i;
+      file += f;
     } else if (!this->FilesFromDir.empty()) {
       this->FileCommand->SetError("option FILES_FROM_DIR requires all files "
                                   "to be specified as relative paths.");
       return false;
     } else {
-      file = *i;
+      file = f;
     }
 
     // Split the input file into its directory and name components.
@@ -1450,7 +1445,7 @@ bool cmFileCopier::Run(std::vector<std::string> const& args)
     // Compute the full path to the destination file.
     std::string toFile = this->Destination;
     if (!this->FilesFromDir.empty()) {
-      std::string dir = cmSystemTools::GetFilenamePath(*i);
+      std::string dir = cmSystemTools::GetFilenamePath(f);
       if (!dir.empty()) {
         toFile += "/";
         toFile += dir;
@@ -2882,9 +2877,8 @@ bool cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
   }
 
   struct curl_slist* headers = nullptr;
-  for (std::vector<std::string>::const_iterator h = curl_headers.begin();
-       h != curl_headers.end(); ++h) {
-    headers = ::curl_slist_append(headers, h->c_str());
+  for (std::string const& h : curl_headers) {
+    headers = ::curl_slist_append(headers, h.c_str());
   }
   ::curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
@@ -3141,9 +3135,8 @@ bool cmFileCommand::HandleUploadCommand(std::vector<std::string> const& args)
   }
 
   struct curl_slist* headers = nullptr;
-  for (std::vector<std::string>::const_iterator h = curl_headers.begin();
-       h != curl_headers.end(); ++h) {
-    headers = ::curl_slist_append(headers, h->c_str());
+  for (std::string const& h : curl_headers) {
+    headers = ::curl_slist_append(headers, h.c_str());
   }
   ::curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 

+ 13 - 15
Source/cmFileLockPool.cxx

@@ -75,16 +75,15 @@ cmFileLockResult cmFileLockPool::LockProcessScope(const std::string& filename,
 
 cmFileLockResult cmFileLockPool::Release(const std::string& filename)
 {
-  for (It i = this->FunctionScopes.begin(); i != this->FunctionScopes.end();
-       ++i) {
-    const cmFileLockResult result = (*i)->Release(filename);
+  for (auto& funcScope : this->FunctionScopes) {
+    const cmFileLockResult result = funcScope->Release(filename);
     if (!result.IsOk()) {
       return result;
     }
   }
 
-  for (It i = this->FileScopes.begin(); i != this->FileScopes.end(); ++i) {
-    const cmFileLockResult result = (*i)->Release(filename);
+  for (auto& fileScope : this->FileScopes) {
+    const cmFileLockResult result = fileScope->Release(filename);
     if (!result.IsOk()) {
       return result;
     }
@@ -95,16 +94,15 @@ cmFileLockResult cmFileLockPool::Release(const std::string& filename)
 
 bool cmFileLockPool::IsAlreadyLocked(const std::string& filename) const
 {
-  for (CIt i = this->FunctionScopes.begin(); i != this->FunctionScopes.end();
-       ++i) {
-    const bool result = (*i)->IsAlreadyLocked(filename);
+  for (auto const& funcScope : this->FunctionScopes) {
+    const bool result = funcScope->IsAlreadyLocked(filename);
     if (result) {
       return true;
     }
   }
 
-  for (CIt i = this->FileScopes.begin(); i != this->FileScopes.end(); ++i) {
-    const bool result = (*i)->IsAlreadyLocked(filename);
+  for (auto const& fileScope : this->FileScopes) {
+    const bool result = fileScope->IsAlreadyLocked(filename);
     if (result) {
       return true;
     }
@@ -138,9 +136,9 @@ cmFileLockResult cmFileLockPool::ScopePool::Lock(const std::string& filename,
 cmFileLockResult cmFileLockPool::ScopePool::Release(
   const std::string& filename)
 {
-  for (It i = this->Locks.begin(); i != this->Locks.end(); ++i) {
-    if ((*i)->IsLocked(filename)) {
-      return (*i)->Release();
+  for (auto& lock : this->Locks) {
+    if (lock->IsLocked(filename)) {
+      return lock->Release();
     }
   }
   return cmFileLockResult::MakeOk();
@@ -149,8 +147,8 @@ cmFileLockResult cmFileLockPool::ScopePool::Release(
 bool cmFileLockPool::ScopePool::IsAlreadyLocked(
   const std::string& filename) const
 {
-  for (CIt i = this->Locks.begin(); i != this->Locks.end(); ++i) {
-    if ((*i)->IsLocked(filename)) {
+  for (auto const& lock : this->Locks) {
+    if (lock->IsLocked(filename)) {
       return true;
     }
   }

+ 17 - 16
Source/cmFileMonitor.cxx

@@ -49,8 +49,8 @@ public:
                int status) const final
   {
     if (pathSegment.empty()) {
-      for (const auto& i : this->Children) {
-        i.second->Trigger(std::string(), events, status);
+      for (auto const& child : this->Children) {
+        child.second->Trigger(std::string(), events, status);
       }
     } else {
       const auto i = this->Children.find(pathSegment);
@@ -62,24 +62,24 @@ public:
 
   void StartWatching() override
   {
-    for (const auto& i : this->Children) {
-      i.second->StartWatching();
+    for (auto const& child : this->Children) {
+      child.second->StartWatching();
     }
   }
 
   void StopWatching() override
   {
-    for (const auto& i : this->Children) {
-      i.second->StopWatching();
+    for (auto const& child : this->Children) {
+      child.second->StopWatching();
     }
   }
 
   std::vector<std::string> WatchedFiles() const final
   {
     std::vector<std::string> result;
-    for (const auto& i : this->Children) {
-      for (const auto& j : i.second->WatchedFiles()) {
-        result.push_back(j);
+    for (auto const& child : this->Children) {
+      for (std::string const& f : child.second->WatchedFiles()) {
+        result.push_back(f);
       }
     }
     return result;
@@ -88,9 +88,9 @@ public:
   std::vector<std::string> WatchedDirectories() const override
   {
     std::vector<std::string> result;
-    for (const auto& i : this->Children) {
-      for (const auto& j : i.second->WatchedDirectories()) {
-        result.push_back(j);
+    for (auto const& child : this->Children) {
+      for (std::string const& dir : child.second->WatchedDirectories()) {
+        result.push_back(dir);
       }
     }
     return result;
@@ -184,8 +184,9 @@ public:
   std::vector<std::string> WatchedDirectories() const override
   {
     std::vector<std::string> result = { Path() };
-    for (const auto& j : cmVirtualDirectoryWatcher::WatchedDirectories()) {
-      result.push_back(j);
+    for (std::string const& dir :
+         cmVirtualDirectoryWatcher::WatchedDirectories()) {
+      result.push_back(dir);
     }
     return result;
   }
@@ -267,7 +268,7 @@ public:
     static_cast<void>(ps);
 
     const std::string path = this->Path();
-    for (const auto& cb : this->CbList) {
+    for (cmFileMonitor::Callback const& cb : this->CbList) {
       cb(path, events, status);
     }
   }
@@ -311,7 +312,7 @@ cmFileMonitor::~cmFileMonitor()
 void cmFileMonitor::MonitorPaths(const std::vector<std::string>& paths,
                                  Callback const& cb)
 {
-  for (const auto& p : paths) {
+  for (std::string const& p : paths) {
     std::vector<std::string> pathSegments;
     cmsys::SystemTools::SplitPath(p, pathSegments, true);
 

+ 4 - 8
Source/cmFindBase.cxx

@@ -280,10 +280,8 @@ void cmFindBase::FillUserHintsPath()
 {
   cmSearchPath& paths = this->LabeledPaths[PathLabel::Hints];
 
-  for (std::vector<std::string>::const_iterator p =
-         this->UserHintsArgs.begin();
-       p != this->UserHintsArgs.end(); ++p) {
-    paths.AddUserPath(*p);
+  for (std::string const& p : this->UserHintsArgs) {
+    paths.AddUserPath(p);
   }
   paths.AddSuffixes(this->SearchPathSuffixes);
 }
@@ -292,10 +290,8 @@ void cmFindBase::FillUserGuessPath()
 {
   cmSearchPath& paths = this->LabeledPaths[PathLabel::Guess];
 
-  for (std::vector<std::string>::const_iterator p =
-         this->UserGuessArgs.begin();
-       p != this->UserGuessArgs.end(); ++p) {
-    paths.AddUserPath(*p);
+  for (std::string const& p : this->UserGuessArgs) {
+    paths.AddUserPath(p);
   }
   paths.AddSuffixes(this->SearchPathSuffixes);
 }

+ 16 - 22
Source/cmFindCommon.cxx

@@ -155,10 +155,9 @@ void cmFindCommon::SelectDefaultMacMode()
 void cmFindCommon::RerootPaths(std::vector<std::string>& paths)
 {
 #if 0
-  for(std::vector<std::string>::const_iterator i = paths.begin();
-      i != paths.end(); ++i)
+  for(std::string const& p : paths)
     {
-    fprintf(stderr, "[%s]\n", i->c_str());
+    fprintf(stderr, "[%s]\n", p.c_str());
     }
 #endif
   // Short-circuit if there is nothing to do.
@@ -194,9 +193,8 @@ void cmFindCommon::RerootPaths(std::vector<std::string>& paths)
   if (sysroot) {
     roots.push_back(sysroot);
   }
-  for (std::vector<std::string>::iterator ri = roots.begin();
-       ri != roots.end(); ++ri) {
-    cmSystemTools::ConvertToUnixSlashes(*ri);
+  for (std::string& r : roots) {
+    cmSystemTools::ConvertToUnixSlashes(r);
   }
 
   const char* stagePrefix =
@@ -206,24 +204,22 @@ void cmFindCommon::RerootPaths(std::vector<std::string>& paths)
   std::vector<std::string> unrootedPaths = paths;
   paths.clear();
 
-  for (std::vector<std::string>::const_iterator ri = roots.begin();
-       ri != roots.end(); ++ri) {
-    for (std::vector<std::string>::const_iterator ui = unrootedPaths.begin();
-         ui != unrootedPaths.end(); ++ui) {
+  for (std::string const& r : roots) {
+    for (std::string const& up : unrootedPaths) {
       // Place the unrooted path under the current root if it is not
       // already inside.  Skip the unrooted path if it is relative to
       // a user home directory or is empty.
       std::string rootedDir;
-      if (cmSystemTools::IsSubDirectory(*ui, *ri) ||
-          (stagePrefix && cmSystemTools::IsSubDirectory(*ui, stagePrefix))) {
-        rootedDir = *ui;
-      } else if (!ui->empty() && (*ui)[0] != '~') {
+      if (cmSystemTools::IsSubDirectory(up, r) ||
+          (stagePrefix && cmSystemTools::IsSubDirectory(up, stagePrefix))) {
+        rootedDir = up;
+      } else if (!up.empty() && up[0] != '~') {
         // Start with the new root.
-        rootedDir = *ri;
+        rootedDir = r;
         rootedDir += "/";
 
         // Append the original path with its old root removed.
-        rootedDir += cmSystemTools::SplitPathRootComponent(*ui);
+        rootedDir += cmSystemTools::SplitPathRootComponent(up);
       }
 
       // Store the new path.
@@ -255,9 +251,8 @@ void cmFindCommon::GetIgnoredPaths(std::vector<std::string>& ignore)
     cmSystemTools::ExpandListArgument(ignorePath, ignore);
   }
 
-  for (std::vector<std::string>::iterator i = ignore.begin();
-       i != ignore.end(); ++i) {
-    cmSystemTools::ConvertToUnixSlashes(*i);
+  for (std::string& i : ignore) {
+    cmSystemTools::ConvertToUnixSlashes(i);
   }
 }
 
@@ -337,9 +332,8 @@ void cmFindCommon::ComputeFinalPaths()
   // Combine the seperate path types, filtering out ignores
   this->SearchPaths.clear();
   std::vector<PathLabel>& allLabels = this->PathGroupLabelMap[PathGroup::All];
-  for (std::vector<PathLabel>::const_iterator l = allLabels.begin();
-       l != allLabels.end(); ++l) {
-    this->LabeledPaths[*l].ExtractWithout(ignored, this->SearchPaths);
+  for (PathLabel const& l : allLabels) {
+    this->LabeledPaths[l].ExtractWithout(ignored, this->SearchPaths);
   }
 
   // Expand list of paths inside all search roots.

+ 25 - 43
Source/cmFindLibraryCommand.cxx

@@ -87,9 +87,8 @@ void cmFindLibraryCommand::AddArchitecturePaths(const char* suffix)
 {
   std::vector<std::string> original;
   original.swap(this->SearchPaths);
-  for (std::vector<std::string>::const_iterator i = original.begin();
-       i != original.end(); ++i) {
-    this->AddArchitecturePath(*i, 0, suffix);
+  for (std::string const& o : original) {
+    this->AddArchitecturePath(o, 0, suffix);
   }
 }
 
@@ -254,8 +253,7 @@ cmFindLibraryHelper::cmFindLibraryHelper(cmMakefile* mf)
 void cmFindLibraryHelper::RegexFromLiteral(std::string& out,
                                            std::string const& in)
 {
-  for (std::string::const_iterator ci = in.begin(); ci != in.end(); ++ci) {
-    char ch = *ci;
+  for (char ch : in) {
     if (ch == '[' || ch == ']' || ch == '(' || ch == ')' || ch == '\\' ||
         ch == '.' || ch == '*' || ch == '+' || ch == '?' || ch == '-' ||
         ch == '^' || ch == '$') {
@@ -276,23 +274,20 @@ void cmFindLibraryHelper::RegexFromList(std::string& out,
   // else and the result can be checked after matching.
   out += "(";
   const char* sep = "";
-  for (std::vector<std::string>::const_iterator si = in.begin();
-       si != in.end(); ++si) {
+  for (std::string const& s : in) {
     // Separate from previous item.
     out += sep;
     sep = "|";
 
     // Append this item.
-    this->RegexFromLiteral(out, *si);
+    this->RegexFromLiteral(out, s);
   }
   out += ")";
 }
 
 bool cmFindLibraryHelper::HasValidSuffix(std::string const& name)
 {
-  for (std::vector<std::string>::const_iterator si = this->Suffixes.begin();
-       si != this->Suffixes.end(); ++si) {
-    std::string suffix = *si;
+  for (std::string suffix : this->Suffixes) {
     if (name.length() <= suffix.length()) {
       continue;
     }
@@ -339,9 +334,8 @@ void cmFindLibraryHelper::SetName(std::string const& name)
 
 bool cmFindLibraryHelper::CheckDirectory(std::string const& path)
 {
-  for (std::vector<Name>::iterator i = this->Names.begin();
-       i != this->Names.end(); ++i) {
-    if (this->CheckDirectoryForName(path, *i)) {
+  for (Name& i : this->Names) {
+    if (this->CheckDirectoryForName(path, i)) {
       return true;
     }
   }
@@ -376,9 +370,7 @@ bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path,
   std::string dir = path;
   cmSystemTools::ConvertToUnixSlashes(dir);
   std::set<std::string> const& files = this->GG->GetDirectoryContent(dir);
-  for (std::set<std::string>::const_iterator fi = files.begin();
-       fi != files.end(); ++fi) {
-    std::string const& origName = *fi;
+  for (std::string const& origName : files) {
 #if defined(_WIN32) || defined(__APPLE__)
     std::string testName = cmSystemTools::LowerCase(origName);
 #else
@@ -430,14 +422,12 @@ std::string cmFindLibraryCommand::FindNormalLibraryNamesPerDir()
 {
   // Search for all names in each directory.
   cmFindLibraryHelper helper(this->Makefile);
-  for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-       ni != this->Names.end(); ++ni) {
-    helper.AddName(*ni);
+  for (std::string const& n : this->Names) {
+    helper.AddName(n);
   }
   // Search every directory.
-  for (std::vector<std::string>::const_iterator p = this->SearchPaths.begin();
-       p != this->SearchPaths.end(); ++p) {
-    if (helper.CheckDirectory(*p)) {
+  for (std::string const& sp : this->SearchPaths) {
+    if (helper.CheckDirectory(sp)) {
       return helper.BestPath;
     }
   }
@@ -449,16 +439,13 @@ std::string cmFindLibraryCommand::FindNormalLibraryDirsPerName()
 {
   // Search the entire path for each name.
   cmFindLibraryHelper helper(this->Makefile);
-  for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-       ni != this->Names.end(); ++ni) {
+  for (std::string const& n : this->Names) {
     // Switch to searching for this name.
-    helper.SetName(*ni);
+    helper.SetName(n);
 
     // Search every directory.
-    for (std::vector<std::string>::const_iterator p =
-           this->SearchPaths.begin();
-         p != this->SearchPaths.end(); ++p) {
-      if (helper.CheckDirectory(*p)) {
+    for (std::string const& sp : this->SearchPaths) {
+      if (helper.CheckDirectory(sp)) {
         return helper.BestPath;
       }
     }
@@ -479,12 +466,10 @@ std::string cmFindLibraryCommand::FindFrameworkLibraryNamesPerDir()
 {
   std::string fwPath;
   // Search for all names in each search path.
-  for (std::vector<std::string>::const_iterator di = this->SearchPaths.begin();
-       di != this->SearchPaths.end(); ++di) {
-    for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-         ni != this->Names.end(); ++ni) {
-      fwPath = *di;
-      fwPath += *ni;
+  for (std::string const& d : this->SearchPaths) {
+    for (std::string const& n : this->Names) {
+      fwPath = d;
+      fwPath += n;
       fwPath += ".framework";
       if (cmSystemTools::FileIsDirectory(fwPath)) {
         return cmSystemTools::CollapseFullPath(fwPath);
@@ -500,13 +485,10 @@ std::string cmFindLibraryCommand::FindFrameworkLibraryDirsPerName()
 {
   std::string fwPath;
   // Search for each name in all search paths.
-  for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-       ni != this->Names.end(); ++ni) {
-    for (std::vector<std::string>::const_iterator di =
-           this->SearchPaths.begin();
-         di != this->SearchPaths.end(); ++di) {
-      fwPath = *di;
-      fwPath += *ni;
+  for (std::string const& n : this->Names) {
+    for (std::string const& d : this->SearchPaths) {
+      fwPath = d;
+      fwPath += n;
       fwPath += ".framework";
       if (cmSystemTools::FileIsDirectory(fwPath)) {
         return cmSystemTools::CollapseFullPath(fwPath);

+ 47 - 74
Source/cmFindPackageCommand.cxx

@@ -367,14 +367,12 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args,
   if (!this->UseFindModules && !this->UseConfigFiles) {
     std::ostringstream e;
     e << "given options exclusive to Module mode:\n";
-    for (std::set<unsigned int>::const_iterator si = moduleArgs.begin();
-         si != moduleArgs.end(); ++si) {
-      e << "  " << args[*si] << "\n";
+    for (unsigned int si : moduleArgs) {
+      e << "  " << args[si] << "\n";
     }
     e << "and options exclusive to Config mode:\n";
-    for (std::set<unsigned int>::const_iterator si = configArgs.begin();
-         si != configArgs.end(); ++si) {
-      e << "  " << args[*si] << "\n";
+    for (unsigned int si : configArgs) {
+      e << "  " << args[si] << "\n";
     }
     e << "The options are incompatible.";
     this->SetError(e.str());
@@ -518,13 +516,12 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args,
 
   // Add the default configs.
   if (this->Configs.empty()) {
-    for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-         ni != this->Names.end(); ++ni) {
-      std::string config = *ni;
+    for (std::string const& n : this->Names) {
+      std::string config = n;
       config += "Config.cmake";
       this->Configs.push_back(config);
 
-      config = cmSystemTools::LowerCase(*ni);
+      config = cmSystemTools::LowerCase(n);
       config += "-config.cmake";
       this->Configs.push_back(config);
     }
@@ -611,14 +608,12 @@ void cmFindPackageCommand::AddFindDefinition(const std::string& var,
 
 void cmFindPackageCommand::RestoreFindDefinitions()
 {
-  for (std::map<std::string, OriginalDef>::iterator i =
-         this->OriginalDefs.begin();
-       i != this->OriginalDefs.end(); ++i) {
-    OriginalDef const& od = i->second;
+  for (auto const& i : this->OriginalDefs) {
+    OriginalDef const& od = i.second;
     if (od.exists) {
-      this->Makefile->AddDefinition(i->first, od.value.c_str());
+      this->Makefile->AddDefinition(i.first, od.value.c_str());
     } else {
-      this->Makefile->RemoveDefinition(i->first);
+      this->Makefile->RemoveDefinition(i.first);
     }
   }
 }
@@ -874,13 +869,11 @@ bool cmFindPackageCommand::HandlePackageMode()
   std::string consideredVersions;
 
   const char* sep = "";
-  for (std::vector<ConfigFileInfo>::const_iterator i =
-         this->ConsideredConfigs.begin();
-       i != this->ConsideredConfigs.end(); ++i) {
+  for (ConfigFileInfo const& i : this->ConsideredConfigs) {
     consideredConfigFiles += sep;
     consideredVersions += sep;
-    consideredConfigFiles += i->filename;
-    consideredVersions += i->version;
+    consideredConfigFiles += i.filename;
+    consideredVersions += i.version;
     sep = ";";
   }
 
@@ -946,9 +939,8 @@ bool cmFindPackageCommand::FindConfig()
 bool cmFindPackageCommand::FindPrefixedConfig()
 {
   std::vector<std::string> const& prefixes = this->SearchPaths;
-  for (std::vector<std::string>::const_iterator pi = prefixes.begin();
-       pi != prefixes.end(); ++pi) {
-    if (this->SearchPrefix(*pi)) {
+  for (std::string const& p : prefixes) {
+    if (this->SearchPrefix(p)) {
       return true;
     }
   }
@@ -958,9 +950,8 @@ bool cmFindPackageCommand::FindPrefixedConfig()
 bool cmFindPackageCommand::FindFrameworkConfig()
 {
   std::vector<std::string> const& prefixes = this->SearchPaths;
-  for (std::vector<std::string>::const_iterator i = prefixes.begin();
-       i != prefixes.end(); ++i) {
-    if (this->SearchFrameworkPrefix(*i)) {
+  for (std::string const& p : prefixes) {
+    if (this->SearchFrameworkPrefix(p)) {
       return true;
     }
   }
@@ -970,9 +961,8 @@ bool cmFindPackageCommand::FindFrameworkConfig()
 bool cmFindPackageCommand::FindAppBundleConfig()
 {
   std::vector<std::string> const& prefixes = this->SearchPaths;
-  for (std::vector<std::string>::const_iterator i = prefixes.begin();
-       i != prefixes.end(); ++i) {
-    if (this->SearchAppBundlePrefix(*i)) {
+  for (std::string const& p : prefixes) {
+    if (this->SearchAppBundlePrefix(p)) {
       return true;
     }
   }
@@ -1171,14 +1161,12 @@ void cmFindPackageCommand::FillPrefixesSystemEnvironment()
   // working directory.
   std::vector<std::string> tmp;
   cmSystemTools::GetPath(tmp);
-  for (std::vector<std::string>::iterator i = tmp.begin(); i != tmp.end();
-       ++i) {
+  for (std::string const& i : tmp) {
     // If the path is a PREFIX/bin case then add its parent instead.
-    if ((cmHasLiteralSuffix(*i, "/bin")) ||
-        (cmHasLiteralSuffix(*i, "/sbin"))) {
-      paths.AddPath(cmSystemTools::GetFilenamePath(*i));
+    if ((cmHasLiteralSuffix(i, "/bin")) || (cmHasLiteralSuffix(i, "/sbin"))) {
+      paths.AddPath(cmSystemTools::GetFilenamePath(i));
     } else {
-      paths.AddPath(*i);
+      paths.AddPath(i);
     }
   }
 }
@@ -1296,9 +1284,8 @@ void cmFindPackageCommand::LoadPackageRegistryWin(bool user, unsigned int view,
   if (user && !bad.empty() &&
       RegOpenKeyExW(HKEY_CURRENT_USER, key.c_str(), 0, KEY_SET_VALUE | view,
                     &hKey) == ERROR_SUCCESS) {
-    for (std::set<std::wstring>::const_iterator vi = bad.begin();
-         vi != bad.end(); ++vi) {
-      RegDeleteValueW(hKey, vi->c_str());
+    for (std::wstring const& v : bad) {
+      RegDeleteValueW(hKey, v.c_str());
     }
     RegCloseKey(hKey);
   }
@@ -1395,10 +1382,8 @@ void cmFindPackageCommand::FillPrefixesUserGuess()
 {
   cmSearchPath& paths = this->LabeledPaths[PathLabel::Guess];
 
-  for (std::vector<std::string>::const_iterator p =
-         this->UserGuessArgs.begin();
-       p != this->UserGuessArgs.end(); ++p) {
-    paths.AddUserPath(*p);
+  for (std::string const& p : this->UserGuessArgs) {
+    paths.AddUserPath(p);
   }
 }
 
@@ -1406,10 +1391,8 @@ void cmFindPackageCommand::FillPrefixesUserHints()
 {
   cmSearchPath& paths = this->LabeledPaths[PathLabel::Hints];
 
-  for (std::vector<std::string>::const_iterator p =
-         this->UserHintsArgs.begin();
-       p != this->UserHintsArgs.end(); ++p) {
-    paths.AddUserPath(*p);
+  for (std::string const& p : this->UserHintsArgs) {
+    paths.AddUserPath(p);
   }
 }
 
@@ -1418,12 +1401,10 @@ bool cmFindPackageCommand::SearchDirectory(std::string const& dir)
   assert(!dir.empty() && dir[dir.size() - 1] == '/');
 
   // Check each path suffix on this directory.
-  for (std::vector<std::string>::const_iterator si =
-         this->SearchPathSuffixes.begin();
-       si != this->SearchPathSuffixes.end(); ++si) {
+  for (std::string const& s : this->SearchPathSuffixes) {
     std::string d = dir;
-    if (!si->empty()) {
-      d += *si;
+    if (!s.empty()) {
+      d += s;
       d += "/";
     }
     if (this->CheckDirectory(d)) {
@@ -1454,11 +1435,10 @@ bool cmFindPackageCommand::FindConfigFile(std::string const& dir,
     return false;
   }
 
-  for (std::vector<std::string>::const_iterator ci = this->Configs.begin();
-       ci != this->Configs.end(); ++ci) {
+  for (std::string const& c : this->Configs) {
     file = dir;
     file += "/";
-    file += *ci;
+    file += c;
     if (this->DebugMode) {
       fprintf(stderr, "Checking file [%s]\n", file.c_str());
     }
@@ -1761,9 +1741,8 @@ private:
   std::vector<std::string> const& Vector;
   bool Search(std::string const& parent, cmFileList& lister) CM_OVERRIDE
   {
-    for (std::vector<std::string>::const_iterator i = this->Vector.begin();
-         i != this->Vector.end(); ++i) {
-      if (this->Consider(parent + *i, lister)) {
+    for (std::string const& i : this->Vector) {
+      if (this->Consider(parent + i, lister)) {
         return true;
       }
     }
@@ -1820,9 +1799,8 @@ private:
       if (strcmp(fname, ".") == 0 || strcmp(fname, "..") == 0) {
         continue;
       }
-      for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-           ni != this->Names.end(); ++ni) {
-        if (cmsysString_strncasecmp(fname, ni->c_str(), ni->length()) == 0) {
+      for (std::string const& n : this->Names) {
+        if (cmsysString_strncasecmp(fname, n.c_str(), n.length()) == 0) {
           matches.push_back(fname);
         }
       }
@@ -1835,9 +1813,8 @@ private:
                                  SortDirection);
     }
 
-    for (std::vector<std::string>::const_iterator i = matches.begin();
-         i != matches.end(); ++i) {
-      if (this->Consider(parent + *i, lister)) {
+    for (std::string const& i : matches) {
+      if (this->Consider(parent + i, lister)) {
         return true;
       }
     }
@@ -1882,9 +1859,7 @@ private:
       if (strcmp(fname, ".") == 0 || strcmp(fname, "..") == 0) {
         continue;
       }
-      for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-           ni != this->Names.end(); ++ni) {
-        std::string name = *ni;
+      for (std::string name : this->Names) {
         name += this->Extension;
         if (cmsysString_strcasecmp(fname, name.c_str()) == 0) {
           matches.push_back(fname);
@@ -1892,9 +1867,8 @@ private:
       }
     }
 
-    for (std::vector<std::string>::const_iterator i = matches.begin();
-         i != matches.end(); ++i) {
-      if (this->Consider(parent + *i, lister)) {
+    for (std::string const& i : matches) {
+      if (this->Consider(parent + i, lister)) {
         return true;
       }
     }
@@ -1980,10 +1954,9 @@ private:
     std::vector<std::string> const& files = g.GetFiles();
 
     // Look for directories among the matches.
-    for (std::vector<std::string>::const_iterator fi = files.begin();
-         fi != files.end(); ++fi) {
-      if (cmSystemTools::FileIsDirectory(*fi)) {
-        if (this->Consider(*fi, lister)) {
+    for (std::string const& f : files) {
+      if (cmSystemTools::FileIsDirectory(f)) {
+        if (this->Consider(f, lister)) {
           return true;
         }
       }

+ 8 - 14
Source/cmFindPathCommand.cxx

@@ -124,18 +124,15 @@ std::string cmFindPathCommand::FindHeaderInFramework(std::string const& file,
 std::string cmFindPathCommand::FindNormalHeader()
 {
   std::string tryPath;
-  for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-       ni != this->Names.end(); ++ni) {
-    for (std::vector<std::string>::const_iterator p =
-           this->SearchPaths.begin();
-         p != this->SearchPaths.end(); ++p) {
-      tryPath = *p;
-      tryPath += *ni;
+  for (std::string const& n : this->Names) {
+    for (std::string const& sp : this->SearchPaths) {
+      tryPath = sp;
+      tryPath += n;
       if (cmSystemTools::FileExists(tryPath.c_str())) {
         if (this->IncludeFileInPath) {
           return tryPath;
         }
-        return *p;
+        return sp;
       }
     }
   }
@@ -144,12 +141,9 @@ std::string cmFindPathCommand::FindNormalHeader()
 
 std::string cmFindPathCommand::FindFrameworkHeader()
 {
-  for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-       ni != this->Names.end(); ++ni) {
-    for (std::vector<std::string>::const_iterator p =
-           this->SearchPaths.begin();
-         p != this->SearchPaths.end(); ++p) {
-      std::string fwPath = this->FindHeaderInFramework(*ni, *p);
+  for (std::string const& n : this->Names) {
+    for (std::string const& sp : this->SearchPaths) {
+      std::string fwPath = this->FindHeaderInFramework(n, sp);
       if (!fwPath.empty()) {
         return fwPath;
       }

+ 15 - 23
Source/cmFindProgramCommand.cxx

@@ -45,9 +45,8 @@ struct cmFindProgramHelper
   }
   bool CheckDirectory(std::string const& path)
   {
-    for (std::vector<std::string>::iterator i = this->Names.begin();
-         i != this->Names.end(); ++i) {
-      if (this->CheckDirectoryForName(path, *i)) {
+    for (std::string const& n : this->Names) {
+      if (this->CheckDirectoryForName(path, n)) {
         return true;
       }
     }
@@ -55,14 +54,13 @@ struct cmFindProgramHelper
   }
   bool CheckDirectoryForName(std::string const& path, std::string const& name)
   {
-    for (std::vector<std::string>::iterator ext = this->Extensions.begin();
-         ext != this->Extensions.end(); ++ext) {
+    for (std::string const& ext : this->Extensions) {
       this->TestPath = path;
       this->TestPath += name;
-      if (!ext->empty() && cmSystemTools::StringEndsWith(name, ext->c_str())) {
+      if (!ext.empty() && cmSystemTools::StringEndsWith(name, ext.c_str())) {
         continue;
       }
-      this->TestPath += *ext;
+      this->TestPath += ext;
       if (cmSystemTools::FileExists(this->TestPath, true)) {
         this->BestPath = cmSystemTools::CollapseFullPath(this->TestPath);
         return true;
@@ -143,9 +141,8 @@ std::string cmFindProgramCommand::FindNormalProgramNamesPerDir()
 {
   // Search for all names in each directory.
   cmFindProgramHelper helper;
-  for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-       ni != this->Names.end(); ++ni) {
-    helper.AddName(*ni);
+  for (std::string const& n : this->Names) {
+    helper.AddName(n);
   }
 
   // Check for the names themselves (e.g. absolute paths).
@@ -154,9 +151,8 @@ std::string cmFindProgramCommand::FindNormalProgramNamesPerDir()
   }
 
   // Search every directory.
-  for (std::vector<std::string>::const_iterator p = this->SearchPaths.begin();
-       p != this->SearchPaths.end(); ++p) {
-    if (helper.CheckDirectory(*p)) {
+  for (std::string const& sp : this->SearchPaths) {
+    if (helper.CheckDirectory(sp)) {
       return helper.BestPath;
     }
   }
@@ -168,10 +164,9 @@ std::string cmFindProgramCommand::FindNormalProgramDirsPerName()
 {
   // Search the entire path for each name.
   cmFindProgramHelper helper;
-  for (std::vector<std::string>::const_iterator ni = this->Names.begin();
-       ni != this->Names.end(); ++ni) {
+  for (std::string const& n : this->Names) {
     // Switch to searching for this name.
-    helper.SetName(*ni);
+    helper.SetName(n);
 
     // Check for the name by itself (e.g. an absolute path).
     if (helper.CheckDirectory(std::string())) {
@@ -179,10 +174,8 @@ std::string cmFindProgramCommand::FindNormalProgramDirsPerName()
     }
 
     // Search every directory.
-    for (std::vector<std::string>::const_iterator p =
-           this->SearchPaths.begin();
-         p != this->SearchPaths.end(); ++p) {
-      if (helper.CheckDirectory(*p)) {
+    for (std::string const& sp : this->SearchPaths) {
+      if (helper.CheckDirectory(sp)) {
         return helper.BestPath;
       }
     }
@@ -193,10 +186,9 @@ std::string cmFindProgramCommand::FindNormalProgramDirsPerName()
 
 std::string cmFindProgramCommand::FindAppBundle()
 {
-  for (std::vector<std::string>::const_iterator name = this->Names.begin();
-       name != this->Names.end(); ++name) {
+  for (std::string const& name : this->Names) {
 
-    std::string appName = *name + std::string(".app");
+    std::string appName = name + std::string(".app");
     std::string appPath =
       cmSystemTools::FindDirectory(appName, this->SearchPaths, true);
 

+ 2 - 2
Source/cmForEachCommand.cxx

@@ -54,9 +54,9 @@ bool cmForEachFunctionBlocker::IsFunctionBlocked(const cmListFileFunction& lff,
         mf.AddDefinition(this->Args[0], j->c_str());
         // Invoke all the functions that were collected in the block.
         cmExecutionStatus status;
-        for (unsigned int c = 0; c < this->Functions.size(); ++c) {
+        for (cmListFileFunction const& func : this->Functions) {
           status.Clear();
-          mf.ExecuteCommand(this->Functions[c], status);
+          mf.ExecuteCommand(func, status);
           if (status.GetReturnInvoked()) {
             inStatus.SetReturnInvoked();
             // restore the variable to its prior value

+ 2 - 3
Source/cmFortranParserImpl.cxx

@@ -30,9 +30,8 @@ bool cmFortranParser_s::FindIncludeFile(const char* dir,
   }
 
   // Search the include path for the file.
-  for (std::vector<std::string>::const_iterator i = this->IncludePath.begin();
-       i != this->IncludePath.end(); ++i) {
-    fullName = *i;
+  for (std::string const& i : this->IncludePath) {
+    fullName = i;
     fullName += "/";
     fullName += includeName;
     if (cmSystemTools::FileExists(fullName.c_str(), true)) {

+ 2 - 2
Source/cmFunctionCommand.cxx

@@ -104,9 +104,9 @@ bool cmFunctionHelperCommand::InvokeInitialPass(
 
   // Invoke all the functions that were collected in the block.
   // for each function
-  for (unsigned int c = 0; c < this->Functions.size(); ++c) {
+  for (cmListFileFunction const& func : this->Functions) {
     cmExecutionStatus status;
-    if (!this->Makefile->ExecuteCommand(this->Functions[c], status) ||
+    if (!this->Makefile->ExecuteCommand(func, status) ||
         status.GetNestedError()) {
       // The error message should have already included the call stack
       // so we do not need to report an error here.

+ 4 - 5
Source/cmGeneratorExpression.cxx

@@ -199,15 +199,14 @@ static void prefixItems(const std::string& content, std::string& result,
   std::vector<std::string> entries;
   cmGeneratorExpression::Split(content, entries);
   const char* sep = "";
-  for (std::vector<std::string>::const_iterator ei = entries.begin();
-       ei != entries.end(); ++ei) {
+  for (std::string const& e : entries) {
     result += sep;
     sep = ";";
-    if (!cmSystemTools::FileIsFullPath(ei->c_str()) &&
-        cmGeneratorExpression::Find(*ei) != 0) {
+    if (!cmSystemTools::FileIsFullPath(e.c_str()) &&
+        cmGeneratorExpression::Find(e) != 0) {
       result += prefix;
     }
-    result += *ei;
+    result += e;
   }
 }
 

+ 5 - 8
Source/cmGeneratorExpressionEvaluationFile.cxx

@@ -99,10 +99,9 @@ void cmGeneratorExpressionEvaluationFile::CreateOutputFile(
   cmGlobalGenerator* gg = lg->GetGlobalGenerator();
   gg->GetEnabledLanguages(enabledLanguages);
 
-  for (std::vector<std::string>::const_iterator le = enabledLanguages.begin();
-       le != enabledLanguages.end(); ++le) {
+  for (std::string const& le : enabledLanguages) {
     std::string name = this->OutputFileExpr->Evaluate(
-      lg, config, false, nullptr, nullptr, nullptr, *le);
+      lg, config, false, nullptr, nullptr, nullptr, le);
     cmSourceFile* sf = lg->GetMakefile()->GetOrCreateSource(name);
     sf->SetProperty("GENERATED", "1");
 
@@ -161,11 +160,9 @@ void cmGeneratorExpressionEvaluationFile::Generate(cmLocalGenerator* lg)
   cmGlobalGenerator* gg = lg->GetGlobalGenerator();
   gg->GetEnabledLanguages(enabledLanguages);
 
-  for (std::vector<std::string>::const_iterator le = enabledLanguages.begin();
-       le != enabledLanguages.end(); ++le) {
-    for (std::vector<std::string>::const_iterator li = allConfigs.begin();
-         li != allConfigs.end(); ++li) {
-      this->Generate(lg, *li, *le, inputExpression.get(), outputFiles, perm);
+  for (std::string const& le : enabledLanguages) {
+    for (std::string const& li : allConfigs) {
+      this->Generate(lg, li, le, inputExpression.get(), outputFiles, perm);
       if (cmSystemTools::GetFatalErrorOccured()) {
         return;
       }

+ 18 - 24
Source/cmGeneratorExpressionNode.cxx

@@ -877,13 +877,12 @@ std::string getLinkedTargetsContent(
   std::string linkedTargetsContent;
   std::string sep;
   std::string depString;
-  for (typename std::vector<T>::const_iterator it = libraries.begin();
-       it != libraries.end(); ++it) {
+  for (T const& l : libraries) {
     // Broken code can have a target in its own link interface.
     // Don't follow such link interface entries so as not to create a
     // self-referencing loop.
-    if (it->Target && it->Target != target) {
-      depString += sep + "$<TARGET_PROPERTY:" + it->Target->GetName() + "," +
+    if (l.Target && l.Target != target) {
+      depString += sep + "$<TARGET_PROPERTY:" + l.Target->GetName() + "," +
         interfacePropertyName + ">";
       sep = ";";
     }
@@ -1281,17 +1280,15 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode
         context->HadContextSensitiveCondition = true;
       }
 
-      for (std::vector<std::string>::iterator oi = objects.begin();
-           oi != objects.end(); ++oi) {
-        *oi = obj_dir + *oi;
+      for (std::string& o : objects) {
+        o = obj_dir + o;
       }
     }
 
     // Create the cmSourceFile instances in the referencing directory.
     cmMakefile* mf = context->LG->GetMakefile();
-    for (std::vector<std::string>::iterator oi = objects.begin();
-         oi != objects.end(); ++oi) {
-      mf->AddTargetObject(tgtName, *oi);
+    for (std::string& o : objects) {
+      mf->AddTargetObject(tgtName, o);
     }
 
     return cmJoin(objects, ";");
@@ -1325,16 +1322,15 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode
 
     LangMap testedFeatures;
 
-    for (std::vector<std::string>::const_iterator it = parameters.begin();
-         it != parameters.end(); ++it) {
+    for (std::string const& p : parameters) {
       std::string error;
       std::string lang;
       if (!context->LG->GetMakefile()->CompileFeatureKnown(
-            context->HeadTarget->Target, *it, lang, &error)) {
+            context->HeadTarget->Target, p, lang, &error)) {
         reportError(context, content->GetOriginalExpression(), error);
         return std::string();
       }
-      testedFeatures[lang].push_back(*it);
+      testedFeatures[lang].push_back(p);
 
       if (availableFeatures.find(lang) == availableFeatures.end()) {
         const char* featuresKnown =
@@ -1350,15 +1346,13 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode
 
     bool evalLL = dagChecker && dagChecker->EvaluatingLinkLibraries();
 
-    for (LangMap::const_iterator lit = testedFeatures.begin();
-         lit != testedFeatures.end(); ++lit) {
+    for (auto const& lit : testedFeatures) {
       std::vector<std::string> const& langAvailable =
-        availableFeatures[lit->first];
+        availableFeatures[lit.first];
       const char* standardDefault = context->LG->GetMakefile()->GetDefinition(
-        "CMAKE_" + lit->first + "_STANDARD_DEFAULT");
-      for (std::vector<std::string>::const_iterator it = lit->second.begin();
-           it != lit->second.end(); ++it) {
-        if (std::find(langAvailable.begin(), langAvailable.end(), *it) ==
+        "CMAKE_" + lit.first + "_STANDARD_DEFAULT");
+      for (std::string const& it : lit.second) {
+        if (std::find(langAvailable.begin(), langAvailable.end(), it) ==
             langAvailable.end()) {
           return "0";
         }
@@ -1368,14 +1362,14 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode
           continue;
         }
         if (!context->LG->GetMakefile()->HaveStandardAvailable(
-              target->Target, lit->first, *it)) {
+              target->Target, lit.first, it)) {
           if (evalLL) {
-            const char* l = target->GetProperty(lit->first + "_STANDARD");
+            const char* l = target->GetProperty(lit.first + "_STANDARD");
             if (!l) {
               l = standardDefault;
             }
             assert(l);
-            context->MaxLanguageStandard[target][lit->first] = l;
+            context->MaxLanguageStandard[target][lit.first] = l;
           } else {
             return "0";
           }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 172 - 283
Source/cmGeneratorTarget.cxx


+ 131 - 188
Source/cmGlobalGenerator.cxx

@@ -244,10 +244,8 @@ bool cmGlobalGenerator::GenerateImportFile(const std::string& file)
     bool result = it->second->GenerateImportFile();
 
     if (!this->ConfigureDoneCMP0026AndCMP0024) {
-      for (std::vector<cmMakefile*>::const_iterator mit =
-             this->Makefiles.begin();
-           mit != this->Makefiles.end(); ++mit) {
-        (*mit)->RemoveExportBuildFileGeneratorCMP0024(it->second);
+      for (cmMakefile* m : this->Makefiles) {
+        m->RemoveExportBuildFileGeneratorCMP0024(it->second);
       }
     }
 
@@ -383,12 +381,11 @@ void cmGlobalGenerator::EnableLanguage(
   }
 
   std::set<std::string> cur_languages(languages.begin(), languages.end());
-  for (std::set<std::string>::iterator li = cur_languages.begin();
-       li != cur_languages.end(); ++li) {
-    if (!this->LanguagesInProgress.insert(*li).second) {
+  for (std::string const& li : cur_languages) {
+    if (!this->LanguagesInProgress.insert(li).second) {
       std::ostringstream e;
-      e << "Language '" << *li << "' is currently being enabled.  "
-                                  "Recursive call not allowed.";
+      e << "Language '" << li << "' is currently being enabled.  "
+                                 "Recursive call not allowed.";
       mf->IssueMessage(cmake::FATAL_ERROR, e.str());
       cmSystemTools::SetFatalErrorOccured();
       return;
@@ -397,12 +394,11 @@ void cmGlobalGenerator::EnableLanguage(
 
   if (this->TryCompileOuterMakefile) {
     // In a try-compile we can only enable languages provided by caller.
-    for (std::vector<std::string>::const_iterator li = languages.begin();
-         li != languages.end(); ++li) {
-      if (*li == "NONE") {
+    for (std::string const& li : languages) {
+      if (li == "NONE") {
         this->SetLanguageEnabled("NONE", mf);
       } else {
-        const char* lang = li->c_str();
+        const char* lang = li.c_str();
         if (this->LanguagesReady.find(lang) == this->LanguagesReady.end()) {
           std::ostringstream e;
           e << "The test project needs language " << lang
@@ -541,11 +537,10 @@ void cmGlobalGenerator::EnableLanguage(
   // load the CMakeDetermine(LANG)Compiler.cmake file to find
   // the compiler
 
-  for (std::vector<std::string>::const_iterator l = languages.begin();
-       l != languages.end(); ++l) {
-    const char* lang = l->c_str();
+  for (std::string const& l : languages) {
+    const char* lang = l.c_str();
     needSetLanguageEnabledMaps[lang] = false;
-    if (*l == "NONE") {
+    if (l == "NONE") {
       this->SetLanguageEnabled("NONE", mf);
       continue;
     }
@@ -647,10 +642,9 @@ void cmGlobalGenerator::EnableLanguage(
   }
   // loop over languages again loading CMake(LANG)Information.cmake
   //
-  for (std::vector<std::string>::const_iterator l = languages.begin();
-       l != languages.end(); ++l) {
-    const char* lang = l->c_str();
-    if (*l == "NONE") {
+  for (std::string const& l : languages) {
+    const char* lang = l.c_str();
+    if (l == "NONE") {
       this->SetLanguageEnabled("NONE", mf);
       continue;
     }
@@ -793,9 +787,8 @@ void cmGlobalGenerator::EnableLanguage(
     cmSystemTools::SetFatalErrorOccured();
   }
 
-  for (std::set<std::string>::iterator li = cur_languages.begin();
-       li != cur_languages.end(); ++li) {
-    this->LanguagesInProgress.erase(*li);
+  for (std::string const& lang : cur_languages) {
+    this->LanguagesInProgress.erase(lang);
   }
 }
 
@@ -1020,9 +1013,8 @@ void cmGlobalGenerator::SetLanguageEnabledMaps(const std::string& l,
   std::string ignoreExts = mf->GetSafeDefinition(ignoreExtensionsVar);
   std::vector<std::string> extensionList;
   cmSystemTools::ExpandListArgument(ignoreExts, extensionList);
-  for (std::vector<std::string>::iterator i = extensionList.begin();
-       i != extensionList.end(); ++i) {
-    this->IgnoreExtensions[*i] = true;
+  for (std::string const& i : extensionList) {
+    this->IgnoreExtensions[i] = true;
   }
 }
 
@@ -1034,9 +1026,8 @@ void cmGlobalGenerator::FillExtensionToLanguageMap(const std::string& l,
   std::string exts = mf->GetSafeDefinition(extensionsVar);
   std::vector<std::string> extensionList;
   cmSystemTools::ExpandListArgument(exts, extensionList);
-  for (std::vector<std::string>::iterator i = extensionList.begin();
-       i != extensionList.end(); ++i) {
-    this->ExtensionToLanguage[*i] = l;
+  for (std::string const& i : extensionList) {
+    this->ExtensionToLanguage[i] = l;
   }
 }
 
@@ -1082,9 +1073,8 @@ void cmGlobalGenerator::CreateLocalGenerators()
   cmDeleteAll(this->LocalGenerators);
   this->LocalGenerators.clear();
   this->LocalGenerators.reserve(this->Makefiles.size());
-  for (std::vector<cmMakefile*>::const_iterator it = this->Makefiles.begin();
-       it != this->Makefiles.end(); ++it) {
-    this->LocalGenerators.push_back(this->CreateLocalGenerator(*it));
+  for (cmMakefile* m : this->Makefiles) {
+    this->LocalGenerators.push_back(this->CreateLocalGenerator(m));
   }
 }
 
@@ -1118,13 +1108,11 @@ void cmGlobalGenerator::Configure()
   std::vector<GlobalTargetInfo> globalTargets;
   this->CreateDefaultGlobalTargets(globalTargets);
 
-  for (unsigned int i = 0; i < this->Makefiles.size(); ++i) {
-    cmMakefile* mf = this->Makefiles[i];
+  for (cmMakefile* mf : this->Makefiles) {
     cmTargets* targets = &(mf->GetTargets());
-    for (std::vector<GlobalTargetInfo>::iterator gti = globalTargets.begin();
-         gti != globalTargets.end(); ++gti) {
-      targets->insert(
-        cmTargets::value_type(gti->Name, this->CreateGlobalTarget(*gti, mf)));
+    for (GlobalTargetInfo const& globalTarget : globalTargets) {
+      targets->insert(cmTargets::value_type(
+        globalTarget.Name, this->CreateGlobalTarget(globalTarget, mf)));
     }
   }
 
@@ -1177,9 +1165,8 @@ void cmGlobalGenerator::CreateImportedGenerationObjects(
     std::find(this->Makefiles.begin(), this->Makefiles.end(), mf);
   cmLocalGenerator* lg =
     this->LocalGenerators[std::distance(this->Makefiles.begin(), mfit)];
-  for (std::vector<std::string>::const_iterator it = targets.begin();
-       it != targets.end(); ++it) {
-    cmGeneratorTarget* gt = lg->FindGeneratorTargetToUse(*it);
+  for (std::string const& t : targets) {
+    cmGeneratorTarget* gt = lg->FindGeneratorTargetToUse(t);
     if (gt) {
       exports.push_back(gt);
     }
@@ -1229,10 +1216,8 @@ void cmGlobalGenerator::ComputeBuildFileGenerators()
   for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) {
     std::vector<cmExportBuildFileGenerator*> gens =
       this->Makefiles[i]->GetExportBuildFileGenerators();
-    for (std::vector<cmExportBuildFileGenerator*>::const_iterator it =
-           gens.begin();
-         it != gens.end(); ++it) {
-      (*it)->Compute(this->LocalGenerators[i]);
+    for (cmExportBuildFileGenerator* g : gens) {
+      g->Compute(this->LocalGenerators[i]);
     }
   }
 }
@@ -1266,11 +1251,9 @@ bool cmGlobalGenerator::Compute()
   cmQtAutoGenDigestUPV autogenDigests = this->CreateQtAutoGeneratorsTargets();
 #endif
 
-  unsigned int i;
-
   // Add generator specific helper commands
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    this->LocalGenerators[i]->AddHelperCommands();
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    localGen->AddHelperCommands();
   }
 
   // Finalize the set of compile features for each target.
@@ -1279,25 +1262,23 @@ bool cmGlobalGenerator::Compute()
   // on the original cmTarget instance.  It accumulates features
   // across all configurations.  Some refactoring is needed to
   // compute a per-config resulta purely during generation.
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    if (!this->LocalGenerators[i]->ComputeTargetCompileFeatures()) {
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    if (!localGen->ComputeTargetCompileFeatures()) {
       return false;
     }
   }
 
 #ifdef CMAKE_BUILD_WITH_CMAKE
-  for (const cmQtAutoGenDigestUP& digest : autogenDigests) {
+  for (cmQtAutoGenDigestUP const& digest : autogenDigests) {
     cmQtAutoGeneratorInitializer::SetupAutoGenerateTarget(*digest);
   }
   autogenDigests.clear();
 #endif
 
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    cmMakefile* mf = this->LocalGenerators[i]->GetMakefile();
-    std::vector<cmInstallGenerator*>& gens = mf->GetInstallGenerators();
-    for (std::vector<cmInstallGenerator*>::const_iterator git = gens.begin();
-         git != gens.end(); ++git) {
-      (*git)->Compute(this->LocalGenerators[i]);
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    cmMakefile* mf = localGen->GetMakefile();
+    for (cmInstallGenerator* g : mf->GetInstallGenerators()) {
+      g->Compute(localGen);
     }
   }
 
@@ -1305,15 +1286,15 @@ bool cmGlobalGenerator::Compute()
 
   // Trace the dependencies, after that no custom commands should be added
   // because their dependencies might not be handled correctly
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    this->LocalGenerators[i]->TraceDependencies();
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    localGen->TraceDependencies();
   }
 
   this->ForceLinkerLanguages();
 
   // Compute the manifest of main targets generated.
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    this->LocalGenerators[i]->ComputeTargetManifest();
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    localGen->ComputeTargetManifest();
   }
 
   // Compute the inter-target dependencies.
@@ -1321,8 +1302,8 @@ bool cmGlobalGenerator::Compute()
     return false;
   }
 
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    this->LocalGenerators[i]->ComputeHomeRelativeOutputPath();
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    localGen->ComputeHomeRelativeOutputPath();
   }
 
   return true;
@@ -1356,10 +1337,8 @@ void cmGlobalGenerator::Generate()
       cmake::FATAL_ERROR, "Could not write CPack properties file.");
   }
 
-  for (std::map<std::string, cmExportBuildFileGenerator*>::iterator it =
-         this->BuildExportSets.begin();
-       it != this->BuildExportSets.end(); ++it) {
-    if (!it->second->GenerateImportFile()) {
+  for (auto& buildExpSet : this->BuildExportSets) {
+    if (!buildExpSet.second->GenerateImportFile()) {
       if (!cmSystemTools::GetErrorOccuredFlag()) {
         this->GetCMakeInstance()->IssueMessage(cmake::FATAL_ERROR,
                                                "Could not write export file.");
@@ -1381,10 +1360,8 @@ void cmGlobalGenerator::Generate()
     w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0042) << "\n";
     w << "MACOSX_RPATH is not specified for"
          " the following targets:\n";
-    for (std::set<std::string>::iterator iter =
-           this->CMP0042WarnTargets.begin();
-         iter != this->CMP0042WarnTargets.end(); ++iter) {
-      w << " " << *iter << "\n";
+    for (std::string const& t : this->CMP0042WarnTargets) {
+      w << " " << t << "\n";
     }
     this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, w.str());
   }
@@ -1399,10 +1376,8 @@ void cmGlobalGenerator::Generate()
       "settings:\n"
       ;
     /* clang-format on */
-    for (std::set<std::string>::iterator iter =
-           this->CMP0068WarnTargets.begin();
-         iter != this->CMP0068WarnTargets.end(); ++iter) {
-      w << " " << *iter << "\n";
+    for (std::string const& t : this->CMP0068WarnTargets) {
+      w << " " << t << "\n";
     }
     this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, w.str());
   }
@@ -1417,10 +1392,8 @@ bool cmGlobalGenerator::ComputeTargetDepends()
     return false;
   }
   std::vector<cmGeneratorTarget const*> const& targets = ctd.GetTargets();
-  for (std::vector<cmGeneratorTarget const*>::const_iterator ti =
-         targets.begin();
-       ti != targets.end(); ++ti) {
-    ctd.GetTargetDirectDepends(*ti, this->TargetDependencies[*ti]);
+  for (cmGeneratorTarget const* target : targets) {
+    ctd.GetTargetDirectDepends(target, this->TargetDependencies[target]);
   }
   return true;
 }
@@ -1502,17 +1475,15 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo()
     this->CMakeInstance->GetState()->GetEnabledLanguages();
 
   // Construct per-target generator information.
-  for (unsigned int i = 0; i < this->Makefiles.size(); ++i) {
-    cmMakefile* mf = this->Makefiles[i];
-
+  for (cmMakefile* mf : this->Makefiles) {
     const cmStringRange noconfig_compile_definitions =
       mf->GetCompileDefinitionsEntries();
     const cmBacktraceRange noconfig_compile_definitions_bts =
       mf->GetCompileDefinitionsBacktraces();
 
     cmTargets& targets = mf->GetTargets();
-    for (cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) {
-      cmTarget* t = &ti->second;
+    for (auto& target : targets) {
+      cmTarget* t = &target.second;
       if (t->GetType() == cmStateEnums::GLOBAL_TARGET) {
         continue;
       }
@@ -1537,10 +1508,9 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo()
         std::vector<std::string> configs;
         mf->GetConfigurations(configs);
 
-        for (std::vector<std::string>::const_iterator ci = configs.begin();
-             ci != configs.end(); ++ci) {
+        for (std::string const& c : configs) {
           std::string defPropName = "COMPILE_DEFINITIONS_";
-          defPropName += cmSystemTools::UpperCase(*ci);
+          defPropName += cmSystemTools::UpperCase(c);
           t->AppendProperty(defPropName, mf->GetProperty(defPropName));
         }
       }
@@ -1549,10 +1519,9 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo()
     // The standard include directories for each language
     // should be treated as system include directories.
     std::set<std::string> standardIncludesSet;
-    for (std::vector<std::string>::const_iterator li = langs.begin();
-         li != langs.end(); ++li) {
+    for (std::string const& li : langs) {
       std::string const standardIncludesVar =
-        "CMAKE_" + *li + "_STANDARD_INCLUDE_DIRECTORIES";
+        "CMAKE_" + li + "_STANDARD_INCLUDE_DIRECTORIES";
       std::string const standardIncludesStr =
         mf->GetSafeDefinition(standardIncludesVar);
       std::vector<std::string> standardIncludesVec;
@@ -1571,8 +1540,8 @@ void cmGlobalGenerator::CreateGeneratorTargets(
 {
   if (targetTypes == AllTargets) {
     cmTargets& targets = mf->GetTargets();
-    for (cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) {
-      cmTarget* t = &ti->second;
+    for (auto& target : targets) {
+      cmTarget* t = &target.second;
       cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg);
       lg->AddGeneratorTarget(gt);
     }
@@ -1580,9 +1549,8 @@ void cmGlobalGenerator::CreateGeneratorTargets(
 
   std::vector<cmTarget*> itgts = mf->GetImportedTargets();
 
-  for (std::vector<cmTarget*>::const_iterator j = itgts.begin();
-       j != itgts.end(); ++j) {
-    lg->AddImportedGeneratorTarget(importedMap.find(*j)->second);
+  for (cmTarget* t : itgts) {
+    lg->AddImportedGeneratorTarget(importedMap.find(t)->second);
   }
 }
 
@@ -1591,13 +1559,11 @@ void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes)
   std::map<cmTarget*, cmGeneratorTarget*> importedMap;
   for (unsigned int i = 0; i < this->Makefiles.size(); ++i) {
     cmMakefile* mf = this->Makefiles[i];
-    for (std::vector<cmTarget*>::const_iterator j =
-           mf->GetOwnedImportedTargets().begin();
-         j != mf->GetOwnedImportedTargets().end(); ++j) {
+    for (cmTarget* ownedImpTgt : mf->GetOwnedImportedTargets()) {
       cmLocalGenerator* lg = this->LocalGenerators[i];
-      cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg);
+      cmGeneratorTarget* gt = new cmGeneratorTarget(ownedImpTgt, lg);
       lg->AddOwnedImportedGeneratorTarget(gt);
-      importedMap[*j] = gt;
+      importedMap[ownedImpTgt] = gt;
     }
   }
 
@@ -1644,30 +1610,30 @@ void cmGlobalGenerator::CheckTargetProperties()
   for (unsigned int i = 0; i < this->Makefiles.size(); ++i) {
     this->Makefiles[i]->ConfigureFinalPass();
     cmTargets& targets = this->Makefiles[i]->GetTargets();
-    for (cmTargets::iterator l = targets.begin(); l != targets.end(); l++) {
-      if (l->second.GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+    for (auto const& target : targets) {
+      if (target.second.GetType() == cmStateEnums::INTERFACE_LIBRARY) {
         continue;
       }
       const cmTarget::LinkLibraryVectorType& libs =
-        l->second.GetOriginalLinkLibraries();
-      for (cmTarget::LinkLibraryVectorType::const_iterator lib = libs.begin();
-           lib != libs.end(); ++lib) {
-        if (lib->first.size() > 9 &&
-            cmSystemTools::IsNOTFOUND(lib->first.c_str())) {
-          std::string varName = lib->first.substr(0, lib->first.size() - 9);
+        target.second.GetOriginalLinkLibraries();
+      for (auto const& lib : libs) {
+        if (lib.first.size() > 9 &&
+            cmSystemTools::IsNOTFOUND(lib.first.c_str())) {
+          std::string varName = lib.first.substr(0, lib.first.size() - 9);
           if (state->GetCacheEntryPropertyAsBool(varName, "ADVANCED")) {
             varName += " (ADVANCED)";
           }
           std::string text = notFoundMap[varName];
           text += "\n    linked by target \"";
-          text += l->second.GetName();
+          text += target.second.GetName();
           text += "\" in directory ";
           text += this->Makefiles[i]->GetCurrentSourceDirectory();
           notFoundMap[varName] = text;
         }
       }
       std::vector<std::string> incs;
-      const char* incDirProp = l->second.GetProperty("INCLUDE_DIRECTORIES");
+      const char* incDirProp =
+        target.second.GetProperty("INCLUDE_DIRECTORIES");
       if (!incDirProp) {
         continue;
       }
@@ -1677,10 +1643,9 @@ void cmGlobalGenerator::CheckTargetProperties()
 
       cmSystemTools::ExpandListArgument(incDirs, incs);
 
-      for (std::vector<std::string>::const_iterator incDir = incs.begin();
-           incDir != incs.end(); ++incDir) {
-        if (incDir->size() > 9 && cmSystemTools::IsNOTFOUND(incDir->c_str())) {
-          std::string varName = incDir->substr(0, incDir->size() - 9);
+      for (std::string const& incDir : incs) {
+        if (incDir.size() > 9 && cmSystemTools::IsNOTFOUND(incDir.c_str())) {
+          std::string varName = incDir.substr(0, incDir.size() - 9);
           if (state->GetCacheEntryPropertyAsBool(varName, "ADVANCED")) {
             varName += " (ADVANCED)";
           }
@@ -1699,11 +1664,9 @@ void cmGlobalGenerator::CheckTargetProperties()
 
   if (!notFoundMap.empty()) {
     std::string notFoundVars;
-    for (std::map<std::string, std::string>::const_iterator ii =
-           notFoundMap.begin();
-         ii != notFoundMap.end(); ++ii) {
-      notFoundVars += ii->first;
-      notFoundVars += ii->second;
+    for (auto const& notFound : notFoundMap) {
+      notFoundVars += notFound.first;
+      notFoundVars += notFound.second;
       notFoundVars += "\n";
     }
     cmSystemTools::Error("The following variables are used in this project, "
@@ -2035,16 +1998,15 @@ int cmGlobalGenerator::GetLinkerPreference(const std::string& lang) const
 void cmGlobalGenerator::FillProjectMap()
 {
   this->ProjectMap.clear(); // make sure we start with a clean map
-  unsigned int i;
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
     // for each local generator add all projects
-    cmStateSnapshot snp = this->LocalGenerators[i]->GetStateSnapshot();
+    cmStateSnapshot snp = localGen->GetStateSnapshot();
     std::string name;
     do {
       std::string snpProjName = snp.GetProjectName();
       if (name != snpProjName) {
         name = snpProjName;
-        this->ProjectMap[name].push_back(this->LocalGenerators[i]);
+        this->ProjectMap[name].push_back(localGen);
       }
       snp = snp.GetBuildsystemDirectoryParent();
     } while (snp.IsValid());
@@ -2064,12 +2026,10 @@ cmMakefile* cmGlobalGenerator::FindMakefile(const std::string& start_dir) const
 cmLocalGenerator* cmGlobalGenerator::FindLocalGenerator(
   const std::string& start_dir) const
 {
-  for (std::vector<cmLocalGenerator*>::const_iterator it =
-         this->LocalGenerators.begin();
-       it != this->LocalGenerators.end(); ++it) {
-    std::string sd = (*it)->GetCurrentSourceDirectory();
+  for (cmLocalGenerator* lg : this->LocalGenerators) {
+    std::string sd = lg->GetCurrentSourceDirectory();
     if (sd == start_dir) {
-      return *it;
+      return lg;
     }
   }
   return nullptr;
@@ -2477,9 +2437,8 @@ cmTarget cmGlobalGenerator::CreateGlobalTarget(GlobalTargetInfo const& gti,
   if (!gti.Message.empty()) {
     target.SetProperty("EchoString", gti.Message.c_str());
   }
-  for (std::vector<std::string>::const_iterator dit = gti.Depends.begin();
-       dit != gti.Depends.end(); ++dit) {
-    target.AddUtility(*dit);
+  for (std::string const& d : gti.Depends) {
+    target.AddUtility(d);
   }
 
   // Organize in the "predefined targets" folder:
@@ -2587,18 +2546,16 @@ void cmGlobalGenerator::GetTargetSets(TargetDependSet& projectTargets,
                                       GeneratorVector const& generators)
 {
   // loop over all local generators
-  for (std::vector<cmLocalGenerator*>::const_iterator i = generators.begin();
-       i != generators.end(); ++i) {
+  for (cmLocalGenerator* generator : generators) {
     // check to make sure generator is not excluded
-    if (this->IsExcluded(root, *i)) {
+    if (this->IsExcluded(root, generator)) {
       continue;
     }
     // Get the targets in the makefile
-    const std::vector<cmGeneratorTarget*>& tgts = (*i)->GetGeneratorTargets();
+    const std::vector<cmGeneratorTarget*>& tgts =
+      generator->GetGeneratorTargets();
     // loop over all the targets
-    for (std::vector<cmGeneratorTarget*>::const_iterator l = tgts.begin();
-         l != tgts.end(); ++l) {
-      cmGeneratorTarget* target = *l;
+    for (cmGeneratorTarget* target : tgts) {
       if (this->IsRootOnlyTarget(target) &&
           target->GetLocalGenerator() != root) {
         continue;
@@ -2625,8 +2582,8 @@ void cmGlobalGenerator::AddTargetDepends(cmGeneratorTarget const* target,
     // This is the first time we have encountered the target.
     // Recursively follow its dependencies.
     TargetDependSet const& ts = this->GetTargetDirectDepends(target);
-    for (TargetDependSet::const_iterator i = ts.begin(); i != ts.end(); ++i) {
-      this->AddTargetDepends(*i, projectTargets);
+    for (auto const& t : ts) {
+      this->AddTargetDepends(t, projectTargets);
     }
   }
 }
@@ -2771,11 +2728,9 @@ void cmGlobalGenerator::WriteRuleHashes(std::string const& pfile)
   } else {
     cmGeneratedFileStream fout(pfile.c_str());
     fout << "# Hashes of file build rules.\n";
-    for (std::map<std::string, RuleHash>::const_iterator rhi =
-           this->RuleHashes.begin();
-         rhi != this->RuleHashes.end(); ++rhi) {
-      fout.write(rhi->second.Data, 32);
-      fout << " " << rhi->first << "\n";
+    for (auto const& rh : this->RuleHashes) {
+      fout.write(rh.second.Data, 32);
+      fout << " " << rh.first << "\n";
     }
   }
 }
@@ -2788,16 +2743,14 @@ void cmGlobalGenerator::WriteSummary()
   fname += "/TargetDirectories.txt";
   cmGeneratedFileStream fout(fname.c_str());
 
-  for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) {
-    const std::vector<cmGeneratorTarget*>& tgts =
-      this->LocalGenerators[i]->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator it = tgts.begin();
-         it != tgts.end(); ++it) {
-      if ((*it)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+  for (cmLocalGenerator* lg : this->LocalGenerators) {
+    const std::vector<cmGeneratorTarget*>& tgts = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* tgt : tgts) {
+      if (tgt->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
         continue;
       }
-      this->WriteSummary(*it);
-      fout << (*it)->GetSupportDirectory() << "\n";
+      this->WriteSummary(tgt);
+      fout << tgt->GetSupportDirectory() << "\n";
     }
   }
 }
@@ -2835,10 +2788,9 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target)
       cmSystemTools::ExpandListArgument(targetLabels, labels);
       if (!labels.empty()) {
         fout << "# Target labels\n";
-        for (std::vector<std::string>::const_iterator li = labels.begin();
-             li != labels.end(); ++li) {
-          fout << " " << *li << "\n";
-          lj_target_labels.append(*li);
+        for (std::string const& l : labels) {
+          fout << " " << l << "\n";
+          lj_target_labels.append(l);
         }
       }
     }
@@ -2860,18 +2812,14 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target)
       fout << "# Directory labels\n";
     }
 
-    for (std::vector<std::string>::const_iterator li =
-           directoryLabelsList.begin();
-         li != directoryLabelsList.end(); ++li) {
-      fout << " " << *li << "\n";
-      lj_target_labels.append(*li);
+    for (std::string const& li : directoryLabelsList) {
+      fout << " " << li << "\n";
+      lj_target_labels.append(li);
     }
 
-    for (std::vector<std::string>::const_iterator li =
-           cmakeDirectoryLabelsList.begin();
-         li != cmakeDirectoryLabelsList.end(); ++li) {
-      fout << " " << *li << "\n";
-      lj_target_labels.append(*li);
+    for (std::string const& li : cmakeDirectoryLabelsList) {
+      fout << " " << li << "\n";
+      lj_target_labels.append(li);
     }
 
     // List the source files with any per-source labels.
@@ -2882,9 +2830,8 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target)
     if (configs.empty()) {
       configs.push_back("");
     }
-    for (std::vector<std::string>::const_iterator ci = configs.begin();
-         ci != configs.end(); ++ci) {
-      target->GetSourceFiles(sources, *ci);
+    for (std::string const& c : configs) {
+      target->GetSourceFiles(sources, c);
     }
     std::vector<cmSourceFile*>::const_iterator sourcesEnd =
       cmRemoveDuplicates(sources);
@@ -2899,10 +2846,9 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target)
         labels.clear();
         Json::Value& lj_source_labels = lj_source["labels"] = Json::arrayValue;
         cmSystemTools::ExpandListArgument(svalue, labels);
-        for (std::vector<std::string>::const_iterator li = labels.begin();
-             li != labels.end(); ++li) {
-          fout << " " << *li << "\n";
-          lj_source_labels.append(*li);
+        for (std::string const& label : labels) {
+          fout << " " << label << "\n";
+          lj_source_labels.append(label);
         }
       }
     }
@@ -2920,11 +2866,11 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target)
 std::string cmGlobalGenerator::EscapeJSON(const std::string& s)
 {
   std::string result;
-  for (std::string::size_type i = 0; i < s.size(); ++i) {
-    if (s[i] == '"' || s[i] == '\\') {
+  for (char i : s) {
+    if (i == '"' || i == '\\') {
       result += '\\';
     }
-    result += s[i];
+    result += i;
   }
   return result;
 }
@@ -2944,18 +2890,16 @@ cmGlobalGenerator::GetFilenameTargetDepends(cmSourceFile* sf) const
 void cmGlobalGenerator::CreateEvaluationSourceFiles(
   std::string const& config) const
 {
-  unsigned int i;
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    this->LocalGenerators[i]->CreateEvaluationFileOutputs(config);
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    localGen->CreateEvaluationFileOutputs(config);
   }
 }
 
 void cmGlobalGenerator::ProcessEvaluationFiles()
 {
   std::vector<std::string> generatedFiles;
-  unsigned int i;
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    this->LocalGenerators[i]->ProcessEvaluationFiles(generatedFiles);
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    localGen->ProcessEvaluationFiles(generatedFiles);
   }
 }
 
@@ -2986,9 +2930,8 @@ bool cmGlobalGenerator::GenerateCPackPropertiesFile()
   cmGeneratedFileStream file(path.c_str());
   file << "# CPack properties\n";
 
-  for (cmake::InstalledFilesMap::const_iterator i = installedFiles.begin();
-       i != installedFiles.end(); ++i) {
-    cmInstalledFile const& installedFile = i->second;
+  for (auto const& i : installedFiles) {
+    cmInstalledFile const& installedFile = i.second;
 
     cmCPackPropertiesGenerator cpackPropertiesGenerator(lg, installedFile,
                                                         configs);

+ 29 - 47
Source/cmGlobalKdevelopGenerator.cxx

@@ -16,7 +16,6 @@
 
 #include "cmsys/Directory.hxx"
 #include "cmsys/FStream.hxx"
-#include <map>
 #include <set>
 #include <string.h>
 #include <utility>
@@ -49,15 +48,13 @@ void cmGlobalKdevelopGenerator::Generate()
 {
   // for each sub project in the project create
   // a kdevelop project
-  for (std::map<std::string, std::vector<cmLocalGenerator*>>::const_iterator
-         it = this->GlobalGenerator->GetProjectMap().begin();
-       it != this->GlobalGenerator->GetProjectMap().end(); ++it) {
-    std::string outputDir = it->second[0]->GetCurrentBinaryDirectory();
-    std::string projectDir = it->second[0]->GetSourceDirectory();
-    std::string projectName = it->second[0]->GetProjectName();
+  for (auto const& it : this->GlobalGenerator->GetProjectMap()) {
+    std::string outputDir = it.second[0]->GetCurrentBinaryDirectory();
+    std::string projectDir = it.second[0]->GetSourceDirectory();
+    std::string projectName = it.second[0]->GetProjectName();
     std::string cmakeFilePattern("CMakeLists.txt;*.cmake;");
     std::string fileToOpen;
-    const std::vector<cmLocalGenerator*>& lgs = it->second;
+    const std::vector<cmLocalGenerator*>& lgs = it.second;
     // create the project.kdevelop.filelist file
     if (!this->CreateFilelistFile(lgs, outputDir, projectDir, projectName,
                                   cmakeFilePattern, fileToOpen)) {
@@ -67,15 +64,12 @@ void cmGlobalKdevelopGenerator::Generate()
     // try to find the name of an executable so we have something to
     // run from kdevelop for now just pick the first executable found
     std::string executable;
-    for (std::vector<cmLocalGenerator*>::const_iterator lg = lgs.begin();
-         lg != lgs.end(); lg++) {
+    for (cmLocalGenerator* lg : lgs) {
       std::vector<cmGeneratorTarget*> const& targets =
-        (*lg)->GetGeneratorTargets();
-      for (std::vector<cmGeneratorTarget*>::const_iterator ti =
-             targets.begin();
-           ti != targets.end(); ti++) {
-        if ((*ti)->GetType() == cmStateEnums::EXECUTABLE) {
-          executable = (*ti)->GetLocation("");
+        lg->GetGeneratorTargets();
+      for (cmGeneratorTarget* target : targets) {
+        if (target->GetType() == cmStateEnums::EXECUTABLE) {
+          executable = target->GetLocation("");
           break;
         }
       }
@@ -104,13 +98,11 @@ bool cmGlobalKdevelopGenerator::CreateFilelistFile(
   std::vector<std::string> const& hdrExts =
     this->GlobalGenerator->GetCMakeInstance()->GetHeaderExtensions();
 
-  for (std::vector<cmLocalGenerator*>::const_iterator it = lgs.begin();
-       it != lgs.end(); it++) {
-    cmMakefile* makefile = (*it)->GetMakefile();
+  for (cmLocalGenerator* lg : lgs) {
+    cmMakefile* makefile = lg->GetMakefile();
     const std::vector<std::string>& listFiles = makefile->GetListFiles();
-    for (std::vector<std::string>::const_iterator lt = listFiles.begin();
-         lt != listFiles.end(); lt++) {
-      tmp = *lt;
+    for (std::string const& listFile : listFiles) {
+      tmp = listFile;
       cmSystemTools::ReplaceString(tmp, projectDir.c_str(), "");
       // make sure the file is part of this source tree
       if ((tmp[0] != '/') &&
@@ -128,17 +120,13 @@ bool cmGlobalKdevelopGenerator::CreateFilelistFile(
     }
 
     // get all sources
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*it)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-         ti != targets.end(); ti++) {
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* gt : targets) {
       std::vector<cmSourceFile*> sources;
-      cmGeneratorTarget* gt = *ti;
       gt->GetSourceFiles(sources, gt->Target->GetMakefile()->GetSafeDefinition(
                                     "CMAKE_BUILD_TYPE"));
-      for (std::vector<cmSourceFile*>::const_iterator si = sources.begin();
-           si != sources.end(); si++) {
-        tmp = (*si)->GetFullPath();
+      for (cmSourceFile* sf : sources) {
+        tmp = sf->GetFullPath();
         std::string headerBasename = cmSystemTools::GetFilenamePath(tmp);
         headerBasename += "/";
         headerBasename += cmSystemTools::GetFilenameWithoutExtension(tmp);
@@ -152,11 +140,10 @@ bool cmGlobalKdevelopGenerator::CreateFilelistFile(
           files.insert(tmp);
 
           // check if there's a matching header around
-          for (std::vector<std::string>::const_iterator ext = hdrExts.begin();
-               ext != hdrExts.end(); ++ext) {
+          for (std::string const& hdrExt : hdrExts) {
             std::string hname = headerBasename;
             hname += ".";
-            hname += *ext;
+            hname += hdrExt;
             if (cmSystemTools::FileExists(hname.c_str())) {
               cmSystemTools::ReplaceString(hname, projectDir.c_str(), "");
               files.insert(hname);
@@ -165,9 +152,8 @@ bool cmGlobalKdevelopGenerator::CreateFilelistFile(
           }
         }
       }
-      for (std::vector<std::string>::const_iterator lt = listFiles.begin();
-           lt != listFiles.end(); lt++) {
-        tmp = *lt;
+      for (std::string const& listFile : listFiles) {
+        tmp = listFile;
         cmSystemTools::ReplaceString(tmp, projectDir.c_str(), "");
         if ((tmp[0] != '/') &&
             (strstr(tmp.c_str(), cmake::GetCMakeFilesDirectoryPostSlash()) ==
@@ -201,10 +187,9 @@ bool cmGlobalKdevelopGenerator::CreateFilelistFile(
   }
 
   fileToOpen = "";
-  for (std::set<std::string>::const_iterator it = files.begin();
-       it != files.end(); it++) {
+  for (std::string const& file : files) {
     // get the full path to the file
-    tmp = cmSystemTools::CollapseFullPath(*it, projectDir.c_str());
+    tmp = cmSystemTools::CollapseFullPath(file, projectDir.c_str());
     // just select the first source file
     if (fileToOpen.empty()) {
       std::string ext = cmSystemTools::GetFilenameExtension(tmp);
@@ -297,9 +282,8 @@ void cmGlobalKdevelopGenerator::MergeProjectFiles(
     return;
   }
 
-  for (std::vector<std::string>::const_iterator it = lines.begin();
-       it != lines.end(); it++) {
-    const char* line = (*it).c_str();
+  for (std::string const& l : lines) {
+    const char* line = l.c_str();
     // skip these tags as they are always replaced
     if ((strstr(line, "<projectdirectory>") != nullptr) ||
         (strstr(line, "<projectmanagement>") != nullptr) ||
@@ -311,7 +295,7 @@ void cmGlobalKdevelopGenerator::MergeProjectFiles(
     }
 
     // output the line from the file if it is not one of the above tags
-    fout << *it << "\n";
+    fout << l << "\n";
     // if this is the <general> tag output the stuff that goes in the
     // general tag
     if (strstr(line, "<general>")) {
@@ -434,10 +418,8 @@ void cmGlobalKdevelopGenerator::CreateNewProjectFile(
   xml.EndElement(); // make
 
   xml.StartElement("blacklist");
-  for (std::vector<std::string>::const_iterator dirIt =
-         this->Blacklist.begin();
-       dirIt != this->Blacklist.end(); ++dirIt) {
-    xml.Element("path", *dirIt);
+  for (std::string const& dir : this->Blacklist) {
+    xml.Element("path", dir);
   }
   xml.EndElement();
 

+ 113 - 170
Source/cmGlobalNinjaGenerator.cxx

@@ -90,12 +90,12 @@ std::string cmGlobalNinjaGenerator::EncodeRuleName(std::string const& name)
   // Ninja rule names must match "[a-zA-Z0-9_.-]+".  Use ".xx" to encode
   // "." and all invalid characters as hexadecimal.
   std::string encoded;
-  for (std::string::const_iterator i = name.begin(); i != name.end(); ++i) {
-    if (isalnum(*i) || *i == '_' || *i == '-') {
-      encoded += *i;
+  for (char i : name) {
+    if (isalnum(i) || i == '_' || i == '-') {
+      encoded += i;
     } else {
       char buf[16];
-      sprintf(buf, ".%02x", static_cast<unsigned int>(*i));
+      sprintf(buf, ".%02x", static_cast<unsigned int>(i));
       encoded += buf;
     }
   }
@@ -177,26 +177,23 @@ void cmGlobalNinjaGenerator::WriteBuild(
   // TODO: Better formatting for when there are multiple input/output files.
 
   // Write explicit dependencies.
-  for (cmNinjaDeps::const_iterator i = explicitDeps.begin();
-       i != explicitDeps.end(); ++i) {
-    arguments += " " + EncodeIdent(EncodePath(*i), os);
+  for (std::string const& explicitDep : explicitDeps) {
+    arguments += " " + EncodeIdent(EncodePath(explicitDep), os);
   }
 
   // Write implicit dependencies.
   if (!implicitDeps.empty()) {
     arguments += " |";
-    for (cmNinjaDeps::const_iterator i = implicitDeps.begin();
-         i != implicitDeps.end(); ++i) {
-      arguments += " " + EncodeIdent(EncodePath(*i), os);
+    for (std::string const& implicitDep : implicitDeps) {
+      arguments += " " + EncodeIdent(EncodePath(implicitDep), os);
     }
   }
 
   // Write order-only dependencies.
   if (!orderOnlyDeps.empty()) {
     arguments += " ||";
-    for (cmNinjaDeps::const_iterator i = orderOnlyDeps.begin();
-         i != orderOnlyDeps.end(); ++i) {
-      arguments += " " + EncodeIdent(EncodePath(*i), os);
+    for (std::string const& orderOnlyDep : orderOnlyDeps) {
+      arguments += " " + EncodeIdent(EncodePath(orderOnlyDep), os);
     }
   }
 
@@ -206,18 +203,16 @@ void cmGlobalNinjaGenerator::WriteBuild(
 
   // Write outputs files.
   build += "build";
-  for (cmNinjaDeps::const_iterator i = outputs.begin(); i != outputs.end();
-       ++i) {
-    build += " " + EncodeIdent(EncodePath(*i), os);
+  for (std::string const& output : outputs) {
+    build += " " + EncodeIdent(EncodePath(output), os);
     if (this->ComputingUnknownDependencies) {
-      this->CombinedBuildOutputs.insert(*i);
+      this->CombinedBuildOutputs.insert(output);
     }
   }
   if (!implicitOuts.empty()) {
     build += " |";
-    for (cmNinjaDeps::const_iterator i = implicitOuts.begin();
-         i != implicitOuts.end(); ++i) {
-      build += " " + EncodeIdent(EncodePath(*i), os);
+    for (std::string const& implicitOut : implicitOuts) {
+      build += " " + EncodeIdent(EncodePath(implicitOut), os);
     }
   }
   build += ":";
@@ -227,20 +222,18 @@ void cmGlobalNinjaGenerator::WriteBuild(
 
   // Write the variables bound to this build statement.
   std::ostringstream variable_assignments;
-  for (cmNinjaVars::const_iterator i = variables.begin(); i != variables.end();
-       ++i) {
-    cmGlobalNinjaGenerator::WriteVariable(variable_assignments, i->first,
-                                          i->second, "", 1);
+  for (auto const& variable : variables) {
+    cmGlobalNinjaGenerator::WriteVariable(variable_assignments, variable.first,
+                                          variable.second, "", 1);
   }
 
   // check if a response file rule should be used
   std::string buildstr = build;
   std::string assignments = variable_assignments.str();
-  const std::string& args = arguments;
   bool useResponseFile = false;
   if (cmdLineLimit < 0 ||
       (cmdLineLimit > 0 &&
-       (args.size() + buildstr.size() + assignments.size() + 1000) >
+       (arguments.size() + buildstr.size() + assignments.size() + 1000) >
          static_cast<size_t>(cmdLineLimit))) {
     variable_assignments.str(std::string());
     cmGlobalNinjaGenerator::WriteVariable(variable_assignments, "RSP_FILE",
@@ -252,7 +245,7 @@ void cmGlobalNinjaGenerator::WriteBuild(
     *usedResponseFile = useResponseFile;
   }
 
-  os << buildstr << args << assignments;
+  os << buildstr << arguments << assignments;
 }
 
 void cmGlobalNinjaGenerator::WritePhonyBuild(
@@ -311,8 +304,8 @@ void cmGlobalNinjaGenerator::WriteCustomCommandBuild(
   if (this->ComputingUnknownDependencies) {
     // we need to track every dependency that comes in, since we are trying
     // to find dependencies that are side effects of build commands
-    for (cmNinjaDeps::const_iterator i = deps.begin(); i != deps.end(); ++i) {
-      this->CombinedCustomCommandExplicitDependencies.insert(*i);
+    for (std::string const& dep : deps) {
+      this->CombinedCustomCommandExplicitDependencies.insert(dep);
     }
   }
 }
@@ -465,9 +458,8 @@ void cmGlobalNinjaGenerator::WriteDefault(std::ostream& os,
 {
   cmGlobalNinjaGenerator::WriteComment(os, comment);
   os << "default";
-  for (cmNinjaDeps::const_iterator i = targets.begin(); i != targets.end();
-       ++i) {
-    os << " " << *i;
+  for (std::string const& target : targets) {
+    os << " " << target;
   }
   os << "\n";
 }
@@ -670,12 +662,11 @@ void cmGlobalNinjaGenerator::EnableLanguage(
   std::vector<std::string> const& langs, cmMakefile* mf, bool optional)
 {
   this->cmGlobalGenerator::EnableLanguage(langs, mf, optional);
-  for (std::vector<std::string>::const_iterator l = langs.begin();
-       l != langs.end(); ++l) {
-    if (*l == "NONE") {
+  for (std::string const& l : langs) {
+    if (l == "NONE") {
       continue;
     }
-    this->ResolveLanguageCompiler(*l, mf, optional);
+    this->ResolveLanguageCompiler(l, mf, optional);
   }
 #ifdef _WIN32
   if (strcmp(mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID"), "MSVC") != 0 &&
@@ -952,15 +943,13 @@ void cmGlobalNinjaGenerator::AddDependencyToAll(const std::string& input)
 
 void cmGlobalNinjaGenerator::WriteAssumedSourceDependencies()
 {
-  for (std::map<std::string, std::set<std::string>>::iterator i =
-         this->AssumedSourceDependencies.begin();
-       i != this->AssumedSourceDependencies.end(); ++i) {
+  for (auto const& asd : this->AssumedSourceDependencies) {
     cmNinjaDeps deps;
-    std::copy(i->second.begin(), i->second.end(), std::back_inserter(deps));
+    std::copy(asd.second.begin(), asd.second.end(), std::back_inserter(deps));
     WriteCustomCommandBuild(/*command=*/"", /*description=*/"",
                             "Assume dependencies for generated source file.",
                             /*depfile*/ "", /*uses_terminal*/ false,
-                            /*restat*/ true, cmNinjaDeps(1, i->first), deps);
+                            /*restat*/ true, cmNinjaDeps(1, asd.first), deps);
   }
 }
 
@@ -1025,22 +1014,20 @@ void cmGlobalNinjaGenerator::AppendTargetDepends(
   if (target->GetType() == cmStateEnums::GLOBAL_TARGET) {
     // These depend only on other CMake-provided targets, e.g. "all".
     std::set<std::string> const& utils = target->GetUtilities();
-    for (std::set<std::string>::const_iterator i = utils.begin();
-         i != utils.end(); ++i) {
+    for (std::string const& util : utils) {
       std::string d =
         target->GetLocalGenerator()->GetCurrentBinaryDirectory() +
-        std::string("/") + *i;
+        std::string("/") + util;
       outputs.push_back(this->ConvertToNinjaPath(d));
     }
   } else {
     cmNinjaDeps outs;
     cmTargetDependSet const& targetDeps = this->GetTargetDirectDepends(target);
-    for (cmTargetDependSet::const_iterator i = targetDeps.begin();
-         i != targetDeps.end(); ++i) {
-      if ((*i)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+    for (cmTargetDepend const& targetDep : targetDeps) {
+      if (targetDep->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
         continue;
       }
-      this->AppendTargetOutputs(*i, outs, depends);
+      this->AppendTargetOutputs(targetDep, outs, depends);
     }
     std::sort(outs.begin(), outs.end());
     outputs.insert(outputs.end(), outs.begin(), outs.end());
@@ -1060,9 +1047,8 @@ void cmGlobalNinjaGenerator::AppendTargetDependsClosure(
   }
   std::set<cmGeneratorTarget const*> const& targets = i->second;
   cmNinjaDeps outs;
-  for (std::set<cmGeneratorTarget const*>::const_iterator ti = targets.begin();
-       ti != targets.end(); ++ti) {
-    this->AppendTargetOutputs(*ti, outs);
+  for (auto tgt : targets) {
+    this->AppendTargetOutputs(tgt, outs);
   }
   std::sort(outs.begin(), outs.end());
   outputs.insert(outputs.end(), outs.begin(), outs.end());
@@ -1072,13 +1058,12 @@ void cmGlobalNinjaGenerator::ComputeTargetDependsClosure(
   cmGeneratorTarget const* target, std::set<cmGeneratorTarget const*>& depends)
 {
   cmTargetDependSet const& targetDeps = this->GetTargetDirectDepends(target);
-  for (cmTargetDependSet::const_iterator i = targetDeps.begin();
-       i != targetDeps.end(); ++i) {
-    if ((*i)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+  for (auto targetDep : targetDeps) {
+    if (targetDep->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
-    if (depends.insert(*i).second) {
-      this->ComputeTargetDependsClosure(*i, depends);
+    if (depends.insert(targetDep).second) {
+      this->ComputeTargetDependsClosure(targetDep, depends);
     }
   }
 }
@@ -1091,8 +1076,8 @@ void cmGlobalNinjaGenerator::AddTargetAlias(const std::string& alias,
   this->AppendTargetOutputs(target, outputs);
   // Mark the target's outputs as ambiguous to ensure that no other target uses
   // the output as an alias.
-  for (cmNinjaDeps::iterator i = outputs.begin(); i != outputs.end(); ++i) {
-    TargetAliases[*i] = nullptr;
+  for (std::string const& output : outputs) {
+    TargetAliases[output] = nullptr;
   }
 
   // Insert the alias into the map.  If the alias was already present in the
@@ -1109,17 +1094,16 @@ void cmGlobalNinjaGenerator::WriteTargetAliases(std::ostream& os)
   cmGlobalNinjaGenerator::WriteDivider(os);
   os << "# Target aliases.\n\n";
 
-  for (TargetAliasMap::const_iterator i = TargetAliases.begin();
-       i != TargetAliases.end(); ++i) {
+  for (auto const& ta : TargetAliases) {
     // Don't write ambiguous aliases.
-    if (!i->second) {
+    if (!ta.second) {
       continue;
     }
 
     cmNinjaDeps deps;
-    this->AppendTargetOutputs(i->second, deps);
+    this->AppendTargetOutputs(ta.second, deps);
 
-    this->WritePhonyBuild(os, "", cmNinjaDeps(1, i->first), deps);
+    this->WritePhonyBuild(os, "", cmNinjaDeps(1, ta.first), deps);
   }
 }
 
@@ -1129,19 +1113,13 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
   os << "# Folder targets.\n\n";
 
   std::map<std::string, cmNinjaDeps> targetsPerFolder;
-  for (std::vector<cmLocalGenerator*>::const_iterator lgi =
-         this->LocalGenerators.begin();
-       lgi != this->LocalGenerators.end(); ++lgi) {
-    cmLocalGenerator const* lg = *lgi;
+  for (cmLocalGenerator const* lg : this->LocalGenerators) {
     const std::string currentBinaryFolder(
       lg->GetStateSnapshot().GetDirectory().GetCurrentBinary());
     // The directory-level rule should depend on the target-level rules
     // for all targets in the directory.
     targetsPerFolder[currentBinaryFolder] = cmNinjaDeps();
-    for (std::vector<cmGeneratorTarget*>::const_iterator ti =
-           lg->GetGeneratorTargets().begin();
-         ti != lg->GetGeneratorTargets().end(); ++ti) {
-      cmGeneratorTarget const* gt = *ti;
+    for (auto gt : lg->GetGeneratorTargets()) {
       cmStateEnums::TargetType const type = gt->GetType();
       if ((type == cmStateEnums::EXECUTABLE ||
            type == cmStateEnums::STATIC_LIBRARY ||
@@ -1158,11 +1136,9 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
     // rules of the subdirectories.
     std::vector<cmStateSnapshot> const& children =
       lg->GetStateSnapshot().GetChildren();
-    for (std::vector<cmStateSnapshot>::const_iterator stateIt =
-           children.begin();
-         stateIt != children.end(); ++stateIt) {
+    for (cmStateSnapshot const& state : children) {
       std::string const currentBinaryDir =
-        stateIt->GetDirectory().GetCurrentBinary();
+        state.GetDirectory().GetCurrentBinary();
 
       targetsPerFolder[currentBinaryFolder].push_back(
         this->ConvertToNinjaPath(currentBinaryDir + "/all"));
@@ -1171,11 +1147,9 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
 
   std::string const rootBinaryDir =
     this->LocalGenerators[0]->GetBinaryDirectory();
-  for (std::map<std::string, cmNinjaDeps>::const_iterator it =
-         targetsPerFolder.begin();
-       it != targetsPerFolder.end(); ++it) {
+  for (auto const& it : targetsPerFolder) {
     cmGlobalNinjaGenerator::WriteDivider(os);
-    std::string const& currentBinaryDir = it->first;
+    std::string const& currentBinaryDir = it.first;
 
     // Do not generate a rule for the root binary dir.
     if (rootBinaryDir.length() >= currentBinaryDir.length()) {
@@ -1186,7 +1160,7 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
     cmNinjaDeps output(1);
     output.push_back(this->ConvertToNinjaPath(currentBinaryDir + "/all"));
 
-    this->WritePhonyBuild(os, comment, output, it->second);
+    this->WritePhonyBuild(os, comment, output, it.second);
   }
 }
 
@@ -1220,50 +1194,40 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os)
   // get the list of files that cmake itself has generated as a
   // product of configuration.
 
-  for (std::vector<cmLocalGenerator*>::const_iterator i =
-         this->LocalGenerators.begin();
-       i != this->LocalGenerators.end(); ++i) {
+  for (cmLocalGenerator* lg : this->LocalGenerators) {
     // get the vector of files created by this makefile and convert them
     // to ninja paths, which are all relative in respect to the build directory
     const std::vector<std::string>& files =
-      (*i)->GetMakefile()->GetOutputFiles();
-    typedef std::vector<std::string>::const_iterator vect_it;
-    for (vect_it j = files.begin(); j != files.end(); ++j) {
-      knownDependencies.insert(this->ConvertToNinjaPath(*j));
+      lg->GetMakefile()->GetOutputFiles();
+    for (std::string const& file : files) {
+      knownDependencies.insert(this->ConvertToNinjaPath(file));
     }
     // get list files which are implicit dependencies as well and will be phony
     // for rebuild manifest
-    std::vector<std::string> const& lf = (*i)->GetMakefile()->GetListFiles();
-    typedef std::vector<std::string>::const_iterator vect_it;
-    for (vect_it j = lf.begin(); j != lf.end(); ++j) {
-      knownDependencies.insert(this->ConvertToNinjaPath(*j));
+    std::vector<std::string> const& lf = lg->GetMakefile()->GetListFiles();
+    for (std::string const& j : lf) {
+      knownDependencies.insert(this->ConvertToNinjaPath(j));
     }
     std::vector<cmGeneratorExpressionEvaluationFile*> const& ef =
-      (*i)->GetMakefile()->GetEvaluationFiles();
-    for (std::vector<cmGeneratorExpressionEvaluationFile*>::const_iterator li =
-           ef.begin();
-         li != ef.end(); ++li) {
+      lg->GetMakefile()->GetEvaluationFiles();
+    for (cmGeneratorExpressionEvaluationFile* li : ef) {
       // get all the files created by generator expressions and convert them
       // to ninja paths
-      std::vector<std::string> evaluationFiles = (*li)->GetFiles();
-      for (vect_it j = evaluationFiles.begin(); j != evaluationFiles.end();
-           ++j) {
-        knownDependencies.insert(this->ConvertToNinjaPath(*j));
+      std::vector<std::string> evaluationFiles = li->GetFiles();
+      for (std::string const& evaluationFile : evaluationFiles) {
+        knownDependencies.insert(this->ConvertToNinjaPath(evaluationFile));
       }
     }
   }
   knownDependencies.insert(this->CMakeCacheFile);
 
-  for (TargetAliasMap::const_iterator i = this->TargetAliases.begin();
-       i != this->TargetAliases.end(); ++i) {
-    knownDependencies.insert(this->ConvertToNinjaPath(i->first));
+  for (auto const& ta : this->TargetAliases) {
+    knownDependencies.insert(this->ConvertToNinjaPath(ta.first));
   }
 
   // remove all source files we know will exist.
-  typedef std::map<std::string, std::set<std::string>>::const_iterator map_it;
-  for (map_it i = this->AssumedSourceDependencies.begin();
-       i != this->AssumedSourceDependencies.end(); ++i) {
-    knownDependencies.insert(this->ConvertToNinjaPath(i->first));
+  for (auto const& i : this->AssumedSourceDependencies) {
+    knownDependencies.insert(this->ConvertToNinjaPath(i.first));
   }
 
   // now we difference with CombinedCustomCommandExplicitDependencies to find
@@ -1285,20 +1249,18 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os)
   bool const inSourceBuild =
     (rootBuildDirectory == this->GetCMakeInstance()->GetHomeDirectory());
   std::vector<std::string> warnExplicitDepends;
-  for (std::vector<std::string>::const_iterator i =
-         unknownExplicitDepends.begin();
-       i != unknownExplicitDepends.end(); ++i) {
+  for (std::string const& i : unknownExplicitDepends) {
     // verify the file is in the build directory
     std::string const absDepPath =
-      cmSystemTools::CollapseFullPath(*i, rootBuildDirectory.c_str());
+      cmSystemTools::CollapseFullPath(i, rootBuildDirectory.c_str());
     bool const inBuildDir =
       cmSystemTools::IsSubDirectory(absDepPath, rootBuildDirectory);
     if (inBuildDir) {
-      cmNinjaDeps deps(1, *i);
+      cmNinjaDeps deps(1, i);
       this->WritePhonyBuild(os, "", deps, cmNinjaDeps());
       if (this->PolicyCMP0058 == cmPolicies::WARN && !inSourceBuild &&
           warnExplicitDepends.size() < 10) {
-        warnExplicitDepends.push_back(*i);
+        warnExplicitDepends.push_back(i);
       }
     }
   }
@@ -1373,13 +1335,11 @@ void cmGlobalNinjaGenerator::WriteTargetRebuildManifest(std::ostream& os)
             /*generator=*/true);
 
   cmNinjaDeps implicitDeps;
-  for (std::vector<cmLocalGenerator*>::const_iterator i =
-         this->LocalGenerators.begin();
-       i != this->LocalGenerators.end(); ++i) {
-    std::vector<std::string> const& lf = (*i)->GetMakefile()->GetListFiles();
-    for (std::vector<std::string>::const_iterator fi = lf.begin();
-         fi != lf.end(); ++fi) {
-      implicitDeps.push_back(this->ConvertToNinjaPath(*fi));
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    std::vector<std::string> const& lf =
+      localGen->GetMakefile()->GetListFiles();
+    for (std::string const& fi : lf) {
+      implicitDeps.push_back(this->ConvertToNinjaPath(fi));
     }
   }
   implicitDeps.push_back(this->CMakeCacheFile);
@@ -1636,9 +1596,8 @@ int cmcmd_cmake_ninja_depends(std::vector<std::string>::const_iterator argBeg,
 
     Json::Value const& tdi_include_dirs = tdi["include-dirs"];
     if (tdi_include_dirs.isArray()) {
-      for (Json::Value::const_iterator i = tdi_include_dirs.begin();
-           i != tdi_include_dirs.end(); ++i) {
-        includes.push_back(i->asString());
+      for (auto const& tdi_include_dir : tdi_include_dirs) {
+        includes.push_back(tdi_include_dir.asString());
       }
     }
   }
@@ -1659,9 +1618,8 @@ int cmcmd_cmake_ninja_depends(std::vector<std::string>::const_iterator argBeg,
   {
     cmGeneratedFileStream depfile(arg_dep.c_str());
     depfile << cmSystemTools::ConvertToUnixOutputPath(arg_pp) << ":";
-    for (std::set<std::string>::iterator i = info.Includes.begin();
-         i != info.Includes.end(); ++i) {
-      depfile << " \\\n " << cmSystemTools::ConvertToUnixOutputPath(*i);
+    for (std::string const& include : info.Includes) {
+      depfile << " \\\n " << cmSystemTools::ConvertToUnixOutputPath(include);
     }
     depfile << "\n";
   }
@@ -1670,16 +1628,14 @@ int cmcmd_cmake_ninja_depends(std::vector<std::string>::const_iterator argBeg,
   ddi["object"] = arg_obj;
 
   Json::Value& ddi_provides = ddi["provides"] = Json::arrayValue;
-  for (std::set<std::string>::iterator i = info.Provides.begin();
-       i != info.Provides.end(); ++i) {
-    ddi_provides.append(*i);
+  for (std::string const& provide : info.Provides) {
+    ddi_provides.append(provide);
   }
   Json::Value& ddi_requires = ddi["requires"] = Json::arrayValue;
-  for (std::set<std::string>::iterator i = info.Requires.begin();
-       i != info.Requires.end(); ++i) {
+  for (std::string const& r : info.Requires) {
     // Require modules not provided in the same source.
-    if (!info.Provides.count(*i)) {
-      ddi_requires.append(*i);
+    if (!info.Provides.count(r)) {
+      ddi_requires.append(r);
     }
   }
 
@@ -1722,16 +1678,15 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
   }
 
   std::vector<cmFortranObjectInfo> objects;
-  for (std::vector<std::string>::const_iterator ddii = arg_ddis.begin();
-       ddii != arg_ddis.end(); ++ddii) {
+  for (std::string const& arg_ddi : arg_ddis) {
     // Load the ddi file and compute the module file paths it provides.
     Json::Value ddio;
     Json::Value const& ddi = ddio;
-    cmsys::ifstream ddif(ddii->c_str(), std::ios::in | std::ios::binary);
+    cmsys::ifstream ddif(arg_ddi.c_str(), std::ios::in | std::ios::binary);
     Json::Reader reader;
     if (!reader.parse(ddif, ddio, false)) {
       cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse ",
-                           ddii->c_str(),
+                           arg_ddi.c_str(),
                            reader.getFormattedErrorMessages().c_str());
       return false;
     }
@@ -1740,16 +1695,14 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
     info.Object = ddi["object"].asString();
     Json::Value const& ddi_provides = ddi["provides"];
     if (ddi_provides.isArray()) {
-      for (Json::Value::const_iterator i = ddi_provides.begin();
-           i != ddi_provides.end(); ++i) {
-        info.Provides.push_back(i->asString());
+      for (auto const& ddi_provide : ddi_provides) {
+        info.Provides.push_back(ddi_provide.asString());
       }
     }
     Json::Value const& ddi_requires = ddi["requires"];
     if (ddi_requires.isArray()) {
-      for (Json::Value::const_iterator i = ddi_requires.begin();
-           i != ddi_requires.end(); ++i) {
-        info.Requires.push_back(i->asString());
+      for (auto const& ddi_require : ddi_requires) {
+        info.Requires.push_back(ddi_require.asString());
       }
     }
     objects.push_back(info);
@@ -1759,16 +1712,14 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
   std::map<std::string, std::string> mod_files;
 
   // Populate the module map with those provided by linked targets first.
-  for (std::vector<std::string>::const_iterator di =
-         linked_target_dirs.begin();
-       di != linked_target_dirs.end(); ++di) {
-    std::string const ltmn = *di + "/FortranModules.json";
+  for (std::string const& linked_target_dir : linked_target_dirs) {
+    std::string const ltmn = linked_target_dir + "/FortranModules.json";
     Json::Value ltm;
     cmsys::ifstream ltmf(ltmn.c_str(), std::ios::in | std::ios::binary);
     Json::Reader reader;
     if (ltmf && !reader.parse(ltmf, ltm, false)) {
       cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse ",
-                           di->c_str(),
+                           linked_target_dir.c_str(),
                            reader.getFormattedErrorMessages().c_str());
       return false;
     }
@@ -1783,21 +1734,18 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
   // We do this after loading the modules provided by linked targets
   // in case we have one of the same name that must be preferred.
   Json::Value tm = Json::objectValue;
-  for (std::vector<cmFortranObjectInfo>::iterator oi = objects.begin();
-       oi != objects.end(); ++oi) {
-    for (std::vector<std::string>::iterator i = oi->Provides.begin();
-         i != oi->Provides.end(); ++i) {
-      std::string const mod = module_dir + *i + ".mod";
-      mod_files[*i] = mod;
-      tm[*i] = mod;
+  for (cmFortranObjectInfo const& object : objects) {
+    for (std::string const& p : object.Provides) {
+      std::string const mod = module_dir + p + ".mod";
+      mod_files[p] = mod;
+      tm[p] = mod;
     }
   }
 
   cmGeneratedFileStream ddf(arg_dd.c_str());
   ddf << "ninja_dyndep_version = 1.0\n";
 
-  for (std::vector<cmFortranObjectInfo>::iterator oi = objects.begin();
-       oi != objects.end(); ++oi) {
+  for (cmFortranObjectInfo const& object : objects) {
     std::string const ddComment;
     std::string const ddRule = "dyndep";
     cmNinjaDeps ddOutputs;
@@ -1807,19 +1755,17 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
     cmNinjaDeps ddOrderOnlyDeps;
     cmNinjaVars ddVars;
 
-    ddOutputs.push_back(oi->Object);
-    for (std::vector<std::string>::iterator i = oi->Provides.begin();
-         i != oi->Provides.end(); ++i) {
-      ddImplicitOuts.push_back(this->ConvertToNinjaPath(mod_files[*i]));
+    ddOutputs.push_back(object.Object);
+    for (std::string const& p : object.Provides) {
+      ddImplicitOuts.push_back(this->ConvertToNinjaPath(mod_files[p]));
     }
-    for (std::vector<std::string>::iterator i = oi->Requires.begin();
-         i != oi->Requires.end(); ++i) {
-      std::map<std::string, std::string>::iterator m = mod_files.find(*i);
+    for (std::string const& r : object.Requires) {
+      std::map<std::string, std::string>::iterator m = mod_files.find(r);
       if (m != mod_files.end()) {
         ddImplicitDeps.push_back(this->ConvertToNinjaPath(m->second));
       }
     }
-    if (!oi->Provides.empty()) {
+    if (!object.Provides.empty()) {
       ddVars["restat"] = "1";
     }
 
@@ -1846,9 +1792,7 @@ int cmcmd_cmake_ninja_dyndep(std::vector<std::string>::const_iterator argBeg,
   std::string arg_dd;
   std::string arg_tdi;
   std::vector<std::string> arg_ddis;
-  for (std::vector<std::string>::const_iterator a = arg_full.begin();
-       a != arg_full.end(); ++a) {
-    std::string const& arg = *a;
+  for (std::string const& arg : arg_full) {
     if (cmHasLiteralPrefix(arg, "--tdi=")) {
       arg_tdi = arg.substr(6);
     } else if (cmHasLiteralPrefix(arg, "--dd=")) {
@@ -1895,9 +1839,8 @@ int cmcmd_cmake_ninja_dyndep(std::vector<std::string>::const_iterator argBeg,
   std::vector<std::string> linked_target_dirs;
   Json::Value const& tdi_linked_target_dirs = tdi["linked-target-dirs"];
   if (tdi_linked_target_dirs.isArray()) {
-    for (Json::Value::const_iterator i = tdi_linked_target_dirs.begin();
-         i != tdi_linked_target_dirs.end(); ++i) {
-      linked_target_dirs.push_back(i->asString());
+    for (auto const& tdi_linked_target_dir : tdi_linked_target_dirs) {
+      linked_target_dirs.push_back(tdi_linked_target_dir.asString());
     }
   }
 

+ 58 - 93
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -50,12 +50,11 @@ void cmGlobalUnixMakefileGenerator3::EnableLanguage(
   std::vector<std::string> const& languages, cmMakefile* mf, bool optional)
 {
   this->cmGlobalGenerator::EnableLanguage(languages, mf, optional);
-  for (std::vector<std::string>::const_iterator l = languages.begin();
-       l != languages.end(); ++l) {
-    if (*l == "NONE") {
+  for (std::string const& language : languages) {
+    if (language == "NONE") {
       continue;
     }
-    this->ResolveLanguageCompiler(*l, mf, optional);
+    this->ResolveLanguageCompiler(language, mf, optional);
   }
 }
 
@@ -130,9 +129,8 @@ void cmGlobalUnixMakefileGenerator3::Generate()
 
   // initialize progress
   unsigned long total = 0;
-  for (ProgressMapType::const_iterator pmi = this->ProgressMap.begin();
-       pmi != this->ProgressMap.end(); ++pmi) {
-    total += pmi->second.NumberOfActions;
+  for (auto const& pmi : this->ProgressMap) {
+    total += pmi.second.NumberOfActions;
   }
 
   // write each target's progress.make this loop is done twice. Bascially the
@@ -143,12 +141,10 @@ void cmGlobalUnixMakefileGenerator3::Generate()
   // well. This is because the all targets require more information that is
   // computed in the first loop.
   unsigned long current = 0;
-  for (ProgressMapType::iterator pmi = this->ProgressMap.begin();
-       pmi != this->ProgressMap.end(); ++pmi) {
-    pmi->second.WriteProgressVariables(total, current);
+  for (auto& pmi : this->ProgressMap) {
+    pmi.second.WriteProgressVariables(total, current);
   }
-  for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) {
-    cmLocalGenerator* lg = this->LocalGenerators[i];
+  for (cmLocalGenerator* lg : this->LocalGenerators) {
     std::string markFileName = lg->GetCurrentBinaryDirectory();
     markFileName += "/";
     markFileName += cmake::GetCMakeFilesDirectory();
@@ -250,9 +246,8 @@ void cmGlobalUnixMakefileGenerator3::WriteMainMakefile2()
   lg->WriteSpecialTargetsTop(makefileStream);
 
   // write the target convenience rules
-  unsigned int i;
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    lg = static_cast<cmLocalUnixMakefileGenerator3*>(this->LocalGenerators[i]);
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    lg = static_cast<cmLocalUnixMakefileGenerator3*>(localGen);
     this->WriteConvenienceRules2(makefileStream, lg);
   }
 
@@ -292,8 +287,8 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile()
 
   // for each cmMakefile get its list of dependencies
   std::vector<std::string> lfiles;
-  for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) {
-    lg = static_cast<cmLocalUnixMakefileGenerator3*>(this->LocalGenerators[i]);
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    lg = static_cast<cmLocalUnixMakefileGenerator3*>(localGen);
 
     // Get the list of files contributing to this generation step.
     lfiles.insert(lfiles.end(), lg->GetMakefile()->GetListFiles().begin(),
@@ -316,9 +311,8 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile()
     << "# The top level Makefile was generated from the following files:\n"
     << "set(CMAKE_MAKEFILE_DEPENDS\n"
     << "  \"CMakeCache.txt\"\n";
-  for (std::vector<std::string>::const_iterator i = lfiles.begin();
-       i != lfiles.end(); ++i) {
-    cmakefileStream << "  \"" << lg->ConvertToRelativePath(currentBinDir, *i)
+  for (std::string const& f : lfiles) {
+    cmakefileStream << "  \"" << lg->ConvertToRelativePath(currentBinDir, f)
                     << "\"\n";
   }
   cmakefileStream << "  )\n\n";
@@ -346,17 +340,15 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile()
                     << "set(CMAKE_MAKEFILE_PRODUCTS\n";
     const std::vector<std::string>& outfiles =
       lg->GetMakefile()->GetOutputFiles();
-    for (std::vector<std::string>::const_iterator k = outfiles.begin();
-         k != outfiles.end(); ++k) {
-      cmakefileStream << "  \"" << lg->ConvertToRelativePath(binDir, *k)
+    for (std::string const& outfile : outfiles) {
+      cmakefileStream << "  \"" << lg->ConvertToRelativePath(binDir, outfile)
                       << "\"\n";
     }
 
     // add in all the directory information files
     std::string tmpStr;
-    for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) {
-      lg =
-        static_cast<cmLocalUnixMakefileGenerator3*>(this->LocalGenerators[i]);
+    for (cmLocalGenerator* localGen : this->LocalGenerators) {
+      lg = static_cast<cmLocalUnixMakefileGenerator3*>(localGen);
       tmpStr = lg->GetCurrentBinaryDirectory();
       tmpStr += cmake::GetCMakeFilesDirectory();
       tmpStr += "/CMakeDirectoryInformation.cmake";
@@ -379,19 +371,18 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefileLanguageRules(
   // now list all the target info files
   cmakefileStream << "# Dependency information for all targets:\n";
   cmakefileStream << "set(CMAKE_DEPEND_INFO_FILES\n";
-  for (unsigned int i = 0; i < lGenerators.size(); ++i) {
-    lg = static_cast<cmLocalUnixMakefileGenerator3*>(lGenerators[i]);
+  for (cmLocalGenerator* lGenerator : lGenerators) {
+    lg = static_cast<cmLocalUnixMakefileGenerator3*>(lGenerator);
     // for all of out targets
     const std::vector<cmGeneratorTarget*>& tgts = lg->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator l = tgts.begin();
-         l != tgts.end(); l++) {
-      if (((*l)->GetType() == cmStateEnums::EXECUTABLE) ||
-          ((*l)->GetType() == cmStateEnums::STATIC_LIBRARY) ||
-          ((*l)->GetType() == cmStateEnums::SHARED_LIBRARY) ||
-          ((*l)->GetType() == cmStateEnums::MODULE_LIBRARY) ||
-          ((*l)->GetType() == cmStateEnums::OBJECT_LIBRARY) ||
-          ((*l)->GetType() == cmStateEnums::UTILITY)) {
-        cmGeneratorTarget* gt = *l;
+    for (cmGeneratorTarget* tgt : tgts) {
+      if ((tgt->GetType() == cmStateEnums::EXECUTABLE) ||
+          (tgt->GetType() == cmStateEnums::STATIC_LIBRARY) ||
+          (tgt->GetType() == cmStateEnums::SHARED_LIBRARY) ||
+          (tgt->GetType() == cmStateEnums::MODULE_LIBRARY) ||
+          (tgt->GetType() == cmStateEnums::OBJECT_LIBRARY) ||
+          (tgt->GetType() == cmStateEnums::UTILITY)) {
+        cmGeneratorTarget* gt = tgt;
         std::string tname = lg->GetRelativeTargetDirectory(gt);
         tname += "/DependInfo.cmake";
         cmSystemTools::ConvertToUnixSlashes(tname);
@@ -415,9 +406,7 @@ void cmGlobalUnixMakefileGenerator3::WriteDirectoryRule2(
   // for all targets in the directory.
   std::vector<std::string> depends;
   const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator l = targets.begin();
-       l != targets.end(); ++l) {
-    cmGeneratorTarget* gtarget = *l;
+  for (cmGeneratorTarget* gtarget : targets) {
     int type = gtarget->GetType();
     if ((type == cmStateEnums::EXECUTABLE) ||
         (type == cmStateEnums::STATIC_LIBRARY) ||
@@ -440,9 +429,8 @@ void cmGlobalUnixMakefileGenerator3::WriteDirectoryRule2(
   // The directory-level rule should depend on the directory-level
   // rules of the subdirectories.
   std::vector<cmStateSnapshot> children = lg->GetStateSnapshot().GetChildren();
-  for (std::vector<cmStateSnapshot>::const_iterator ci = children.begin();
-       ci != children.end(); ++ci) {
-    std::string subdir = ci->GetDirectory().GetCurrentBinary();
+  for (cmStateSnapshot const& c : children) {
+    std::string subdir = c.GetDirectory().GetCurrentBinary();
     subdir += "/";
     subdir += pass;
     depends.push_back(subdir);
@@ -542,15 +530,12 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules(
   depends.push_back("cmake_check_build_system");
 
   // write the target convenience rules
-  unsigned int i;
-  cmLocalUnixMakefileGenerator3* lg;
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    lg = static_cast<cmLocalUnixMakefileGenerator3*>(this->LocalGenerators[i]);
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    cmLocalUnixMakefileGenerator3* lg =
+      static_cast<cmLocalUnixMakefileGenerator3*>(localGen);
     // for each target Generate the rule files for each target.
     const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-         t != targets.end(); ++t) {
-      cmGeneratorTarget* gtarget = *t;
+    for (cmGeneratorTarget* gtarget : targets) {
       // Don't emit the same rule twice (e.g. two targets with the same
       // simple name)
       int type = gtarget->GetType();
@@ -630,9 +615,7 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2(
 
   // for each target Generate the rule files for each target.
   const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    cmGeneratorTarget* gtarget = *t;
+  for (cmGeneratorTarget* gtarget : targets) {
     int type = gtarget->GetType();
     std::string name = gtarget->GetName();
     if (!name.empty() && ((type == cmStateEnums::EXECUTABLE) ||
@@ -680,11 +663,10 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2(
       {
         std::ostringstream progressArg;
         const char* sep = "";
-        std::vector<unsigned long>& progFiles =
+        std::vector<unsigned long> const& progFiles =
           this->ProgressMap[gtarget].Marks;
-        for (std::vector<unsigned long>::iterator i = progFiles.begin();
-             i != progFiles.end(); ++i) {
-          progressArg << sep << *i;
+        for (unsigned long progFile : progFiles) {
+          progressArg << sep << progFile;
           sep = ",";
         }
         progress.Arg = progressArg.str();
@@ -803,15 +785,9 @@ void cmGlobalUnixMakefileGenerator3::InitializeProgressMarks()
 {
   this->DirectoryTargetsMap.clear();
   // Loop over all targets in all local generators.
-  for (std::vector<cmLocalGenerator*>::const_iterator lgi =
-         this->LocalGenerators.begin();
-       lgi != this->LocalGenerators.end(); ++lgi) {
-    cmLocalGenerator* lg = *lgi;
+  for (cmLocalGenerator* lg : this->LocalGenerators) {
     const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-         t != targets.end(); ++t) {
-      cmGeneratorTarget* gt = *t;
-
+    for (cmGeneratorTarget* gt : targets) {
       cmLocalGenerator* tlg = gt->GetLocalGenerator();
 
       if (gt->GetType() == cmStateEnums::INTERFACE_LIBRARY ||
@@ -835,9 +811,8 @@ void cmGlobalUnixMakefileGenerator3::InitializeProgressMarks()
         // target may still be included if it is a dependency of a
         // non-excluded target.
         TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt);
-        for (TargetDependSet::const_iterator ti = tgtdeps.begin();
-             ti != tgtdeps.end(); ++ti) {
-          targetSet.insert(*ti);
+        for (cmTargetDepend const& tgtdep : tgtdeps) {
+          targetSet.insert(tgtdep);
         }
       }
     }
@@ -851,12 +826,11 @@ size_t cmGlobalUnixMakefileGenerator3::CountProgressMarksInTarget(
   if (emitted.insert(target).second) {
     count = this->ProgressMap[target].Marks.size();
     TargetDependSet const& depends = this->GetTargetDirectDepends(target);
-    for (TargetDependSet::const_iterator di = depends.begin();
-         di != depends.end(); ++di) {
-      if ((*di)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+    for (cmTargetDepend const& depend : depends) {
+      if (depend->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
         continue;
       }
-      count += this->CountProgressMarksInTarget(*di, emitted);
+      count += this->CountProgressMarksInTarget(depend, emitted);
     }
   }
   return count;
@@ -869,9 +843,8 @@ size_t cmGlobalUnixMakefileGenerator3::CountProgressMarksInAll(
   std::set<cmGeneratorTarget const*> emitted;
   std::set<cmGeneratorTarget const*> const& targets =
     this->DirectoryTargetsMap[lg->GetStateSnapshot()];
-  for (std::set<cmGeneratorTarget const*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    count += this->CountProgressMarksInTarget(*t, emitted);
+  for (cmGeneratorTarget const* target : targets) {
+    count += this->CountProgressMarksInTarget(target, emitted);
   }
   return count;
 }
@@ -910,10 +883,9 @@ void cmGlobalUnixMakefileGenerator3::AppendGlobalTargetDepends(
   std::vector<std::string>& depends, cmGeneratorTarget* target)
 {
   TargetDependSet const& depends_set = this->GetTargetDirectDepends(target);
-  for (TargetDependSet::const_iterator i = depends_set.begin();
-       i != depends_set.end(); ++i) {
+  for (cmTargetDepend const& i : depends_set) {
     // Create the target-level dependency.
-    cmGeneratorTarget const* dep = *i;
+    cmGeneratorTarget const* dep = i;
     if (dep->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
@@ -943,20 +915,16 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule(
   std::set<std::string> emittedTargets;
 
   // for each local generator
-  unsigned int i;
-  cmLocalUnixMakefileGenerator3* lg2;
-  for (i = 0; i < this->LocalGenerators.size(); ++i) {
-    lg2 =
-      static_cast<cmLocalUnixMakefileGenerator3*>(this->LocalGenerators[i]);
+  for (cmLocalGenerator* localGen : this->LocalGenerators) {
+    cmLocalUnixMakefileGenerator3* lg2 =
+      static_cast<cmLocalUnixMakefileGenerator3*>(localGen);
     // for the passed in makefile or if this is the top Makefile wripte out
     // the targets
     if (lg2 == lg || lg->IsRootMakefile()) {
       // for each target Generate the rule files for each target.
       const std::vector<cmGeneratorTarget*>& targets =
         lg2->GetGeneratorTargets();
-      for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-           t != targets.end(); ++t) {
-        cmGeneratorTarget* target = *t;
+      for (cmGeneratorTarget* target : targets) {
         cmStateEnums::TargetType type = target->GetType();
         if ((type == cmStateEnums::EXECUTABLE) ||
             (type == cmStateEnums::STATIC_LIBRARY) ||
@@ -975,11 +943,9 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule(
       }
     }
   }
-  std::vector<std::string> const& localHelp = lg->GetLocalHelp();
-  for (std::vector<std::string>::const_iterator o = localHelp.begin();
-       o != localHelp.end(); ++o) {
+  for (std::string const& o : lg->GetLocalHelp()) {
     path = "... ";
-    path += *o;
+    path += o;
     lg->AppendEcho(commands, path);
   }
   lg->WriteMakeRule(ruleFileStream, "Help Target", "help", no_depends,
@@ -994,10 +960,9 @@ bool cmGlobalUnixMakefileGenerator3::NeedRequiresStep(
   target->GetLanguages(
     languages,
     target->Target->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-  for (std::set<std::string>::const_iterator l = languages.begin();
-       l != languages.end(); ++l) {
+  for (std::string const& l : languages) {
     std::string var = "CMAKE_NEEDS_REQUIRES_STEP_";
-    var += *l;
+    var += l;
     var += "_FLAG";
     if (target->Target->GetMakefile()->GetDefinition(var)) {
       return true;

+ 40 - 69
Source/cmGraphVizWriter.cxx

@@ -122,10 +122,7 @@ void cmGraphVizWriter::ReadSettings(const char* settingsFileName,
     std::vector<std::string> ignoreTargetsRegExVector;
     cmSystemTools::ExpandListArgument(ignoreTargetsRegexes,
                                       ignoreTargetsRegExVector);
-    for (std::vector<std::string>::const_iterator itvIt =
-           ignoreTargetsRegExVector.begin();
-         itvIt != ignoreTargetsRegExVector.end(); ++itvIt) {
-      std::string currentRegexString(*itvIt);
+    for (std::string const& currentRegexString : ignoreTargetsRegExVector) {
       cmsys::RegularExpression currentRegex;
       if (!currentRegex.compile(currentRegexString.c_str())) {
         std::cerr << "Could not compile bad regex \"" << currentRegexString
@@ -146,20 +143,18 @@ void cmGraphVizWriter::WriteTargetDependersFiles(const char* fileName)
 
   this->CollectTargetsAndLibs();
 
-  for (std::map<std::string, const cmGeneratorTarget*>::const_iterator ptrIt =
-         this->TargetPtrs.begin();
-       ptrIt != this->TargetPtrs.end(); ++ptrIt) {
-    if (ptrIt->second == nullptr) {
+  for (auto const& ptr : this->TargetPtrs) {
+    if (ptr.second == nullptr) {
       continue;
     }
 
-    if (!this->GenerateForTargetType(ptrIt->second->GetType())) {
+    if (!this->GenerateForTargetType(ptr.second->GetType())) {
       continue;
     }
 
     std::string currentFilename = fileName;
     currentFilename += ".";
-    currentFilename += ptrIt->first;
+    currentFilename += ptr.first;
     currentFilename += ".dependers";
 
     cmGeneratedFileStream str(currentFilename.c_str());
@@ -173,7 +168,7 @@ void cmGraphVizWriter::WriteTargetDependersFiles(const char* fileName)
     std::cout << "Writing " << currentFilename << "..." << std::endl;
     this->WriteHeader(str);
 
-    this->WriteDependerConnections(ptrIt->first, insertedNodes,
+    this->WriteDependerConnections(ptr.first, insertedNodes,
                                    insertedConnections, str);
 
     this->WriteFooter(str);
@@ -190,14 +185,12 @@ void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
 
   this->CollectTargetsAndLibs();
 
-  for (std::map<std::string, const cmGeneratorTarget*>::const_iterator ptrIt =
-         this->TargetPtrs.begin();
-       ptrIt != this->TargetPtrs.end(); ++ptrIt) {
-    if (ptrIt->second == nullptr) {
+  for (auto const& ptr : this->TargetPtrs) {
+    if (ptr.second == nullptr) {
       continue;
     }
 
-    if (!this->GenerateForTargetType(ptrIt->second->GetType())) {
+    if (!this->GenerateForTargetType(ptr.second->GetType())) {
       continue;
     }
 
@@ -206,7 +199,7 @@ void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
 
     std::string currentFilename = fileName;
     currentFilename += ".";
-    currentFilename += ptrIt->first;
+    currentFilename += ptr.first;
     cmGeneratedFileStream str(currentFilename.c_str());
     if (!str) {
       return;
@@ -215,8 +208,7 @@ void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
     std::cout << "Writing " << currentFilename << "..." << std::endl;
     this->WriteHeader(str);
 
-    this->WriteConnections(ptrIt->first, insertedNodes, insertedConnections,
-                           str);
+    this->WriteConnections(ptr.first, insertedNodes, insertedConnections, str);
     this->WriteFooter(str);
   }
 }
@@ -236,19 +228,16 @@ void cmGraphVizWriter::WriteGlobalFile(const char* fileName)
   std::set<std::string> insertedConnections;
   std::set<std::string> insertedNodes;
 
-  for (std::map<std::string, const cmGeneratorTarget*>::const_iterator ptrIt =
-         this->TargetPtrs.begin();
-       ptrIt != this->TargetPtrs.end(); ++ptrIt) {
-    if (ptrIt->second == nullptr) {
+  for (auto const& ptr : this->TargetPtrs) {
+    if (ptr.second == nullptr) {
       continue;
     }
 
-    if (!this->GenerateForTargetType(ptrIt->second->GetType())) {
+    if (!this->GenerateForTargetType(ptr.second->GetType())) {
       continue;
     }
 
-    this->WriteConnections(ptrIt->first, insertedNodes, insertedConnections,
-                           str);
+    this->WriteConnections(ptr.first, insertedNodes, insertedConnections, str);
   }
   this->WriteFooter(str);
 }
@@ -288,9 +277,8 @@ void cmGraphVizWriter::WriteConnections(
   const cmTarget::LinkLibraryVectorType* ll =
     &(targetPtrIt->second->Target->GetOriginalLinkLibraries());
 
-  for (cmTarget::LinkLibraryVectorType::const_iterator llit = ll->begin();
-       llit != ll->end(); ++llit) {
-    const char* libName = llit->first.c_str();
+  for (auto const& llit : *ll) {
+    const char* libName = llit.first.c_str();
     std::map<std::string, std::string>::const_iterator libNameIt =
       this->TargetNamesNodes.find(libName);
 
@@ -337,29 +325,26 @@ void cmGraphVizWriter::WriteDependerConnections(
   std::string myNodeName = this->TargetNamesNodes.find(targetName)->second;
 
   // now search who links against me
-  for (std::map<std::string, const cmGeneratorTarget*>::const_iterator
-         dependerIt = this->TargetPtrs.begin();
-       dependerIt != this->TargetPtrs.end(); ++dependerIt) {
-    if (dependerIt->second == nullptr) {
+  for (auto const& tptr : this->TargetPtrs) {
+    if (tptr.second == nullptr) {
       continue;
     }
 
-    if (!this->GenerateForTargetType(dependerIt->second->GetType())) {
+    if (!this->GenerateForTargetType(tptr.second->GetType())) {
       continue;
     }
 
     // Now we have a target, check whether it links against targetName.
     // If so, draw a connection, and then continue with dependers on that one.
     const cmTarget::LinkLibraryVectorType* ll =
-      &(dependerIt->second->Target->GetOriginalLinkLibraries());
+      &(tptr.second->Target->GetOriginalLinkLibraries());
 
-    for (cmTarget::LinkLibraryVectorType::const_iterator llit = ll->begin();
-         llit != ll->end(); ++llit) {
-      std::string libName = llit->first;
+    for (auto const& llit : *ll) {
+      std::string libName = llit.first;
       if (libName == targetName) {
         // So this target links against targetName.
         std::map<std::string, std::string>::const_iterator dependerNodeNameIt =
-          this->TargetNamesNodes.find(dependerIt->first);
+          this->TargetNamesNodes.find(tptr.first);
 
         if (dependerNodeNameIt != this->TargetNamesNodes.end()) {
           std::string connectionName = dependerNodeNameIt->second;
@@ -369,14 +354,12 @@ void cmGraphVizWriter::WriteDependerConnections(
           if (insertedConnections.find(connectionName) ==
               insertedConnections.end()) {
             insertedConnections.insert(connectionName);
-            this->WriteNode(dependerIt->first, dependerIt->second,
-                            insertedNodes, str);
+            this->WriteNode(tptr.first, tptr.second, insertedNodes, str);
 
             str << "    \"" << dependerNodeNameIt->second << "\" -> \""
                 << myNodeName << "\"";
-            str << " // " << targetName << " -> " << dependerIt->first
-                << std::endl;
-            this->WriteDependerConnections(dependerIt->first, insertedNodes,
+            str << " // " << targetName << " -> " << tptr.first << std::endl;
+            this->WriteDependerConnections(tptr.first, insertedNodes,
                                            insertedConnections, str);
           }
         }
@@ -416,14 +399,10 @@ int cmGraphVizWriter::CollectAllTargets()
 {
   int cnt = 0;
   // First pass get the list of all cmake targets
-  for (std::vector<cmLocalGenerator*>::const_iterator lit =
-         this->LocalGenerators.begin();
-       lit != this->LocalGenerators.end(); ++lit) {
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*lit)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator it = targets.begin();
-         it != targets.end(); ++it) {
-      const char* realTargetName = (*it)->GetName().c_str();
+  for (cmLocalGenerator* lg : this->LocalGenerators) {
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* target : targets) {
+      const char* realTargetName = target->GetName().c_str();
       if (this->IgnoreThisTarget(realTargetName)) {
         // Skip ignored targets
         continue;
@@ -432,7 +411,7 @@ int cmGraphVizWriter::CollectAllTargets()
       std::ostringstream ostr;
       ostr << this->GraphNodePrefix << cnt++;
       this->TargetNamesNodes[realTargetName] = ostr.str();
-      this->TargetPtrs[realTargetName] = *it;
+      this->TargetPtrs[realTargetName] = target;
     }
   }
 
@@ -442,23 +421,18 @@ int cmGraphVizWriter::CollectAllTargets()
 int cmGraphVizWriter::CollectAllExternalLibs(int cnt)
 {
   // Ok, now find all the stuff we link to that is not in cmake
-  for (std::vector<cmLocalGenerator*>::const_iterator lit =
-         this->LocalGenerators.begin();
-       lit != this->LocalGenerators.end(); ++lit) {
-    const std::vector<cmGeneratorTarget*>& targets =
-      (*lit)->GetGeneratorTargets();
-    for (std::vector<cmGeneratorTarget*>::const_iterator it = targets.begin();
-         it != targets.end(); ++it) {
-      const char* realTargetName = (*it)->GetName().c_str();
+  for (cmLocalGenerator* lg : this->LocalGenerators) {
+    const std::vector<cmGeneratorTarget*>& targets = lg->GetGeneratorTargets();
+    for (cmGeneratorTarget* target : targets) {
+      const char* realTargetName = target->GetName().c_str();
       if (this->IgnoreThisTarget(realTargetName)) {
         // Skip ignored targets
         continue;
       }
       const cmTarget::LinkLibraryVectorType* ll =
-        &((*it)->Target->GetOriginalLinkLibraries());
-      for (cmTarget::LinkLibraryVectorType::const_iterator llit = ll->begin();
-           llit != ll->end(); ++llit) {
-        const char* libName = llit->first.c_str();
+        &(target->Target->GetOriginalLinkLibraries());
+      for (auto const& llit : *ll) {
+        const char* libName = llit.first.c_str();
         if (this->IgnoreThisTarget(libName)) {
           // Skip ignored targets
           continue;
@@ -482,10 +456,7 @@ int cmGraphVizWriter::CollectAllExternalLibs(int cnt)
 
 bool cmGraphVizWriter::IgnoreThisTarget(const std::string& name)
 {
-  for (std::vector<cmsys::RegularExpression>::iterator itvIt =
-         this->TargetsToIgnoreRegex.begin();
-       itvIt != this->TargetsToIgnoreRegex.end(); ++itvIt) {
-    cmsys::RegularExpression& regEx = *itvIt;
+  for (cmsys::RegularExpression& regEx : this->TargetsToIgnoreRegex) {
     if (regEx.is_valid()) {
       if (regEx.find(name)) {
         return true;

+ 17 - 21
Source/cmIfCommand.cxx

@@ -15,10 +15,9 @@ static std::string cmIfCommandError(
   std::vector<cmExpandedCommandArgument> const& args)
 {
   std::string err = "given arguments:\n ";
-  for (std::vector<cmExpandedCommandArgument>::const_iterator i = args.begin();
-       i != args.end(); ++i) {
+  for (cmExpandedCommandArgument const& i : args) {
     err += " ";
-    err += cmOutputConverter::EscapeForCMake(i->GetValue());
+    err += cmOutputConverter::EscapeForCMake(i.GetValue());
   }
   err += "\n";
   return err;
@@ -45,21 +44,20 @@ bool cmIfFunctionBlocker::IsFunctionBlocked(const cmListFileFunction& lff,
       // execute the functions for the true parts of the if statement
       cmExecutionStatus status;
       int scopeDepth = 0;
-      for (unsigned int c = 0; c < this->Functions.size(); ++c) {
+      for (cmListFileFunction const& func : this->Functions) {
         // keep track of scope depth
-        if (!cmSystemTools::Strucmp(this->Functions[c].Name.c_str(), "if")) {
+        if (!cmSystemTools::Strucmp(func.Name.c_str(), "if")) {
           scopeDepth++;
         }
-        if (!cmSystemTools::Strucmp(this->Functions[c].Name.c_str(),
-                                    "endif")) {
+        if (!cmSystemTools::Strucmp(func.Name.c_str(), "endif")) {
           scopeDepth--;
         }
         // watch for our state change
         if (scopeDepth == 0 &&
-            !cmSystemTools::Strucmp(this->Functions[c].Name.c_str(), "else")) {
+            !cmSystemTools::Strucmp(func.Name.c_str(), "else")) {
 
           if (this->ElseSeen) {
-            cmListFileBacktrace bt = mf.GetBacktrace(this->Functions[c]);
+            cmListFileBacktrace bt = mf.GetBacktrace(func);
             mf.GetCMakeInstance()->IssueMessage(
               cmake::FATAL_ERROR,
               "A duplicate ELSE command was found inside an IF block.", bt);
@@ -74,13 +72,12 @@ bool cmIfFunctionBlocker::IsFunctionBlocked(const cmListFileFunction& lff,
           // if trace is enabled, print a (trivially) evaluated "else"
           // statement
           if (!this->IsBlocking && mf.GetCMakeInstance()->GetTrace()) {
-            mf.PrintCommandTrace(this->Functions[c]);
+            mf.PrintCommandTrace(func);
           }
         } else if (scopeDepth == 0 &&
-                   !cmSystemTools::Strucmp(this->Functions[c].Name.c_str(),
-                                           "elseif")) {
+                   !cmSystemTools::Strucmp(func.Name.c_str(), "elseif")) {
           if (this->ElseSeen) {
-            cmListFileBacktrace bt = mf.GetBacktrace(this->Functions[c]);
+            cmListFileBacktrace bt = mf.GetBacktrace(func);
             mf.GetCMakeInstance()->IssueMessage(
               cmake::FATAL_ERROR,
               "An ELSEIF command was found after an ELSE command.", bt);
@@ -93,23 +90,22 @@ bool cmIfFunctionBlocker::IsFunctionBlocked(const cmListFileFunction& lff,
           } else {
             // if trace is enabled, print the evaluated "elseif" statement
             if (mf.GetCMakeInstance()->GetTrace()) {
-              mf.PrintCommandTrace(this->Functions[c]);
+              mf.PrintCommandTrace(func);
             }
 
             std::string errorString;
 
             std::vector<cmExpandedCommandArgument> expandedArguments;
-            mf.ExpandArguments(this->Functions[c].Arguments,
-                               expandedArguments);
+            mf.ExpandArguments(func.Arguments, expandedArguments);
 
             cmake::MessageType messType;
 
             cmListFileContext conditionContext =
               cmListFileContext::FromCommandContext(
-                this->Functions[c], this->GetStartingContext().FilePath);
+                func, this->GetStartingContext().FilePath);
 
-            cmConditionEvaluator conditionEvaluator(
-              mf, conditionContext, mf.GetBacktrace(this->Functions[c]));
+            cmConditionEvaluator conditionEvaluator(mf, conditionContext,
+                                                    mf.GetBacktrace(func));
 
             bool isTrue = conditionEvaluator.IsTrue(expandedArguments,
                                                     errorString, messType);
@@ -117,7 +113,7 @@ bool cmIfFunctionBlocker::IsFunctionBlocked(const cmListFileFunction& lff,
             if (!errorString.empty()) {
               std::string err = cmIfCommandError(expandedArguments);
               err += errorString;
-              cmListFileBacktrace bt = mf.GetBacktrace(this->Functions[c]);
+              cmListFileBacktrace bt = mf.GetBacktrace(func);
               mf.GetCMakeInstance()->IssueMessage(messType, err, bt);
               if (messType == cmake::FATAL_ERROR) {
                 cmSystemTools::SetFatalErrorOccured();
@@ -135,7 +131,7 @@ bool cmIfFunctionBlocker::IsFunctionBlocked(const cmListFileFunction& lff,
         // should we execute?
         else if (!this->IsBlocking) {
           status.Clear();
-          mf.ExecuteCommand(this->Functions[c], status);
+          mf.ExecuteCommand(func, status);
           if (status.GetReturnInvoked()) {
             inStatus.SetReturnInvoked();
             return true;

+ 2 - 3
Source/cmIncludeExternalMSProjectCommand.cxx

@@ -91,9 +91,8 @@ bool cmIncludeExternalMSProjectCommand::InitialPass(
     if (!platformMapping.empty())
       target->SetProperty("VS_PLATFORM_MAPPING", platformMapping.c_str());
 
-    for (std::vector<std::string>::const_iterator it = depends.begin();
-         it != depends.end(); ++it) {
-      target->AddUtility(it->c_str());
+    for (std::string const& d : depends) {
+      target->AddUtility(d.c_str());
     }
   }
 #endif

+ 25 - 34
Source/cmInstallCommand.cxx

@@ -141,23 +141,23 @@ bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args)
   // Scan the args again, this time adding install generators each time we
   // encounter a SCRIPT or CODE arg:
   //
-  for (size_t i = 0; i < args.size(); ++i) {
-    if (args[i] == "SCRIPT") {
+  for (std::string const& arg : args) {
+    if (arg == "SCRIPT") {
       doing_script = true;
       doing_code = false;
-    } else if (args[i] == "CODE") {
+    } else if (arg == "CODE") {
       doing_script = false;
       doing_code = true;
-    } else if (args[i] == "COMPONENT") {
+    } else if (arg == "COMPONENT") {
       doing_script = false;
       doing_code = false;
     } else if (doing_script) {
       doing_script = false;
-      std::string script = args[i];
+      std::string script = arg;
       if (!cmSystemTools::FileIsFullPath(script.c_str())) {
         script = this->Makefile->GetCurrentSourceDirectory();
         script += "/";
-        script += args[i];
+        script += arg;
       }
       if (cmSystemTools::FileIsDirectory(script)) {
         this->SetError("given a directory as value of SCRIPT argument.");
@@ -167,7 +167,7 @@ bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args)
         script.c_str(), false, component.c_str(), exclude_from_all));
     } else if (doing_code) {
       doing_code = false;
-      std::string const& code = args[i];
+      std::string const& code = arg;
       this->Makefile->AddInstallGenerator(new cmInstallScriptGenerator(
         code.c_str(), true, component.c_str(), exclude_from_all));
     }
@@ -336,19 +336,16 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
     (this->Makefile->IsOn("WIN32") || this->Makefile->IsOn("CYGWIN") ||
      this->Makefile->IsOn("MINGW"));
 
-  for (std::vector<std::string>::const_iterator targetIt =
-         targetList.GetVector().begin();
-       targetIt != targetList.GetVector().end(); ++targetIt) {
+  for (std::string const& tgt : targetList.GetVector()) {
 
-    if (this->Makefile->IsAlias(*targetIt)) {
+    if (this->Makefile->IsAlias(tgt)) {
       std::ostringstream e;
-      e << "TARGETS given target \"" << (*targetIt) << "\" which is an alias.";
+      e << "TARGETS given target \"" << tgt << "\" which is an alias.";
       this->SetError(e.str());
       return false;
     }
     // Lookup this target in the current directory.
-    if (cmTarget* target =
-          this->Makefile->FindLocalNonAliasTarget(*targetIt)) {
+    if (cmTarget* target = this->Makefile->FindLocalNonAliasTarget(tgt)) {
       // Found the target.  Check its type.
       if (target->GetType() != cmStateEnums::EXECUTABLE &&
           target->GetType() != cmStateEnums::STATIC_LIBRARY &&
@@ -357,7 +354,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
           target->GetType() != cmStateEnums::OBJECT_LIBRARY &&
           target->GetType() != cmStateEnums::INTERFACE_LIBRARY) {
         std::ostringstream e;
-        e << "TARGETS given target \"" << (*targetIt)
+        e << "TARGETS given target \"" << tgt
           << "\" which is not an executable, library, or module.";
         this->SetError(e.str());
         return false;
@@ -367,7 +364,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
         if (!this->Makefile->GetGlobalGenerator()->HasKnownObjectFileLocation(
               &reason)) {
           std::ostringstream e;
-          e << "TARGETS given OBJECT library \"" << (*targetIt)
+          e << "TARGETS given OBJECT library \"" << tgt
             << "\" which may not be installed" << reason << ".";
           this->SetError(e.str());
           return false;
@@ -378,7 +375,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
     } else {
       // Did not find the target.
       std::ostringstream e;
-      e << "TARGETS given target \"" << (*targetIt)
+      e << "TARGETS given target \"" << tgt
         << "\" which does not exist in this directory.";
       this->SetError(e.str());
       return false;
@@ -398,10 +395,9 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
   bool installsResource = false;
 
   // Generate install script code to install the given targets.
-  for (std::vector<cmTarget*>::iterator ti = targets.begin();
-       ti != targets.end(); ++ti) {
+  for (cmTarget* ti : targets) {
     // Handle each target type.
-    cmTarget& target = *(*ti);
+    cmTarget& target = *ti;
     cmInstallTargetGenerator* archiveGenerator = nullptr;
     cmInstallTargetGenerator* libraryGenerator = nullptr;
     cmInstallTargetGenerator* runtimeGenerator = nullptr;
@@ -815,9 +811,8 @@ bool cmInstallCommand::HandleFilesMode(std::vector<std::string> const& args)
     this->Makefile->GetPolicyStatus(cmPolicies::CMP0062);
 
   cmGlobalGenerator* gg = this->Makefile->GetGlobalGenerator();
-  for (std::vector<std::string>::const_iterator fileIt = filesVector.begin();
-       fileIt != filesVector.end(); ++fileIt) {
-    if (gg->IsExportedTargetsFile(*fileIt)) {
+  for (std::string const& file : filesVector) {
+    if (gg->IsExportedTargetsFile(file)) {
       const char* modal = nullptr;
       std::ostringstream e;
       cmake::MessageType messageType = cmake::AUTHOR_WARNING;
@@ -835,8 +830,8 @@ bool cmInstallCommand::HandleFilesMode(std::vector<std::string> const& args)
           messageType = cmake::FATAL_ERROR;
       }
       if (modal) {
-        e << "The file\n  " << *fileIt << "\nwas generated by the export() "
-                                          "command.  It "
+        e << "The file\n  " << file << "\nwas generated by the export() "
+                                       "command.  It "
           << modal << " not be installed with the "
                       "install() command.  Use the install(EXPORT) mechanism "
                       "instead.  See the cmake-packages(7) manual for more.\n";
@@ -1339,10 +1334,7 @@ bool cmInstallCommand::HandleExportMode(std::vector<std::string> const& args)
   cmExportSet* exportSet =
     this->Makefile->GetGlobalGenerator()->GetExportSets()[exp.GetString()];
   if (exportOld.IsEnabled()) {
-    for (std::vector<cmTargetExport*>::const_iterator tei =
-           exportSet->GetTargetExports()->begin();
-         tei != exportSet->GetTargetExports()->end(); ++tei) {
-      cmTargetExport const* te = *tei;
+    for (cmTargetExport* te : *exportSet->GetTargetExports()) {
       cmTarget* tgt =
         this->Makefile->GetGlobalGenerator()->FindTarget(te->TargetName);
       const bool newCMP0022Behavior =
@@ -1379,20 +1371,19 @@ bool cmInstallCommand::MakeFilesFullPath(
   const char* modeName, const std::vector<std::string>& relFiles,
   std::vector<std::string>& absFiles)
 {
-  for (std::vector<std::string>::const_iterator fileIt = relFiles.begin();
-       fileIt != relFiles.end(); ++fileIt) {
-    std::string file = (*fileIt);
+  for (std::string const& relFile : relFiles) {
+    std::string file = relFile;
     std::string::size_type gpos = cmGeneratorExpression::Find(file);
     if (gpos != 0 && !cmSystemTools::FileIsFullPath(file.c_str())) {
       file = this->Makefile->GetCurrentSourceDirectory();
       file += "/";
-      file += *fileIt;
+      file += relFile;
     }
 
     // Make sure the file is not a directory.
     if (gpos == std::string::npos && cmSystemTools::FileIsDirectory(file)) {
       std::ostringstream e;
-      e << modeName << " given directory \"" << (*fileIt) << "\" to install.";
+      e << modeName << " given directory \"" << relFile << "\" to install.";
       this->SetError(e.str());
       return false;
     }

+ 2 - 4
Source/cmInstallCommandArguments.cxx

@@ -154,10 +154,8 @@ void cmInstallCommandArguments::Parse(const std::vector<std::string>* args,
 bool cmInstallCommandArguments::CheckPermissions()
 {
   this->PermissionsString = "";
-  for (std::vector<std::string>::const_iterator permIt =
-         this->Permissions.GetVector().begin();
-       permIt != this->Permissions.GetVector().end(); ++permIt) {
-    if (!this->CheckPermissions(*permIt, this->PermissionsString)) {
+  for (std::string const& perm : this->Permissions.GetVector()) {
+    if (!this->CheckPermissions(perm, this->PermissionsString)) {
       return false;
     }
   }

+ 5 - 7
Source/cmInstallDirectoryGenerator.cxx

@@ -62,19 +62,17 @@ void cmInstallDirectoryGenerator::GenerateScriptForConfig(
 {
   std::vector<std::string> dirs;
   cmGeneratorExpression ge;
-  for (std::vector<std::string>::const_iterator i = this->Directories.begin();
-       i != this->Directories.end(); ++i) {
-    CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = ge.Parse(*i);
+  for (std::string const& d : this->Directories) {
+    CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = ge.Parse(d);
     cmSystemTools::ExpandListArgument(
       cge->Evaluate(this->LocalGenerator, config), dirs);
   }
 
   // Make sure all dirs have absolute paths.
   cmMakefile const& mf = *this->LocalGenerator->GetMakefile();
-  for (std::vector<std::string>::iterator i = dirs.begin(); i != dirs.end();
-       ++i) {
-    if (!cmSystemTools::FileIsFullPath(i->c_str())) {
-      *i = std::string(mf.GetCurrentSourceDirectory()) + "/" + *i;
+  for (std::string& d : dirs) {
+    if (!cmSystemTools::FileIsFullPath(d.c_str())) {
+      d = std::string(mf.GetCurrentSourceDirectory()) + "/" + d;
     }
   }
 

+ 8 - 15
Source/cmInstallExportGenerator.cxx

@@ -3,7 +3,6 @@
 #include "cmInstallExportGenerator.h"
 
 #include <algorithm>
-#include <map>
 #include <sstream>
 #include <utility>
 
@@ -111,11 +110,9 @@ size_t cmInstallExportGenerator::GetMaxConfigLength() const
       len = this->ConfigurationName.size();
     }
   } else {
-    for (std::vector<std::string>::const_iterator ci =
-           this->ConfigurationTypes->begin();
-         ci != this->ConfigurationTypes->end(); ++ci) {
-      if (ci->size() > len) {
-        len = ci->size();
+    for (std::string const& c : *this->ConfigurationTypes) {
+      if (c.size() > len) {
+        len = c.size();
       }
     }
   }
@@ -153,10 +150,8 @@ void cmInstallExportGenerator::GenerateScript(std::ostream& os)
       this->EFGen->AddConfiguration("");
     }
   } else {
-    for (std::vector<std::string>::const_iterator ci =
-           this->ConfigurationTypes->begin();
-         ci != this->ConfigurationTypes->end(); ++ci) {
-      this->EFGen->AddConfiguration(*ci);
+    for (std::string const& c : *this->ConfigurationTypes) {
+      this->EFGen->AddConfiguration(c);
     }
   }
   this->EFGen->GenerateImportFile();
@@ -174,11 +169,9 @@ void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
   // Now create a configuration-specific install rule for the import
   // file of each configuration.
   std::vector<std::string> files;
-  for (std::map<std::string, std::string>::const_iterator i =
-         this->EFGen->GetConfigImportFiles().begin();
-       i != this->EFGen->GetConfigImportFiles().end(); ++i) {
-    files.push_back(i->second);
-    std::string config_test = this->CreateConfigTest(i->first);
+  for (auto const& i : this->EFGen->GetConfigImportFiles()) {
+    files.push_back(i.second);
+    std::string config_test = this->CreateConfigTest(i.first);
     os << indent << "if(" << config_test << ")\n";
     this->AddInstallRule(os, this->Destination, cmInstallType_FILES, files,
                          false, this->FilePermissions.c_str(), nullptr,

+ 2 - 3
Source/cmInstallFilesGenerator.cxx

@@ -81,9 +81,8 @@ void cmInstallFilesGenerator::GenerateScriptForConfig(
 {
   std::vector<std::string> files;
   cmGeneratorExpression ge;
-  for (std::vector<std::string>::const_iterator i = this->Files.begin();
-       i != this->Files.end(); ++i) {
-    CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = ge.Parse(*i);
+  for (std::string const& f : this->Files) {
+    CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = ge.Parse(f);
     cmSystemTools::ExpandListArgument(
       cge->Evaluate(this->LocalGenerator, config), files);
   }

+ 2 - 3
Source/cmInstallGenerator.cxx

@@ -113,9 +113,8 @@ void cmInstallGenerator::AddInstallRule(
   if (files.size() == 1) {
     os << " \"" << files[0] << "\"";
   } else {
-    for (std::vector<std::string>::const_iterator fi = files.begin();
-         fi != files.end(); ++fi) {
-      os << "\n" << indent << "  \"" << *fi << "\"";
+    for (std::string const& f : files) {
+      os << "\n" << indent << "  \"" << f << "\"";
     }
     os << "\n" << indent << " ";
     if (!(literal_args && *literal_args)) {

+ 11 - 22
Source/cmInstallTargetGenerator.cxx

@@ -362,9 +362,8 @@ void cmInstallTargetGenerator::GetInstallObjectNames(
   std::string const& config, std::vector<std::string>& objects) const
 {
   this->Target->GetTargetObjectNames(config, objects);
-  for (std::vector<std::string>::iterator i = objects.begin();
-       i != objects.end(); ++i) {
-    *i = computeInstallObjectDir(this->Target, config) + "/" + *i;
+  for (std::string& o : objects) {
+    o = computeInstallObjectDir(this->Target, config) + "/" + o;
   }
 }
 
@@ -476,9 +475,8 @@ void cmInstallTargetGenerator::AddTweak(std::ostream& os, Indent indent,
     if (!tws.empty()) {
       Indent indent2 = indent.Next().Next();
       os << indent << "foreach(file\n";
-      for (std::vector<std::string>::const_iterator i = files.begin();
-           i != files.end(); ++i) {
-        os << indent2 << "\"" << this->GetDestDirPath(*i) << "\"\n";
+      for (std::string const& f : files) {
+        os << indent2 << "\"" << this->GetDestDirPath(f) << "\"\n";
       }
       os << indent2 << ")\n";
       os << tws;
@@ -546,11 +544,7 @@ void cmInstallTargetGenerator::AddInstallNamePatchRule(
         this->Target->GetLinkInformation(config)) {
     std::set<cmGeneratorTarget const*> const& sharedLibs =
       cli->GetSharedLibrariesLinked();
-    for (std::set<cmGeneratorTarget const*>::const_iterator j =
-           sharedLibs.begin();
-         j != sharedLibs.end(); ++j) {
-      cmGeneratorTarget const* tgt = *j;
-
+    for (cmGeneratorTarget const* tgt : sharedLibs) {
       // The install_name of an imported target does not change.
       if (tgt->IsImported()) {
         continue;
@@ -609,12 +603,9 @@ void cmInstallTargetGenerator::AddInstallNamePatchRule(
     if (!new_id.empty()) {
       os << "\n" << indent << "  -id \"" << new_id << "\"";
     }
-    for (std::map<std::string, std::string>::const_iterator i =
-           install_name_remap.begin();
-         i != install_name_remap.end(); ++i) {
+    for (auto const& i : install_name_remap) {
       os << "\n"
-         << indent << "  -change \"" << i->first << "\" \"" << i->second
-         << "\"";
+         << indent << "  -change \"" << i.first << "\" \"" << i.second << "\"";
     }
     os << "\n" << indent << "  \"" << toDestDirPath << "\")\n";
   }
@@ -702,10 +693,9 @@ void cmInstallTargetGenerator::AddChrpathPatchRule(
       // Note: These paths are kept unique to avoid
       // install_name_tool corruption.
       std::set<std::string> runpaths;
-      for (std::vector<std::string>::const_iterator i = oldRuntimeDirs.begin();
-           i != oldRuntimeDirs.end(); ++i) {
+      for (std::string const& i : oldRuntimeDirs) {
         std::string runpath =
-          mf->GetGlobalGenerator()->ExpandCFGIntDir(*i, config);
+          mf->GetGlobalGenerator()->ExpandCFGIntDir(i, config);
 
         if (runpaths.find(runpath) == runpaths.end()) {
           runpaths.insert(runpath);
@@ -717,10 +707,9 @@ void cmInstallTargetGenerator::AddChrpathPatchRule(
       }
 
       runpaths.clear();
-      for (std::vector<std::string>::const_iterator i = newRuntimeDirs.begin();
-           i != newRuntimeDirs.end(); ++i) {
+      for (std::string const& i : newRuntimeDirs) {
         std::string runpath =
-          mf->GetGlobalGenerator()->ExpandCFGIntDir(*i, config);
+          mf->GetGlobalGenerator()->ExpandCFGIntDir(i, config);
 
         if (runpaths.find(runpath) == runpaths.end()) {
           os << indent << "execute_process(COMMAND " << installNameTool

+ 2 - 4
Source/cmInstalledFile.cxx

@@ -90,11 +90,9 @@ bool cmInstalledFile::GetProperty(const std::string& prop,
   std::string output;
   std::string separator;
 
-  for (ExpressionVectorType::const_iterator j =
-         property.ValueExpressions.begin();
-       j != property.ValueExpressions.end(); ++j) {
+  for (auto ve : property.ValueExpressions) {
     output += separator;
-    output += (*j)->GetInput();
+    output += ve->GetInput();
     separator = ";";
   }
 

+ 2 - 3
Source/cmLinkDirectoriesCommand.cxx

@@ -19,9 +19,8 @@ bool cmLinkDirectoriesCommand::InitialPass(
     return true;
   }
 
-  for (std::vector<std::string>::const_iterator i = args.begin();
-       i != args.end(); ++i) {
-    this->AddLinkDir(*i);
+  for (std::string const& i : args) {
+    this->AddLinkDir(i);
   }
   return true;
 }

+ 12 - 16
Source/cmLinkLineComputer.cxx

@@ -59,17 +59,16 @@ std::string cmLinkLineComputer::ComputeLinkLibs(cmComputeLinkInformation& cli)
   std::string linkLibs;
   typedef cmComputeLinkInformation::ItemVector ItemVector;
   ItemVector const& items = cli.GetItems();
-  for (ItemVector::const_iterator li = items.begin(); li != items.end();
-       ++li) {
-    if (li->Target &&
-        li->Target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+  for (auto const& item : items) {
+    if (item.Target &&
+        item.Target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
-    if (li->IsPath) {
+    if (item.IsPath) {
       linkLibs +=
-        this->ConvertToOutputFormat(this->ConvertToLinkReference(li->Value));
+        this->ConvertToOutputFormat(this->ConvertToLinkReference(item.Value));
     } else {
-      linkLibs += li->Value;
+      linkLibs += item.Value;
     }
     linkLibs += " ";
   }
@@ -103,9 +102,8 @@ std::string cmLinkLineComputer::ComputeLinkPath(
 {
   std::string linkPath;
   std::vector<std::string> const& libDirs = cli.GetDirectories();
-  for (std::vector<std::string>::const_iterator libDir = libDirs.begin();
-       libDir != libDirs.end(); ++libDir) {
-    std::string libpath = this->ConvertToOutputForExisting(*libDir);
+  for (std::string const& libDir : libDirs) {
+    std::string libpath = this->ConvertToOutputForExisting(libDir);
     linkPath += " " + libPathFlag;
     linkPath += libpath;
     linkPath += libPathTerminator;
@@ -123,10 +121,9 @@ std::string cmLinkLineComputer::ComputeRPath(cmComputeLinkInformation& cli)
     std::vector<std::string> runtimeDirs;
     cli.GetRPath(runtimeDirs, this->Relink);
 
-    for (std::vector<std::string>::iterator ri = runtimeDirs.begin();
-         ri != runtimeDirs.end(); ++ri) {
+    for (std::string const& rd : runtimeDirs) {
       rpath += cli.GetRuntimeFlag();
-      rpath += this->ConvertToOutputFormat(*ri);
+      rpath += this->ConvertToOutputFormat(rd);
       rpath += " ";
     }
   } else {
@@ -150,10 +147,9 @@ std::string cmLinkLineComputer::ComputeFrameworkPath(
   std::string frameworkPath;
   if (!fwSearchFlag.empty()) {
     std::vector<std::string> const& fwDirs = cli.GetFrameworkPaths();
-    for (std::vector<std::string>::const_iterator fdi = fwDirs.begin();
-         fdi != fwDirs.end(); ++fdi) {
+    for (std::string const& fd : fwDirs) {
       frameworkPath += fwSearchFlag;
-      frameworkPath += this->ConvertToOutputFormat(*fdi);
+      frameworkPath += this->ConvertToOutputFormat(fd);
       frameworkPath += " ";
     }
   }

+ 8 - 10
Source/cmLinkLineDeviceComputer.cxx

@@ -5,7 +5,6 @@
 
 #include <set>
 #include <sstream>
-#include <vector>
 
 #include "cmComputeLinkInformation.h"
 #include "cmGeneratorTarget.h"
@@ -32,14 +31,13 @@ std::string cmLinkLineDeviceComputer::ComputeLinkLibraries(
   typedef cmComputeLinkInformation::ItemVector ItemVector;
   ItemVector const& items = cli.GetItems();
   std::string config = cli.GetConfig();
-  for (ItemVector::const_iterator li = items.begin(); li != items.end();
-       ++li) {
-    if (!li->Target) {
+  for (auto const& item : items) {
+    if (!item.Target) {
       continue;
     }
 
     bool skippable = false;
-    switch (li->Target->GetType()) {
+    switch (item.Target->GetType()) {
       case cmStateEnums::SHARED_LIBRARY:
       case cmStateEnums::MODULE_LIBRARY:
       case cmStateEnums::INTERFACE_LIBRARY:
@@ -49,7 +47,7 @@ std::string cmLinkLineDeviceComputer::ComputeLinkLibraries(
         // If a static library is resolving its device linking, it should
         // be removed for other device linking
         skippable =
-          li->Target->GetPropertyAsBool("CUDA_RESOLVE_DEVICE_SYMBOLS");
+          item.Target->GetPropertyAsBool("CUDA_RESOLVE_DEVICE_SYMBOLS");
         break;
       default:
         break;
@@ -60,16 +58,16 @@ std::string cmLinkLineDeviceComputer::ComputeLinkLibraries(
     }
 
     std::set<std::string> langs;
-    li->Target->GetLanguages(langs, config);
+    item.Target->GetLanguages(langs, config);
     if (langs.count("CUDA") == 0) {
       continue;
     }
 
-    if (li->IsPath) {
+    if (item.IsPath) {
       fout << this->ConvertToOutputFormat(
-        this->ConvertToLinkReference(li->Value));
+        this->ConvertToLinkReference(item.Value));
     } else {
-      fout << li->Value;
+      fout << item.Value;
     }
     fout << " ";
   }

+ 11 - 12
Source/cmLoadCacheCommand.cxx

@@ -27,17 +27,16 @@ bool cmLoadCacheCommand::InitialPass(std::vector<std::string> const& args,
   // If this set is empty, all cache entries are brought in
   // and they can not be overridden.
   bool excludeFiles = false;
-  unsigned int i;
   std::set<std::string> excludes;
 
-  for (i = 0; i < args.size(); i++) {
+  for (std::string const& arg : args) {
     if (excludeFiles) {
-      excludes.insert(args[i]);
+      excludes.insert(arg);
     }
-    if (args[i] == "EXCLUDE") {
+    if (arg == "EXCLUDE") {
       excludeFiles = true;
     }
-    if (excludeFiles && (args[i] == "INCLUDE_INTERNALS")) {
+    if (excludeFiles && (arg == "INCLUDE_INTERNALS")) {
       break;
     }
   }
@@ -48,25 +47,25 @@ bool cmLoadCacheCommand::InitialPass(std::vector<std::string> const& args,
   bool includeFiles = false;
   std::set<std::string> includes;
 
-  for (i = 0; i < args.size(); i++) {
+  for (std::string const& arg : args) {
     if (includeFiles) {
-      includes.insert(args[i]);
+      includes.insert(arg);
     }
-    if (args[i] == "INCLUDE_INTERNALS") {
+    if (arg == "INCLUDE_INTERNALS") {
       includeFiles = true;
     }
-    if (includeFiles && (args[i] == "EXCLUDE")) {
+    if (includeFiles && (arg == "EXCLUDE")) {
       break;
     }
   }
 
   // Loop over each build directory listed in the arguments.  Each
   // directory has a cache file.
-  for (i = 0; i < args.size(); i++) {
-    if ((args[i] == "EXCLUDE") || (args[i] == "INCLUDE_INTERNALS")) {
+  for (std::string const& arg : args) {
+    if ((arg == "EXCLUDE") || (arg == "INCLUDE_INTERNALS")) {
       break;
     }
-    this->Makefile->GetCMakeInstance()->LoadCache(args[i], false, excludes,
+    this->Makefile->GetCMakeInstance()->LoadCache(arg, false, excludes,
                                                   includes);
   }
 

+ 2 - 3
Source/cmLocalCommonGenerator.cxx

@@ -67,10 +67,9 @@ std::string cmLocalCommonGenerator::GetTargetFortranFlags(
         this->Makefile->GetDefinition("CMAKE_Fortran_MODPATH_FLAG")) {
     std::vector<std::string> includes;
     this->GetIncludeDirectories(includes, target, "C", config);
-    for (std::vector<std::string>::const_iterator idi = includes.begin();
-         idi != includes.end(); ++idi) {
+    for (std::string const& id : includes) {
       std::string flg = modpath_flag;
-      flg += this->ConvertToOutputFormat(*idi, cmOutputConverter::SHELL);
+      flg += this->ConvertToOutputFormat(id, cmOutputConverter::SHELL);
       this->AppendFlags(flags, flg);
     }
   }

+ 105 - 145
Source/cmLocalGenerator.cxx

@@ -102,9 +102,7 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, cmMakefile* makefile)
     this->LinkerSysroot = this->Makefile->GetSafeDefinition("CMAKE_SYSROOT");
   }
 
-  for (std::vector<std::string>::iterator i = enabledLanguages.begin();
-       i != enabledLanguages.end(); ++i) {
-    std::string const& lang = *i;
+  for (std::string const& lang : enabledLanguages) {
     if (lang == "NONE") {
       continue;
     }
@@ -209,18 +207,16 @@ void cmLocalGenerator::TraceDependencies()
   if (configs.empty()) {
     configs.push_back("");
   }
-  for (std::vector<std::string>::const_iterator ci = configs.begin();
-       ci != configs.end(); ++ci) {
-    this->GlobalGenerator->CreateEvaluationSourceFiles(*ci);
+  for (std::string const& c : configs) {
+    this->GlobalGenerator->CreateEvaluationSourceFiles(c);
   }
   // Generate the rule files for each target.
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    if ((*t)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+  for (cmGeneratorTarget* target : targets) {
+    if (target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
-    (*t)->TraceDependencies();
+    target->TraceDependencies();
   }
 }
 
@@ -264,26 +260,24 @@ void cmLocalGenerator::GenerateTestFiles()
   if (testIncludeFiles) {
     std::vector<std::string> includesList;
     cmSystemTools::ExpandListArgument(testIncludeFiles, includesList);
-    for (std::vector<std::string>::const_iterator i = includesList.begin();
-         i != includesList.end(); ++i) {
-      fout << "include(\"" << *i << "\")" << std::endl;
+    for (std::string const& i : includesList) {
+      fout << "include(\"" << i << "\")" << std::endl;
     }
   }
 
   // Ask each test generator to write its code.
   std::vector<cmTestGenerator*> const& testers =
     this->Makefile->GetTestGenerators();
-  for (std::vector<cmTestGenerator*>::const_iterator gi = testers.begin();
-       gi != testers.end(); ++gi) {
-    (*gi)->Compute(this);
-    (*gi)->Generate(fout, config, configurationTypes);
+  for (cmTestGenerator* tester : testers) {
+    tester->Compute(this);
+    tester->Generate(fout, config, configurationTypes);
   }
   typedef std::vector<cmStateSnapshot> vec_t;
   vec_t const& children = this->Makefile->GetStateSnapshot().GetChildren();
   std::string parentBinDir = this->GetCurrentBinaryDirectory();
-  for (vec_t::const_iterator i = children.begin(); i != children.end(); ++i) {
+  for (cmStateSnapshot const& i : children) {
     // TODO: Use add_subdirectory instead?
-    std::string outP = i->GetDirectory().GetCurrentBinary();
+    std::string outP = i.GetDirectory().GetCurrentBinary();
     outP = this->ConvertToRelativePath(parentBinDir, outP);
     outP = cmOutputConverter::EscapeForCMake(outP);
     fout << "subdirs(" << outP << ")" << std::endl;
@@ -313,10 +307,8 @@ void cmLocalGenerator::CreateEvaluationFileOutputs(std::string const& config)
 {
   std::vector<cmGeneratorExpressionEvaluationFile*> ef =
     this->Makefile->GetEvaluationFiles();
-  for (std::vector<cmGeneratorExpressionEvaluationFile*>::const_iterator li =
-         ef.begin();
-       li != ef.end(); ++li) {
-    (*li)->CreateOutputFile(this, config);
+  for (cmGeneratorExpressionEvaluationFile* geef : ef) {
+    geef->CreateOutputFile(this, config);
   }
 }
 
@@ -325,14 +317,12 @@ void cmLocalGenerator::ProcessEvaluationFiles(
 {
   std::vector<cmGeneratorExpressionEvaluationFile*> ef =
     this->Makefile->GetEvaluationFiles();
-  for (std::vector<cmGeneratorExpressionEvaluationFile*>::const_iterator li =
-         ef.begin();
-       li != ef.end(); ++li) {
-    (*li)->Generate(this);
+  for (cmGeneratorExpressionEvaluationFile* geef : ef) {
+    geef->Generate(this);
     if (cmSystemTools::GetFatalErrorOccured()) {
       return;
     }
-    std::vector<std::string> files = (*li)->GetFiles();
+    std::vector<std::string> files = geef->GetFiles();
     std::sort(files.begin(), files.end());
 
     std::vector<std::string> intersection;
@@ -403,10 +393,9 @@ void cmLocalGenerator::GenerateInstallRules()
   const char* default_order[] = { "RELEASE", "MINSIZEREL", "RELWITHDEBINFO",
                                   "DEBUG", nullptr };
   for (const char** c = default_order; *c && default_config.empty(); ++c) {
-    for (std::vector<std::string>::iterator i = configurationTypes.begin();
-         i != configurationTypes.end(); ++i) {
-      if (cmSystemTools::UpperCase(*i) == *c) {
-        default_config = *i;
+    for (std::string const& configurationType : configurationTypes) {
+      if (cmSystemTools::UpperCase(configurationType) == *c) {
+        default_config = configurationType;
       }
     }
   }
@@ -498,10 +487,8 @@ void cmLocalGenerator::GenerateInstallRules()
   // Ask each install generator to write its code.
   std::vector<cmInstallGenerator*> const& installers =
     this->Makefile->GetInstallGenerators();
-  for (std::vector<cmInstallGenerator*>::const_iterator gi =
-         installers.begin();
-       gi != installers.end(); ++gi) {
-    (*gi)->Generate(fout, config, configurationTypes);
+  for (cmInstallGenerator* installer : installers) {
+    installer->Generate(fout, config, configurationTypes);
   }
 
   // Write rules from old-style specification stored in targets.
@@ -513,10 +500,9 @@ void cmLocalGenerator::GenerateInstallRules()
   if (!children.empty()) {
     fout << "if(NOT CMAKE_INSTALL_LOCAL_ONLY)\n";
     fout << "  # Include the install script for each subdirectory.\n";
-    for (std::vector<cmStateSnapshot>::const_iterator ci = children.begin();
-         ci != children.end(); ++ci) {
-      if (!ci->GetDirectory().GetPropertyAsBool("EXCLUDE_FROM_ALL")) {
-        std::string odir = ci->GetDirectory().GetCurrentBinary();
+    for (cmStateSnapshot const& c : children) {
+      if (!c.GetDirectory().GetPropertyAsBool("EXCLUDE_FROM_ALL")) {
+        std::string odir = c.GetDirectory().GetCurrentBinary();
         cmSystemTools::ConvertToUnixSlashes(odir);
         fout << "  include(\"" << odir << "/cmake_install.cmake\")"
              << std::endl;
@@ -602,16 +588,12 @@ void cmLocalGenerator::ComputeTargetManifest()
 
   // Add our targets to the manifest for each configuration.
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    cmGeneratorTarget* target = *t;
+  for (cmGeneratorTarget* target : targets) {
     if (target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
-    for (std::vector<std::string>::iterator ci = configNames.begin();
-         ci != configNames.end(); ++ci) {
-      const char* config = ci->c_str();
-      target->ComputeTargetManifest(config);
+    for (std::string const& c : configNames) {
+      target->ComputeTargetManifest(c);
     }
   }
 }
@@ -627,12 +609,9 @@ bool cmLocalGenerator::ComputeTargetCompileFeatures()
 
   // Process compile features of all targets.
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    cmGeneratorTarget* target = *t;
-    for (std::vector<std::string>::iterator ci = configNames.begin();
-         ci != configNames.end(); ++ci) {
-      if (!target->ComputeCompileFeatures(*ci)) {
+  for (cmGeneratorTarget* target : targets) {
+    for (std::string const& c : configNames) {
+      if (!target->ComputeCompileFeatures(c)) {
         return false;
       }
     }
@@ -729,16 +708,15 @@ std::string cmLocalGenerator::GetIncludeFlags(
 #ifdef __APPLE__
   emitted.insert("/System/Library/Frameworks");
 #endif
-  std::vector<std::string>::const_iterator i;
-  for (i = includes.begin(); i != includes.end(); ++i) {
+  for (std::string const& i : includes) {
     if (fwSearchFlag && *fwSearchFlag && this->Makefile->IsOn("APPLE") &&
-        cmSystemTools::IsPathToFramework(i->c_str())) {
-      std::string frameworkDir = *i;
+        cmSystemTools::IsPathToFramework(i.c_str())) {
+      std::string frameworkDir = i;
       frameworkDir += "/../";
       frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
       if (emitted.insert(frameworkDir).second) {
         if (sysFwSearchFlag && target &&
-            target->IsSystemIncludeDirectory(*i, config)) {
+            target->IsSystemIncludeDirectory(i, config)) {
           includeFlags << sysFwSearchFlag;
         } else {
           includeFlags << fwSearchFlag;
@@ -751,7 +729,7 @@ std::string cmLocalGenerator::GetIncludeFlags(
 
     if (!flagUsed || repeatFlag) {
       if (sysIncludeFlag && target &&
-          target->IsSystemIncludeDirectory(*i, config)) {
+          target->IsSystemIncludeDirectory(i, config)) {
         includeFlags << sysIncludeFlag;
       } else {
         includeFlags << includeFlag;
@@ -759,7 +737,7 @@ std::string cmLocalGenerator::GetIncludeFlags(
       flagUsed = true;
     }
     std::string includePath =
-      this->ConvertToIncludeReference(*i, shellFormat, forceFullPaths);
+      this->ConvertToIncludeReference(i, shellFormat, forceFullPaths);
     if (quotePaths && !includePath.empty() && includePath[0] != '\"') {
       includeFlags << "\"";
     }
@@ -803,12 +781,11 @@ void cmLocalGenerator::AddCompileOptions(std::string& flags,
       cmSystemTools::ParseWindowsCommandLine(targetFlags, opts);
     }
     target->GetCompileOptions(opts, config, lang);
-    for (std::vector<std::string>::const_iterator i = opts.begin();
-         i != opts.end(); ++i) {
-      if (r.find(i->c_str())) {
+    for (std::string const& opt : opts) {
+      if (r.find(opt.c_str())) {
         // (Re-)Escape this flag.  COMPILE_FLAGS were already parsed
         // as a command line above, and COMPILE_OPTIONS are escaped.
-        this->AppendFlagEscape(flags, *i);
+        this->AppendFlagEscape(flags, opt);
       }
     }
   } else {
@@ -819,30 +796,27 @@ void cmLocalGenerator::AddCompileOptions(std::string& flags,
     }
     std::vector<std::string> opts;
     target->GetCompileOptions(opts, config, lang);
-    for (std::vector<std::string>::const_iterator i = opts.begin();
-         i != opts.end(); ++i) {
+    for (std::string const& opt : opts) {
       // COMPILE_OPTIONS are escaped.
-      this->AppendFlagEscape(flags, *i);
+      this->AppendFlagEscape(flags, opt);
     }
   }
 
-  for (std::map<std::string, std::string>::const_iterator it =
-         target->GetMaxLanguageStandards().begin();
-       it != target->GetMaxLanguageStandards().end(); ++it) {
-    const char* standard = target->GetProperty(it->first + "_STANDARD");
+  for (auto const& it : target->GetMaxLanguageStandards()) {
+    const char* standard = target->GetProperty(it.first + "_STANDARD");
     if (!standard) {
       continue;
     }
-    if (this->Makefile->IsLaterStandard(it->first, standard, it->second)) {
+    if (this->Makefile->IsLaterStandard(it.first, standard, it.second)) {
       std::ostringstream e;
       e << "The COMPILE_FEATURES property of target \"" << target->GetName()
         << "\" was evaluated when computing the link "
            "implementation, and the \""
-        << it->first << "_STANDARD\" was \"" << it->second
+        << it.first << "_STANDARD\" was \"" << it.second
         << "\" for that computation.  Computing the "
            "COMPILE_FEATURES based on the link implementation resulted in a "
            "higher \""
-        << it->first << "_STANDARD\" \"" << standard
+        << it.first << "_STANDARD\" \"" << standard
         << "\".  "
            "This is not permitted. The COMPILE_FEATURES may not both depend "
            "on "
@@ -917,13 +891,12 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs,
   if (const char* value = this->Makefile->GetDefinition(impDirVar)) {
     std::vector<std::string> impDirVec;
     cmSystemTools::ExpandListArgument(value, impDirVec);
-    for (std::vector<std::string>::const_iterator i = impDirVec.begin();
-         i != impDirVec.end(); ++i) {
-      std::string d = rootPath + *i;
+    for (std::string const& i : impDirVec) {
+      std::string d = rootPath + i;
       cmSystemTools::ConvertToUnixSlashes(d);
       emitted.insert(d);
       if (!stripImplicitInclDirs) {
-        implicitDirs.push_back(*i);
+        implicitDirs.push_back(i);
       }
     }
   }
@@ -938,26 +911,24 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs,
   if (this->Makefile->IsOn("CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE")) {
     const char* topSourceDir = this->GetState()->GetSourceDirectory();
     const char* topBinaryDir = this->GetState()->GetBinaryDirectory();
-    for (std::vector<std::string>::const_iterator i = includes.begin();
-         i != includes.end(); ++i) {
+    for (std::string const& i : includes) {
       // Emit this directory only if it is a subdirectory of the
       // top-level source or binary tree.
-      if (cmSystemTools::ComparePath(*i, topSourceDir) ||
-          cmSystemTools::ComparePath(*i, topBinaryDir) ||
-          cmSystemTools::IsSubDirectory(*i, topSourceDir) ||
-          cmSystemTools::IsSubDirectory(*i, topBinaryDir)) {
-        if (emitted.insert(*i).second) {
-          dirs.push_back(*i);
+      if (cmSystemTools::ComparePath(i, topSourceDir) ||
+          cmSystemTools::ComparePath(i, topBinaryDir) ||
+          cmSystemTools::IsSubDirectory(i, topSourceDir) ||
+          cmSystemTools::IsSubDirectory(i, topBinaryDir)) {
+        if (emitted.insert(i).second) {
+          dirs.push_back(i);
         }
       }
     }
   }
 
   // Construct the final ordered include directory list.
-  for (std::vector<std::string>::const_iterator i = includes.begin();
-       i != includes.end(); ++i) {
-    if (emitted.insert(*i).second) {
-      dirs.push_back(*i);
+  for (std::string const& i : includes) {
+    if (emitted.insert(i).second) {
+      dirs.push_back(i);
     }
   }
 
@@ -975,10 +946,9 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs,
     dirs.push_back(*i);
   }
 
-  for (std::vector<std::string>::const_iterator i = implicitDirs.begin();
-       i != implicitDirs.end(); ++i) {
-    if (std::find(includes.begin(), includes.end(), *i) != includes.end()) {
-      dirs.push_back(*i);
+  for (std::string const& i : implicitDirs) {
+    if (std::find(includes.begin(), includes.end(), i) != includes.end()) {
+      dirs.push_back(i);
     }
   }
 }
@@ -1036,9 +1006,7 @@ void cmLocalGenerator::GetTargetFlags(
         target->GetSourceFiles(sources, buildType);
         std::string defFlag =
           this->Makefile->GetSafeDefinition("CMAKE_LINK_DEF_FILE_FLAG");
-        for (std::vector<cmSourceFile*>::const_iterator i = sources.begin();
-             i != sources.end(); ++i) {
-          cmSourceFile* sf = *i;
+        for (cmSourceFile* sf : sources) {
           if (sf->GetExtension() == "def") {
             linkFlags += defFlag;
             linkFlags += this->ConvertToOutputFormat(
@@ -1189,10 +1157,9 @@ static std::string GetFrameworkFlags(const std::string& lang,
   lg->GetIncludeDirectories(includes, target, "C", config);
   // check all include directories for frameworks as this
   // will already have added a -F for the framework
-  for (std::vector<std::string>::iterator i = includes.begin();
-       i != includes.end(); ++i) {
-    if (lg->GetGlobalGenerator()->NameResolvesToFramework(*i)) {
-      std::string frameworkDir = *i;
+  for (std::string const& include : includes) {
+    if (lg->GetGlobalGenerator()->NameResolvesToFramework(include)) {
+      std::string frameworkDir = include;
       frameworkDir += "/../";
       frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
       emitted.insert(frameworkDir);
@@ -1202,11 +1169,11 @@ static std::string GetFrameworkFlags(const std::string& lang,
   std::string flags;
   if (cmComputeLinkInformation* cli = target->GetLinkInformation(config)) {
     std::vector<std::string> const& frameworks = cli->GetFrameworkPaths();
-    for (std::vector<std::string>::const_iterator i = frameworks.begin();
-         i != frameworks.end(); ++i) {
-      if (emitted.insert(*i).second) {
+    for (std::string const& framework : frameworks) {
+      if (emitted.insert(framework).second) {
         flags += fwSearchFlag;
-        flags += lg->ConvertToOutputFormat(*i, cmOutputConverter::SHELL);
+        flags +=
+          lg->ConvertToOutputFormat(framework, cmOutputConverter::SHELL);
         flags += " ";
       }
     }
@@ -1359,10 +1326,9 @@ void cmLocalGenerator::AddArchitectureFlags(std::string& flags,
       this->Makefile->GetDefinition(deploymentTargetFlagVar);
     if (!archs.empty() && !lang.empty() &&
         (lang[0] == 'C' || lang[0] == 'F')) {
-      for (std::vector<std::string>::iterator i = archs.begin();
-           i != archs.end(); ++i) {
+      for (std::string const& arch : archs) {
         flags += " -arch ";
-        flags += *i;
+        flags += arch;
       }
     }
 
@@ -1566,8 +1532,8 @@ void cmLocalGenerator::AddCompilerRequirementFlag(
             target->Target->GetMakefile()->GetDefinition(option_flag)) {
         std::vector<std::string> optVec;
         cmSystemTools::ExpandListArgument(opt, optVec);
-        for (size_t i = 0; i < optVec.size(); ++i) {
-          this->AppendFlagEscape(flags, optVec[i]);
+        for (std::string const& i : optVec) {
+          this->AppendFlagEscape(flags, i);
         }
       }
     }
@@ -1594,8 +1560,8 @@ void cmLocalGenerator::AddCompilerRequirementFlag(
     } else {
       std::vector<std::string> optVec;
       cmSystemTools::ExpandListArgument(opt, optVec);
-      for (size_t i = 0; i < optVec.size(); ++i) {
-        this->AppendFlagEscape(flags, optVec[i]);
+      for (std::string const& i : optVec) {
+        this->AppendFlagEscape(flags, i);
       }
     }
     return;
@@ -1654,8 +1620,8 @@ void cmLocalGenerator::AddCompilerRequirementFlag(
       target->Target->GetMakefile()->GetRequiredDefinition(option_flag);
     std::vector<std::string> optVec;
     cmSystemTools::ExpandListArgument(opt, optVec);
-    for (size_t i = 0; i < optVec.size(); ++i) {
-      this->AppendFlagEscape(flags, optVec[i]);
+    for (std::string const& i : optVec) {
+      this->AppendFlagEscape(flags, i);
     }
     return;
   }
@@ -1671,8 +1637,8 @@ void cmLocalGenerator::AddCompilerRequirementFlag(
           target->Target->GetMakefile()->GetDefinition(option_flag)) {
       std::vector<std::string> optVec;
       cmSystemTools::ExpandListArgument(opt, optVec);
-      for (size_t i = 0; i < optVec.size(); ++i) {
-        this->AppendFlagEscape(flags, optVec[i]);
+      for (std::string const& i : optVec) {
+        this->AppendFlagEscape(flags, i);
       }
       return;
     }
@@ -1871,9 +1837,8 @@ void cmLocalGenerator::AddPositionIndependentFlags(std::string& flags,
   if (picFlags) {
     std::vector<std::string> options;
     cmSystemTools::ExpandListArgument(picFlags, options);
-    for (std::vector<std::string>::const_iterator oi = options.begin();
-         oi != options.end(); ++oi) {
-      this->AppendFlagEscape(flags, *oi);
+    for (std::string const& o : options) {
+      this->AppendFlagEscape(flags, o);
     }
   }
 }
@@ -1943,9 +1908,8 @@ void cmLocalGenerator::AppendIPOLinkerFlags(std::string& flags,
 
   std::vector<std::string> flagsList;
   cmSystemTools::ExpandListArgument(rawFlagsList, flagsList);
-  for (std::vector<std::string>::const_iterator oi = flagsList.begin();
-       oi != flagsList.end(); ++oi) {
-    this->AppendFlagEscape(flags, *oi);
+  for (std::string const& o : flagsList) {
+    this->AppendFlagEscape(flags, o);
   }
 }
 
@@ -1967,13 +1931,12 @@ void cmLocalGenerator::AppendDefines(
   std::set<std::string>& defines,
   const std::vector<std::string>& defines_vec) const
 {
-  for (std::vector<std::string>::const_iterator di = defines_vec.begin();
-       di != defines_vec.end(); ++di) {
+  for (std::string const& d : defines_vec) {
     // Skip unsupported definitions.
-    if (!this->CheckDefinition(*di)) {
+    if (!this->CheckDefinition(d)) {
       continue;
     }
-    defines.insert(*di);
+    defines.insert(d);
   }
 }
 
@@ -2043,9 +2006,8 @@ void cmLocalGenerator::AppendFeatureOptions(std::string& flags,
   if (const char* optionList = this->Makefile->GetDefinition(optVar)) {
     std::vector<std::string> options;
     cmSystemTools::ExpandListArgument(optionList, options);
-    for (std::vector<std::string>::const_iterator oi = options.begin();
-         oi != options.end(); ++oi) {
-      this->AppendFlagEscape(flags, *oi);
+    for (std::string const& o : options) {
+      this->AppendFlagEscape(flags, o);
     }
   }
 }
@@ -2089,10 +2051,9 @@ std::string cmLocalGenerator::ConstructComment(
     comment = "Generating ";
     const char* sep = "";
     std::string currentBinaryDir = this->GetCurrentBinaryDirectory();
-    for (std::vector<std::string>::const_iterator o = ccg.GetOutputs().begin();
-         o != ccg.GetOutputs().end(); ++o) {
+    for (std::string const& o : ccg.GetOutputs()) {
       comment += sep;
-      comment += this->ConvertToRelativePath(currentBinaryDir, *o);
+      comment += this->ConvertToRelativePath(currentBinaryDir, o);
       sep = ", ";
     }
     return comment;
@@ -2123,36 +2084,35 @@ void cmLocalGenerator::GenerateTargetInstallRules(
   // Convert the old-style install specification from each target to
   // an install generator and run it.
   const std::vector<cmGeneratorTarget*>& tgts = this->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator l = tgts.begin();
-       l != tgts.end(); ++l) {
-    if ((*l)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+  for (cmGeneratorTarget* l : tgts) {
+    if (l->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
 
     // Include the user-specified pre-install script for this target.
-    if (const char* preinstall = (*l)->GetProperty("PRE_INSTALL_SCRIPT")) {
+    if (const char* preinstall = l->GetProperty("PRE_INSTALL_SCRIPT")) {
       cmInstallScriptGenerator g(preinstall, false, nullptr, false);
       g.Generate(os, config, configurationTypes);
     }
 
     // Install this target if a destination is given.
-    if ((*l)->Target->GetInstallPath() != "") {
+    if (l->Target->GetInstallPath() != "") {
       // Compute the full install destination.  Note that converting
       // to unix slashes also removes any trailing slash.
       // We also skip over the leading slash given by the user.
-      std::string destination = (*l)->Target->GetInstallPath().substr(1);
+      std::string destination = l->Target->GetInstallPath().substr(1);
       cmSystemTools::ConvertToUnixSlashes(destination);
       if (destination.empty()) {
         destination = ".";
       }
 
       // Generate the proper install generator for this target type.
-      switch ((*l)->GetType()) {
+      switch (l->GetType()) {
         case cmStateEnums::EXECUTABLE:
         case cmStateEnums::STATIC_LIBRARY:
         case cmStateEnums::MODULE_LIBRARY: {
           // Use a target install generator.
-          cmInstallTargetGeneratorLocal g(this, (*l)->GetName(),
+          cmInstallTargetGeneratorLocal g(this, l->GetName(),
                                           destination.c_str(), false);
           g.Generate(os, config, configurationTypes);
         } break;
@@ -2161,18 +2121,18 @@ void cmLocalGenerator::GenerateTargetInstallRules(
           // Special code to handle DLL.  Install the import library
           // to the normal destination and the DLL to the runtime
           // destination.
-          cmInstallTargetGeneratorLocal g1(this, (*l)->GetName(),
+          cmInstallTargetGeneratorLocal g1(this, l->GetName(),
                                            destination.c_str(), true);
           g1.Generate(os, config, configurationTypes);
           // We also skip over the leading slash given by the user.
-          destination = (*l)->Target->GetRuntimeInstallPath().substr(1);
+          destination = l->Target->GetRuntimeInstallPath().substr(1);
           cmSystemTools::ConvertToUnixSlashes(destination);
-          cmInstallTargetGeneratorLocal g2(this, (*l)->GetName(),
+          cmInstallTargetGeneratorLocal g2(this, l->GetName(),
                                            destination.c_str(), false);
           g2.Generate(os, config, configurationTypes);
 #else
           // Use a target install generator.
-          cmInstallTargetGeneratorLocal g(this, (*l)->GetName(),
+          cmInstallTargetGeneratorLocal g(this, l->GetName(),
                                           destination.c_str(), false);
           g.Generate(os, config, configurationTypes);
 #endif
@@ -2183,7 +2143,7 @@ void cmLocalGenerator::GenerateTargetInstallRules(
     }
 
     // Include the user-specified post-install script for this target.
-    if (const char* postinstall = (*l)->GetProperty("POST_INSTALL_SCRIPT")) {
+    if (const char* postinstall = l->GetProperty("POST_INSTALL_SCRIPT")) {
       cmInstallScriptGenerator g(postinstall, false, nullptr, false);
       g.Generate(os, config, configurationTypes);
     }

+ 17 - 23
Source/cmLocalNinjaGenerator.cxx

@@ -80,18 +80,18 @@ void cmLocalNinjaGenerator::Generate()
   }
 
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    if ((*t)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+  for (cmGeneratorTarget* target : targets) {
+    if (target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
-    cmNinjaTargetGenerator* tg = cmNinjaTargetGenerator::New(*t);
+    cmNinjaTargetGenerator* tg = cmNinjaTargetGenerator::New(target);
     if (tg) {
       tg->Generate();
       // Add the target to "all" if required.
       if (!this->GetGlobalNinjaGenerator()->IsExcluded(
-            this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0], *t)) {
-        this->GetGlobalNinjaGenerator()->AddDependencyToAll(*t);
+            this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0],
+            target)) {
+        this->GetGlobalNinjaGenerator()->AddDependencyToAll(target);
       }
       delete tg;
     }
@@ -212,8 +212,7 @@ void cmLocalNinjaGenerator::WritePools(std::ostream& os)
       os, "Pools defined by global property JOB_POOLS");
     std::vector<std::string> pools;
     cmSystemTools::ExpandListArgument(jobpools, pools);
-    for (size_t i = 0; i < pools.size(); ++i) {
-      std::string const& pool = pools[i];
+    for (std::string const& pool : pools) {
       const std::string::size_type eq = pool.find('=');
       unsigned int jobs;
       if (eq != std::string::npos &&
@@ -250,12 +249,10 @@ void cmLocalNinjaGenerator::ComputeObjectFilenames(
 {
   // Determine if these object files should use a custom extension
   char const* custom_ext = gt->GetCustomObjectExtension();
-  for (std::map<cmSourceFile const*, std::string>::iterator si =
-         mapping.begin();
-       si != mapping.end(); ++si) {
-    cmSourceFile const* sf = si->first;
+  for (auto& si : mapping) {
+    cmSourceFile const* sf = si.first;
     bool keptSourceExtension;
-    si->second = this->GetObjectFileNameWithoutTarget(
+    si.second = this->GetObjectFileNameWithoutTarget(
       *sf, gt->ObjectDirectory, &keptSourceExtension, custom_ext);
   }
 }
@@ -291,10 +288,9 @@ void cmLocalNinjaGenerator::AppendCustomCommandDeps(
   cmCustomCommandGenerator const& ccg, cmNinjaDeps& ninjaDeps)
 {
   const std::vector<std::string>& deps = ccg.GetDepends();
-  for (std::vector<std::string>::const_iterator i = deps.begin();
-       i != deps.end(); ++i) {
+  for (std::string const& i : deps) {
     std::string dep;
-    if (this->GetRealDependency(*i, this->GetConfigName(), dep)) {
+    if (this->GetRealDependency(i, this->GetConfigName(), dep)) {
       ninjaDeps.push_back(
         this->GetGlobalNinjaGenerator()->ConvertToNinjaPath(dep));
     }
@@ -408,9 +404,8 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatement(
                  this->GetGlobalNinjaGenerator()->MapToNinjaPath());
   this->AppendCustomCommandDeps(ccg, ninjaDeps);
 
-  for (cmNinjaDeps::iterator i = ninjaOutputs.begin(); i != ninjaOutputs.end();
-       ++i) {
-    this->GetGlobalNinjaGenerator()->SeenCustomCommandOutput(*i);
+  for (std::string const& ninjaOutput : ninjaOutputs) {
+    this->GetGlobalNinjaGenerator()->SeenCustomCommandOutput(ninjaOutput);
   }
 
   std::vector<std::string> cmdLines;
@@ -445,10 +440,9 @@ void cmLocalNinjaGenerator::AddCustomCommandTarget(cmCustomCommand const* cc,
 
 void cmLocalNinjaGenerator::WriteCustomCommandBuildStatements()
 {
-  for (std::vector<cmCustomCommand const*>::iterator vi =
-         this->CustomCommands.begin();
-       vi != this->CustomCommands.end(); ++vi) {
-    CustomCommandTargetMap::iterator i = this->CustomCommandTargets.find(*vi);
+  for (cmCustomCommand const* customCommand : this->CustomCommands) {
+    CustomCommandTargetMap::iterator i =
+      this->CustomCommandTargets.find(customCommand);
     assert(i != this->CustomCommandTargets.end());
 
     // A custom command may appear on multiple targets.  However, some build

+ 98 - 131
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "cmAlgorithms.h"
-#include "cmCustomCommand.h"
 #include "cmCustomCommandGenerator.h"
 #include "cmFileTimeComparison.h"
 #include "cmGeneratedFileStream.h"
@@ -119,13 +118,12 @@ void cmLocalUnixMakefileGenerator3::Generate()
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
   cmGlobalUnixMakefileGenerator3* gg =
     static_cast<cmGlobalUnixMakefileGenerator3*>(this->GlobalGenerator);
-  for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    if ((*t)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
+  for (cmGeneratorTarget* target : targets) {
+    if (target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
     CM_AUTO_PTR<cmMakefileTargetGenerator> tg(
-      cmMakefileTargetGenerator::New(*t));
+      cmMakefileTargetGenerator::New(target));
     if (tg.get()) {
       tg->WriteRuleFiles();
       gg->RecordTargetProgress(tg.get());
@@ -159,12 +157,10 @@ void cmLocalUnixMakefileGenerator3::ComputeObjectFilenames(
 {
   // Determine if these object files should use a custom extension
   char const* custom_ext = gt->GetCustomObjectExtension();
-  for (std::map<cmSourceFile const*, std::string>::iterator si =
-         mapping.begin();
-       si != mapping.end(); ++si) {
-    cmSourceFile const* sf = si->first;
+  for (auto& si : mapping) {
+    cmSourceFile const* sf = si.first;
     bool keptSourceExtension;
-    si->second = this->GetObjectFileNameWithoutTarget(
+    si.second = this->GetObjectFileNameWithoutTarget(
       *sf, gt->ObjectDirectory, &keptSourceExtension, custom_ext);
   }
 }
@@ -173,9 +169,7 @@ void cmLocalUnixMakefileGenerator3::GetLocalObjectFiles(
   std::map<std::string, LocalObjectInfo>& localObjectFiles)
 {
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
-  for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin();
-       ti != targets.end(); ++ti) {
-    cmGeneratorTarget* gt = *ti;
+  for (cmGeneratorTarget* gt : targets) {
     if (gt->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
       continue;
     }
@@ -189,9 +183,7 @@ void cmLocalUnixMakefileGenerator3::GetLocalObjectFiles(
     dir += this->GetTargetDirectory(gt);
     dir += "/";
     // Compute the name of each object file.
-    for (std::vector<cmSourceFile const*>::iterator si = objectSources.begin();
-         si != objectSources.end(); ++si) {
-      cmSourceFile const* sf = *si;
+    for (cmSourceFile const* sf : objectSources) {
       bool hasSourceExtension = true;
       std::string objectName =
         this->GetObjectFileNameWithoutTarget(*sf, dir, &hasSourceExtension);
@@ -210,18 +202,16 @@ void cmLocalUnixMakefileGenerator3::GetIndividualFileTargets(
 {
   std::map<std::string, LocalObjectInfo> localObjectFiles;
   this->GetLocalObjectFiles(localObjectFiles);
-  for (std::map<std::string, LocalObjectInfo>::iterator lo =
-         localObjectFiles.begin();
-       lo != localObjectFiles.end(); ++lo) {
-    targets.push_back(lo->first);
-
-    std::string::size_type dot_pos = lo->first.rfind(".");
-    std::string base = lo->first.substr(0, dot_pos);
-    if (lo->second.HasPreprocessRule) {
+  for (auto const& localObjectFile : localObjectFiles) {
+    targets.push_back(localObjectFile.first);
+
+    std::string::size_type dot_pos = localObjectFile.first.rfind(".");
+    std::string base = localObjectFile.first.substr(0, dot_pos);
+    if (localObjectFile.second.HasPreprocessRule) {
       targets.push_back(base + ".i");
     }
 
-    if (lo->second.HasAssembleRule) {
+    if (localObjectFile.second.HasAssembleRule) {
       targets.push_back(base + ".s");
     }
   }
@@ -270,23 +260,20 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
 
   // now write out the object rules
   // for each object file name
-  for (std::map<std::string, LocalObjectInfo>::iterator lo =
-         localObjectFiles.begin();
-       lo != localObjectFiles.end(); ++lo) {
+  for (auto& localObjectFile : localObjectFiles) {
     // Add a convenience rule for building the object file.
-    this->WriteObjectConvenienceRule(ruleFileStream,
-                                     "target to build an object file",
-                                     lo->first.c_str(), lo->second);
+    this->WriteObjectConvenienceRule(
+      ruleFileStream, "target to build an object file",
+      localObjectFile.first.c_str(), localObjectFile.second);
 
     // Check whether preprocessing and assembly rules make sense.
     // They make sense only for C and C++ sources.
     bool lang_has_preprocessor = false;
     bool lang_has_assembly = false;
 
-    for (std::vector<LocalObjectEntry>::const_iterator ei = lo->second.begin();
-         ei != lo->second.end(); ++ei) {
-      if (ei->Language == "C" || ei->Language == "CXX" ||
-          ei->Language == "CUDA" || ei->Language == "Fortran") {
+    for (LocalObjectEntry const& entry : localObjectFile.second) {
+      if (entry.Language == "C" || entry.Language == "CXX" ||
+          entry.Language == "CUDA" || entry.Language == "Fortran") {
         // Right now, C, C++, Fortran and CUDA have both a preprocessor and the
         // ability to generate assembly code
         lang_has_preprocessor = true;
@@ -297,21 +284,21 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
 
     // Add convenience rules for preprocessed and assembly files.
     if (lang_has_preprocessor && do_preprocess_rules) {
-      std::string::size_type dot_pos = lo->first.rfind(".");
-      std::string base = lo->first.substr(0, dot_pos);
-      this->WriteObjectConvenienceRule(ruleFileStream,
-                                       "target to preprocess a source file",
-                                       (base + ".i").c_str(), lo->second);
-      lo->second.HasPreprocessRule = true;
+      std::string::size_type dot_pos = localObjectFile.first.rfind(".");
+      std::string base = localObjectFile.first.substr(0, dot_pos);
+      this->WriteObjectConvenienceRule(
+        ruleFileStream, "target to preprocess a source file",
+        (base + ".i").c_str(), localObjectFile.second);
+      localObjectFile.second.HasPreprocessRule = true;
     }
 
     if (lang_has_assembly && do_assembly_rules) {
-      std::string::size_type dot_pos = lo->first.rfind(".");
-      std::string base = lo->first.substr(0, dot_pos);
+      std::string::size_type dot_pos = localObjectFile.first.rfind(".");
+      std::string base = localObjectFile.first.substr(0, dot_pos);
       this->WriteObjectConvenienceRule(
         ruleFileStream, "target to generate assembly for a file",
-        (base + ".s").c_str(), lo->second);
-      lo->second.HasAssembleRule = true;
+        (base + ".s").c_str(), localObjectFile.second);
+      localObjectFile.second.HasAssembleRule = true;
     }
   }
 
@@ -355,9 +342,8 @@ void cmLocalUnixMakefileGenerator3::WriteObjectConvenienceRule(
 
   // Recursively make the rule for each target using the object file.
   std::vector<std::string> commands;
-  for (std::vector<LocalObjectEntry>::const_iterator t = info.begin();
-       t != info.end(); ++t) {
-    std::string tgtMakefileName = this->GetRelativeTargetDirectory(t->Target);
+  for (LocalObjectEntry const& t : info) {
+    std::string tgtMakefileName = this->GetRelativeTargetDirectory(t.Target);
     std::string targetName = tgtMakefileName;
     tgtMakefileName += "/build.make";
     targetName += "/";
@@ -384,18 +370,17 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefileTargets(
   // on the target
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
   std::string localName;
-  for (std::vector<cmGeneratorTarget*>::const_iterator t = targets.begin();
-       t != targets.end(); ++t) {
-    if (((*t)->GetType() == cmStateEnums::EXECUTABLE) ||
-        ((*t)->GetType() == cmStateEnums::STATIC_LIBRARY) ||
-        ((*t)->GetType() == cmStateEnums::SHARED_LIBRARY) ||
-        ((*t)->GetType() == cmStateEnums::MODULE_LIBRARY) ||
-        ((*t)->GetType() == cmStateEnums::OBJECT_LIBRARY) ||
-        ((*t)->GetType() == cmStateEnums::UTILITY)) {
-      emitted.insert((*t)->GetName());
+  for (cmGeneratorTarget* target : targets) {
+    if ((target->GetType() == cmStateEnums::EXECUTABLE) ||
+        (target->GetType() == cmStateEnums::STATIC_LIBRARY) ||
+        (target->GetType() == cmStateEnums::SHARED_LIBRARY) ||
+        (target->GetType() == cmStateEnums::MODULE_LIBRARY) ||
+        (target->GetType() == cmStateEnums::OBJECT_LIBRARY) ||
+        (target->GetType() == cmStateEnums::UTILITY)) {
+      emitted.insert(target->GetName());
 
       // for subdirs add a rule to build this specific target by name.
-      localName = this->GetRelativeTargetDirectory(*t);
+      localName = this->GetRelativeTargetDirectory(target);
       localName += "/rule";
       commands.clear();
       depends.clear();
@@ -411,20 +396,20 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefileTargets(
                           localName, depends, commands, true);
 
       // Add a target with the canonical name (no prefix, suffix or path).
-      if (localName != (*t)->GetName()) {
+      if (localName != target->GetName()) {
         commands.clear();
         depends.push_back(localName);
         this->WriteMakeRule(ruleFileStream, "Convenience name for target.",
-                            (*t)->GetName(), depends, commands, true);
+                            target->GetName(), depends, commands, true);
       }
 
       // Add a fast rule to build the target
-      std::string makefileName = this->GetRelativeTargetDirectory(*t);
+      std::string makefileName = this->GetRelativeTargetDirectory(target);
       makefileName += "/build.make";
       // make sure the makefile name is suitable for a makefile
-      std::string makeTargetName = this->GetRelativeTargetDirectory(*t);
+      std::string makeTargetName = this->GetRelativeTargetDirectory(target);
       makeTargetName += "/build";
-      localName = (*t)->GetName();
+      localName = target->GetName();
       localName += "/fast";
       depends.clear();
       commands.clear();
@@ -437,10 +422,10 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefileTargets(
 
       // Add a local name for the rule to relink the target before
       // installation.
-      if ((*t)->NeedRelinkBeforeInstall(this->ConfigName)) {
-        makeTargetName = this->GetRelativeTargetDirectory(*t);
+      if (target->NeedRelinkBeforeInstall(this->ConfigName)) {
+        makeTargetName = this->GetRelativeTargetDirectory(target);
         makeTargetName += "/preinstall";
-        localName = (*t)->GetName();
+        localName = target->GetName();
         localName += "/preinstall";
         depends.clear();
         commands.clear();
@@ -581,9 +566,8 @@ void cmLocalUnixMakefileGenerator3::WriteMakeRule(
     // Split dependencies into multiple rule lines.  This allows for
     // very long dependency lists even on older make implementations.
     std::string binDir = this->GetBinaryDirectory();
-    for (std::vector<std::string>::const_iterator dep = depends.begin();
-         dep != depends.end(); ++dep) {
-      replace = *dep;
+    for (std::string const& depend : depends) {
+      replace = depend;
       replace = cmSystemTools::ConvertToOutputPath(
         this->MaybeConvertToRelativePath(binDir, replace).c_str());
       os << cmMakeSafe(tgt) << space << ": " << cmMakeSafe(replace) << "\n";
@@ -892,9 +876,8 @@ void cmLocalUnixMakefileGenerator3::AppendRuleDepends(
 void cmLocalUnixMakefileGenerator3::AppendCustomDepends(
   std::vector<std::string>& depends, const std::vector<cmCustomCommand>& ccs)
 {
-  for (std::vector<cmCustomCommand>::const_iterator i = ccs.begin();
-       i != ccs.end(); ++i) {
-    cmCustomCommandGenerator ccg(*i, this->ConfigName, this);
+  for (cmCustomCommand const& cc : ccs) {
+    cmCustomCommandGenerator ccg(cc, this->ConfigName, this);
     this->AppendCustomDepend(depends, ccg);
   }
 }
@@ -902,11 +885,10 @@ void cmLocalUnixMakefileGenerator3::AppendCustomDepends(
 void cmLocalUnixMakefileGenerator3::AppendCustomDepend(
   std::vector<std::string>& depends, cmCustomCommandGenerator const& ccg)
 {
-  for (std::vector<std::string>::const_iterator d = ccg.GetDepends().begin();
-       d != ccg.GetDepends().end(); ++d) {
+  for (std::string const& d : ccg.GetDepends()) {
     // Lookup the real name of the dependency in case it is a CMake target.
     std::string dep;
-    if (this->GetRealDependency(*d, this->ConfigName, dep)) {
+    if (this->GetRealDependency(d, this->ConfigName, dep)) {
       depends.push_back(dep);
     }
   }
@@ -916,9 +898,8 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommands(
   std::vector<std::string>& commands, const std::vector<cmCustomCommand>& ccs,
   cmGeneratorTarget* target, std::string const& relative)
 {
-  for (std::vector<cmCustomCommand>::const_iterator i = ccs.begin();
-       i != ccs.end(); ++i) {
-    cmCustomCommandGenerator ccg(*i, this->ConfigName, this);
+  for (cmCustomCommand const& cc : ccs) {
+    cmCustomCommandGenerator ccg(cc, this->ConfigName, this);
     this->AppendCustomCommand(commands, ccg, target, relative, true);
   }
 }
@@ -1089,9 +1070,8 @@ void cmLocalUnixMakefileGenerator3::AppendCleanCommand(
   }
   if (!files.empty()) {
     fout << "file(REMOVE_RECURSE\n";
-    for (std::vector<std::string>::const_iterator f = files.begin();
-         f != files.end(); ++f) {
-      std::string fc = this->MaybeConvertToRelativePath(currentBinDir, *f);
+    for (std::string const& file : files) {
+      std::string fc = this->MaybeConvertToRelativePath(currentBinDir, file);
       fout << "  " << cmOutputConverter::EscapeForCMake(fc) << "\n";
     }
     fout << ")\n";
@@ -1454,11 +1434,8 @@ bool cmLocalUnixMakefileGenerator3::ScanDependencies(
   const char* langStr = mf->GetSafeDefinition("CMAKE_DEPENDS_LANGUAGES");
   std::vector<std::string> langs;
   cmSystemTools::ExpandListArgument(langStr, langs);
-  for (std::vector<std::string>::iterator li = langs.begin();
-       li != langs.end(); ++li) {
+  for (std::string const& lang : langs) {
     // construct the checker
-    std::string lang = *li;
-
     // Create the scanner for this language
     cmDepends* scanner = nullptr;
     if (lang == "C" || lang == "CXX" || lang == "RC" || lang == "ASM" ||
@@ -1563,25 +1540,22 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules(
   ruleFileStream << "# Targets provided globally by CMake.\n"
                  << "\n";
   const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
-  std::vector<cmGeneratorTarget*>::const_iterator glIt;
-  for (glIt = targets.begin(); glIt != targets.end(); ++glIt) {
-    if ((*glIt)->GetType() == cmStateEnums::GLOBAL_TARGET) {
+  for (cmGeneratorTarget* gt : targets) {
+    if (gt->GetType() == cmStateEnums::GLOBAL_TARGET) {
       std::string targetString =
-        "Special rule for the target " + (*glIt)->GetName();
+        "Special rule for the target " + gt->GetName();
       std::vector<std::string> commands;
       std::vector<std::string> depends;
 
-      const char* text = (*glIt)->GetProperty("EchoString");
+      const char* text = gt->GetProperty("EchoString");
       if (!text) {
         text = "Running external command ...";
       }
-      depends.insert(depends.end(), (*glIt)->GetUtilities().begin(),
-                     (*glIt)->GetUtilities().end());
+      depends.insert(depends.end(), gt->GetUtilities().begin(),
+                     gt->GetUtilities().end());
       this->AppendEcho(commands, text,
                        cmLocalUnixMakefileGenerator3::EchoGlobal);
 
-      cmGeneratorTarget* gt = *glIt;
-
       // Global targets store their rules in pre- and post-build commands.
       this->AppendCustomDepends(depends, gt->GetPreBuildCommands());
       this->AppendCustomDepends(depends, gt->GetPostBuildCommands());
@@ -1728,9 +1702,8 @@ void cmLocalUnixMakefileGenerator3::ClearDependencies(cmMakefile* mf,
   // dependencies for that target.
   cmDepends clearer;
   clearer.SetVerbose(verbose);
-  for (std::vector<std::string>::iterator l = files.begin(); l != files.end();
-       ++l) {
-    std::string dir = cmSystemTools::GetFilenamePath(*l);
+  for (std::string const& file : files) {
+    std::string dir = cmSystemTools::GetFilenamePath(file);
 
     // Clear the implicit dependency makefile.
     std::string dependFile = dir + "/depend.make";
@@ -1802,54 +1775,51 @@ void cmLocalUnixMakefileGenerator3::WriteDependLanguageInfo(
   cmakefileStream
     << "# The set of languages for which implicit dependencies are needed:\n";
   cmakefileStream << "set(CMAKE_DEPENDS_LANGUAGES\n";
-  for (ImplicitDependLanguageMap::const_iterator l = implicitLangs.begin();
-       l != implicitLangs.end(); ++l) {
-    cmakefileStream << "  \"" << l->first << "\"\n";
+  for (auto const& implicitLang : implicitLangs) {
+    cmakefileStream << "  \"" << implicitLang.first << "\"\n";
   }
   cmakefileStream << "  )\n";
 
   // now list the files for each language
   cmakefileStream
     << "# The set of files for implicit dependencies of each language:\n";
-  for (ImplicitDependLanguageMap::const_iterator l = implicitLangs.begin();
-       l != implicitLangs.end(); ++l) {
-    cmakefileStream << "set(CMAKE_DEPENDS_CHECK_" << l->first << "\n";
-    ImplicitDependFileMap const& implicitPairs = l->second;
+  for (auto const& implicitLang : implicitLangs) {
+    cmakefileStream << "set(CMAKE_DEPENDS_CHECK_" << implicitLang.first
+                    << "\n";
+    ImplicitDependFileMap const& implicitPairs = implicitLang.second;
 
     // for each file pair
-    for (ImplicitDependFileMap::const_iterator pi = implicitPairs.begin();
-         pi != implicitPairs.end(); ++pi) {
-      for (cmDepends::DependencyVector::const_iterator di = pi->second.begin();
-           di != pi->second.end(); ++di) {
-        cmakefileStream << "  \"" << *di << "\" ";
-        cmakefileStream << "\"" << pi->first << "\"\n";
+    for (auto const& implicitPair : implicitPairs) {
+      for (auto const& di : implicitPair.second) {
+        cmakefileStream << "  \"" << di << "\" ";
+        cmakefileStream << "\"" << implicitPair.first << "\"\n";
       }
     }
     cmakefileStream << "  )\n";
 
     // Tell the dependency scanner what compiler is used.
     std::string cidVar = "CMAKE_";
-    cidVar += l->first;
+    cidVar += implicitLang.first;
     cidVar += "_COMPILER_ID";
     const char* cid = this->Makefile->GetDefinition(cidVar);
     if (cid && *cid) {
-      cmakefileStream << "set(CMAKE_" << l->first << "_COMPILER_ID \"" << cid
-                      << "\")\n";
+      cmakefileStream << "set(CMAKE_" << implicitLang.first
+                      << "_COMPILER_ID \"" << cid << "\")\n";
     }
 
     // Build a list of preprocessor definitions for the target.
     std::set<std::string> defines;
-    this->AddCompileDefinitions(defines, target, this->ConfigName, l->first);
+    this->AddCompileDefinitions(defines, target, this->ConfigName,
+                                implicitLang.first);
     if (!defines.empty()) {
       /* clang-format off */
       cmakefileStream
         << "\n"
         << "# Preprocessor definitions for this target.\n"
-        << "set(CMAKE_TARGET_DEFINITIONS_" << l->first << "\n";
+        << "set(CMAKE_TARGET_DEFINITIONS_" << implicitLang.first << "\n";
       /* clang-format on */
-      for (std::set<std::string>::const_iterator di = defines.begin();
-           di != defines.end(); ++di) {
-        cmakefileStream << "  " << cmOutputConverter::EscapeForCMake(*di)
+      for (std::string const& define : defines) {
+        cmakefileStream << "  " << cmOutputConverter::EscapeForCMake(define)
                         << "\n";
       }
       cmakefileStream << "  )\n";
@@ -1858,21 +1828,21 @@ void cmLocalUnixMakefileGenerator3::WriteDependLanguageInfo(
     // Target-specific include directories:
     cmakefileStream << "\n"
                     << "# The include file search paths:\n";
-    cmakefileStream << "set(CMAKE_" << l->first << "_TARGET_INCLUDE_PATH\n";
+    cmakefileStream << "set(CMAKE_" << implicitLang.first
+                    << "_TARGET_INCLUDE_PATH\n";
     std::vector<std::string> includes;
 
     const std::string& config =
       this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
-    this->GetIncludeDirectories(includes, target, l->first, config);
+    this->GetIncludeDirectories(includes, target, implicitLang.first, config);
     std::string binaryDir = this->GetState()->GetBinaryDirectory();
     if (this->Makefile->IsOn("CMAKE_DEPENDS_IN_PROJECT_ONLY")) {
       const char* sourceDir = this->GetState()->GetSourceDirectory();
       cmEraseIf(includes, ::NotInProjectDir(sourceDir, binaryDir));
     }
-    for (std::vector<std::string>::iterator i = includes.begin();
-         i != includes.end(); ++i) {
+    for (std::string const& include : includes) {
       cmakefileStream << "  \""
-                      << this->MaybeConvertToRelativePath(binaryDir, *i)
+                      << this->MaybeConvertToRelativePath(binaryDir, include)
                       << "\"\n";
     }
     cmakefileStream << "  )\n";
@@ -1891,10 +1861,8 @@ void cmLocalUnixMakefileGenerator3::WriteDependLanguageInfo(
   }
   if (!transformRules.empty()) {
     cmakefileStream << "set(CMAKE_INCLUDE_TRANSFORMS\n";
-    for (std::vector<std::string>::const_iterator tri = transformRules.begin();
-         tri != transformRules.end(); ++tri) {
-      cmakefileStream << "  " << cmOutputConverter::EscapeForCMake(*tri)
-                      << "\n";
+    for (std::string const& tr : transformRules) {
+      cmakefileStream << "  " << cmOutputConverter::EscapeForCMake(tr) << "\n";
     }
     cmakefileStream << "  )\n";
   }
@@ -2004,10 +1972,9 @@ std::string cmLocalUnixMakefileGenerator3::ConvertToQuotedOutputPath(
 #if defined(_WIN32) && !defined(__CYGWIN__)
     if (!cmSystemTools::GetForceUnixPaths()) {
       slash = "\\";
-      for (std::string::iterator i = components[0].begin();
-           i != components[0].end(); ++i) {
-        if (*i == '/') {
-          *i = '\\';
+      for (char& i : components[0]) {
+        if (i == '/') {
+          i = '\\';
         }
       }
     }

+ 9 - 11
Source/cmMacroCommand.cxx

@@ -98,20 +98,18 @@ bool cmMacroHelperCommand::InvokeInitialPass(
   // Invoke all the functions that were collected in the block.
   cmListFileFunction newLFF;
   // for each function
-  for (unsigned int c = 0; c < this->Functions.size(); ++c) {
+  for (cmListFileFunction const& func : this->Functions) {
     // Replace the formal arguments and then invoke the command.
     newLFF.Arguments.clear();
-    newLFF.Arguments.reserve(this->Functions[c].Arguments.size());
-    newLFF.Name = this->Functions[c].Name;
-    newLFF.Line = this->Functions[c].Line;
+    newLFF.Arguments.reserve(func.Arguments.size());
+    newLFF.Name = func.Name;
+    newLFF.Line = func.Line;
 
     // for each argument of the current function
-    for (std::vector<cmListFileArgument>::iterator k =
-           this->Functions[c].Arguments.begin();
-         k != this->Functions[c].Arguments.end(); ++k) {
+    for (cmListFileArgument const& k : func.Arguments) {
       cmListFileArgument arg;
-      arg.Value = k->Value;
-      if (k->Delim != cmListFileArgument::Bracket) {
+      arg.Value = k.Value;
+      if (k.Delim != cmListFileArgument::Bracket) {
         // replace formal arguments
         for (unsigned int j = 0; j < variables.size(); ++j) {
           cmSystemTools::ReplaceString(arg.Value, variables[j],
@@ -131,8 +129,8 @@ bool cmMacroHelperCommand::InvokeInitialPass(
           }
         }
       }
-      arg.Delim = k->Delim;
-      arg.Line = k->Line;
+      arg.Delim = k.Delim;
+      arg.Line = k.Line;
       newLFF.Arguments.push_back(arg);
     }
     cmExecutionStatus status;

+ 77 - 114
Source/cmMakefile.cxx

@@ -206,15 +206,13 @@ void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const
   msg << lff.Name << "(";
   bool expand = this->GetCMakeInstance()->GetTraceExpand();
   std::string temp;
-  for (std::vector<cmListFileArgument>::const_iterator i =
-         lff.Arguments.begin();
-       i != lff.Arguments.end(); ++i) {
+  for (cmListFileArgument const& arg : lff.Arguments) {
     if (expand) {
-      temp = i->Value;
+      temp = arg.Value;
       this->ExpandVariablesInString(temp);
       msg << temp;
     } else {
-      msg << i->Value;
+      msg << arg.Value;
     }
     msg << " ";
   }
@@ -640,9 +638,8 @@ void cmMakefile::FinalPass()
 
   // give all the commands a chance to do something
   // after the file has been parsed before generation
-  for (std::vector<cmCommand*>::iterator i = this->FinalPassCommands.begin();
-       i != this->FinalPassCommands.end(); ++i) {
-    (*i)->FinalPass();
+  for (cmCommand* fpCommand : this->FinalPassCommands) {
+    fpCommand->FinalPass();
   }
 
   // go through all configured files and see which ones still exist.
@@ -739,9 +736,8 @@ void cmMakefile::AddCustomCommandToTarget(
   }
 
   // Always create the byproduct sources and mark them generated.
-  for (std::vector<std::string>::const_iterator o = byproducts.begin();
-       o != byproducts.end(); ++o) {
-    if (cmSourceFile* out = this->GetOrCreateSource(*o, true)) {
+  for (std::string const& o : byproducts) {
+    if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
       out->SetProperty("GENERATED", "1");
     }
   }
@@ -783,9 +779,7 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
   }
 
   // Validate custom commands.  TODO: More strict?
-  for (cmCustomCommandLines::const_iterator i = commandLines.begin();
-       i != commandLines.end(); ++i) {
-    cmCustomCommandLine const& cl = *i;
+  for (cmCustomCommandLine const& cl : commandLines) {
     if (!cl.empty() && !cl[0].empty() && cl[0][0] == '"') {
       std::ostringstream e;
       e << "COMMAND may not contain literal quotes:\n  " << cl[0] << "\n";
@@ -842,15 +836,13 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
   }
 
   // Always create the output sources and mark them generated.
-  for (std::vector<std::string>::const_iterator o = outputs.begin();
-       o != outputs.end(); ++o) {
-    if (cmSourceFile* out = this->GetOrCreateSource(*o, true)) {
+  for (std::string const& o : outputs) {
+    if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
       out->SetProperty("GENERATED", "1");
     }
   }
-  for (std::vector<std::string>::const_iterator o = byproducts.begin();
-       o != byproducts.end(); ++o) {
-    if (cmSourceFile* out = this->GetOrCreateSource(*o, true)) {
+  for (std::string const& o : byproducts) {
+    if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
       out->SetProperty("GENERATED", "1");
     }
   }
@@ -879,9 +871,8 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
 void cmMakefile::UpdateOutputToSourceMap(
   std::vector<std::string> const& outputs, cmSourceFile* source)
 {
-  for (std::vector<std::string>::const_iterator o = outputs.begin();
-       o != outputs.end(); ++o) {
-    this->UpdateOutputToSourceMap(*o, source);
+  for (std::string const& o : outputs) {
+    this->UpdateOutputToSourceMap(o, source);
   }
 }
 
@@ -941,10 +932,9 @@ void cmMakefile::AddCustomCommandOldStyle(
   cmsys::RegularExpression sourceFiles("\\.(C|M|c|c\\+\\+|cc|cpp|cxx|m|mm|"
                                        "rc|def|r|odl|idl|hpj|bat|h|h\\+\\+|"
                                        "hm|hpp|hxx|in|txx|inl)$");
-  for (std::vector<std::string>::const_iterator oi = outputs.begin();
-       oi != outputs.end(); ++oi) {
+  for (std::string const& oi : outputs) {
     // Get the name of this output.
-    const char* output = oi->c_str();
+    const char* output = oi.c_str();
     cmSourceFile* sf;
 
     // Choose whether to use a main dependency.
@@ -1062,9 +1052,8 @@ cmTarget* cmMakefile::AddUtilityCommand(
     }
 
     // Always create the byproduct sources and mark them generated.
-    for (std::vector<std::string>::const_iterator o = byproducts.begin();
-         o != byproducts.end(); ++o) {
-      if (cmSourceFile* out = this->GetOrCreateSource(*o, true)) {
+    for (std::string const& byproduct : byproducts) {
+      if (cmSourceFile* out = this->GetOrCreateSource(byproduct, true)) {
         out->SetProperty("GENERATED", "1");
       }
     }
@@ -1226,10 +1215,9 @@ void cmMakefile::InitializeFromParent(cmMakefile* parent)
                       parent->GetProperty("COMPILE_DEFINITIONS"));
     std::vector<std::string> configs;
     this->GetConfigurations(configs);
-    for (std::vector<std::string>::const_iterator ci = configs.begin();
-         ci != configs.end(); ++ci) {
+    for (std::string const& config : configs) {
       std::string defPropName = "COMPILE_DEFINITIONS_";
-      defPropName += cmSystemTools::UpperCase(*ci);
+      defPropName += cmSystemTools::UpperCase(config);
       const char* prop = parent->GetProperty(defPropName);
       this->SetProperty(defPropName, prop);
     }
@@ -1391,10 +1379,8 @@ void cmMakefile::Configure()
   if (this->IsRootMakefile()) {
     bool hasVersion = false;
     // search for the right policy command
-    for (std::vector<cmListFileFunction>::iterator i =
-           listFile.Functions.begin();
-         i != listFile.Functions.end(); ++i) {
-      if (cmSystemTools::LowerCase(i->Name) == "cmake_minimum_required") {
+    for (cmListFileFunction const& func : listFile.Functions) {
+      if (cmSystemTools::LowerCase(func.Name) == "cmake_minimum_required") {
         hasVersion = true;
         break;
       }
@@ -1420,10 +1406,8 @@ void cmMakefile::Configure()
         allowedCommands.insert("option");
         allowedCommands.insert("message");
         isProblem = false;
-        for (std::vector<cmListFileFunction>::iterator i =
-               listFile.Functions.begin();
-             i != listFile.Functions.end(); ++i) {
-          std::string name = cmSystemTools::LowerCase(i->Name);
+        for (cmListFileFunction const& func : listFile.Functions) {
+          std::string name = cmSystemTools::LowerCase(func.Name);
           if (allowedCommands.find(name) == allowedCommands.end()) {
             isProblem = true;
             break;
@@ -1442,10 +1426,8 @@ void cmMakefile::Configure()
     }
     bool hasProject = false;
     // search for a project command
-    for (std::vector<cmListFileFunction>::iterator i =
-           listFile.Functions.begin();
-         i != listFile.Functions.end(); ++i) {
-      if (cmSystemTools::LowerCase(i->Name) == "project") {
+    for (cmListFileFunction const& func : listFile.Functions) {
+      if (cmSystemTools::LowerCase(func.Name) == "project") {
         hasProject = true;
         break;
       }
@@ -1577,9 +1559,8 @@ std::vector<cmTarget*> cmMakefile::GetImportedTargets() const
 {
   std::vector<cmTarget*> tgts;
   tgts.reserve(this->ImportedTargets.size());
-  for (TargetMap::const_iterator it = this->ImportedTargets.begin();
-       it != this->ImportedTargets.end(); ++it) {
-    tgts.push_back(it->second);
+  for (auto const& impTarget : this->ImportedTargets) {
+    tgts.push_back(impTarget.second);
   }
   return tgts;
 }
@@ -1602,9 +1583,8 @@ void cmMakefile::AddIncludeDirectories(const std::vector<std::string>& incs,
   }
 
   // Property on each target:
-  for (cmTargets::iterator l = this->Targets.begin(); l != this->Targets.end();
-       ++l) {
-    cmTarget& t = l->second;
+  for (auto& target : this->Targets) {
+    cmTarget& t = target.second;
     t.InsertInclude(entryString, lfbt, before);
   }
 }
@@ -1617,9 +1597,8 @@ void cmMakefile::AddSystemIncludeDirectories(const std::set<std::string>& incs)
 
   this->SystemIncludeDirectories.insert(incs.begin(), incs.end());
 
-  for (cmTargets::iterator l = this->Targets.begin(); l != this->Targets.end();
-       ++l) {
-    cmTarget& t = l->second;
+  for (auto& target : this->Targets) {
+    cmTarget& t = target.second;
     t.AddSystemIncludeDirectories(incs);
   }
 }
@@ -1788,14 +1767,13 @@ void cmMakefile::AddGlobalLinkInformation(cmTarget& target)
     std::vector<std::string> linkDirs;
     cmSystemTools::ExpandListArgument(linkDirsProp, linkDirs);
 
-    for (std::vector<std::string>::iterator j = linkDirs.begin();
-         j != linkDirs.end(); ++j) {
-      std::string newdir = *j;
+    for (std::string const& linkDir : linkDirs) {
+      std::string newdir = linkDir;
       // remove trailing slashes
-      if (*j->rbegin() == '/') {
-        newdir = j->substr(0, j->size() - 1);
+      if (*linkDir.rbegin() == '/') {
+        newdir = linkDir.substr(0, linkDir.size() - 1);
       }
-      target.AddLinkDirectory(*j);
+      target.AddLinkDirectory(linkDir);
     }
   }
 
@@ -1888,22 +1866,19 @@ cmSourceFile* cmMakefile::LinearGetSourceFileWithOutput(
 
   // look through all the source files that have custom commands
   // and see if the custom command has the passed source file as an output
-  for (std::vector<cmSourceFile*>::const_iterator i =
-         this->SourceFiles.begin();
-       i != this->SourceFiles.end(); ++i) {
+  for (cmSourceFile* src : this->SourceFiles) {
     // does this source file have a custom command?
-    if ((*i)->GetCustomCommand()) {
+    if (src->GetCustomCommand()) {
       // Does the output of the custom command match the source file name?
       const std::vector<std::string>& outputs =
-        (*i)->GetCustomCommand()->GetOutputs();
-      for (std::vector<std::string>::const_iterator o = outputs.begin();
-           o != outputs.end(); ++o) {
-        out = *o;
+        src->GetCustomCommand()->GetOutputs();
+      for (std::string const& output : outputs) {
+        out = output;
         std::string::size_type pos = out.rfind(name);
         // If the output matches exactly
         if (pos != std::string::npos && pos == out.size() - name.size() &&
             (pos == 0 || out[pos - 1] == '/')) {
-          return *i;
+          return src;
         }
       }
     }
@@ -1936,12 +1911,10 @@ cmSourceGroup* cmMakefile::GetSourceGroup(
   cmSourceGroup* sg = nullptr;
 
   // first look for source group starting with the same as the one we want
-  for (std::vector<cmSourceGroup>::const_iterator sgIt =
-         this->SourceGroups.begin();
-       sgIt != this->SourceGroups.end(); ++sgIt) {
-    std::string sgName = sgIt->GetName();
+  for (cmSourceGroup const& srcGroup : this->SourceGroups) {
+    std::string sgName = srcGroup.GetName();
     if (sgName == name[0]) {
-      sg = const_cast<cmSourceGroup*>(&(*sgIt));
+      sg = const_cast<cmSourceGroup*>(&srcGroup);
       break;
     }
   }
@@ -2094,9 +2067,8 @@ void cmMakefile::ExpandVariablesCMP0019()
   }
 
   // Also for each target's INCLUDE_DIRECTORIES property:
-  for (cmTargets::iterator l = this->Targets.begin(); l != this->Targets.end();
-       ++l) {
-    cmTarget& t = l->second;
+  for (auto& target : this->Targets) {
+    cmTarget& t = target.second;
     if (t.GetType() == cmStateEnums::INTERFACE_LIBRARY ||
         t.GetType() == cmStateEnums::GLOBAL_TARGET) {
       continue;
@@ -2243,9 +2215,9 @@ bool cmMakefile::PlatformIsAppleIos() const
     "iphonesimulator", "watchos",          "watchsimulator",
   };
 
-  for (size_t i = 0; i < sizeof(embedded) / sizeof(embedded[0]); ++i) {
-    if (sdkRoot.find(embedded[i]) == 0 ||
-        sdkRoot.find(std::string("/") + embedded[i]) != std::string::npos) {
+  for (std::string const& i : embedded) {
+    if (sdkRoot.find(i) == 0 ||
+        sdkRoot.find(std::string("/") + i) != std::string::npos) {
       return true;
     }
   }
@@ -2967,23 +2939,22 @@ bool cmMakefile::ExpandArguments(std::vector<cmListFileArgument> const& inArgs,
   if (!filename) {
     filename = efp.c_str();
   }
-  std::vector<cmListFileArgument>::const_iterator i;
   std::string value;
   outArgs.reserve(inArgs.size());
-  for (i = inArgs.begin(); i != inArgs.end(); ++i) {
+  for (cmListFileArgument const& i : inArgs) {
     // No expansion in a bracket argument.
-    if (i->Delim == cmListFileArgument::Bracket) {
-      outArgs.push_back(i->Value);
+    if (i.Delim == cmListFileArgument::Bracket) {
+      outArgs.push_back(i.Value);
       continue;
     }
     // Expand the variables in the argument.
-    value = i->Value;
-    this->ExpandVariablesInString(value, false, false, false, filename,
-                                  i->Line, false, false);
+    value = i.Value;
+    this->ExpandVariablesInString(value, false, false, false, filename, i.Line,
+                                  false, false);
 
     // If the argument is quoted, it should be one argument.
     // Otherwise, it may be a list of arguments.
-    if (i->Delim == cmListFileArgument::Quoted) {
+    if (i.Delim == cmListFileArgument::Quoted) {
       outArgs.push_back(value);
     } else {
       cmSystemTools::ExpandListArgument(value, outArgs);
@@ -3000,29 +2971,28 @@ bool cmMakefile::ExpandArguments(
   if (!filename) {
     filename = efp.c_str();
   }
-  std::vector<cmListFileArgument>::const_iterator i;
   std::string value;
   outArgs.reserve(inArgs.size());
-  for (i = inArgs.begin(); i != inArgs.end(); ++i) {
+  for (cmListFileArgument const& i : inArgs) {
     // No expansion in a bracket argument.
-    if (i->Delim == cmListFileArgument::Bracket) {
-      outArgs.push_back(cmExpandedCommandArgument(i->Value, true));
+    if (i.Delim == cmListFileArgument::Bracket) {
+      outArgs.push_back(cmExpandedCommandArgument(i.Value, true));
       continue;
     }
     // Expand the variables in the argument.
-    value = i->Value;
-    this->ExpandVariablesInString(value, false, false, false, filename,
-                                  i->Line, false, false);
+    value = i.Value;
+    this->ExpandVariablesInString(value, false, false, false, filename, i.Line,
+                                  false, false);
 
     // If the argument is quoted, it should be one argument.
     // Otherwise, it may be a list of arguments.
-    if (i->Delim == cmListFileArgument::Quoted) {
+    if (i.Delim == cmListFileArgument::Quoted) {
       outArgs.push_back(cmExpandedCommandArgument(value, true));
     } else {
       std::vector<std::string> stringArgs;
       cmSystemTools::ExpandListArgument(value, stringArgs);
-      for (size_t j = 0; j < stringArgs.size(); ++j) {
-        outArgs.push_back(cmExpandedCommandArgument(stringArgs[j], false));
+      for (std::string const& stringArg : stringArgs) {
+        outArgs.push_back(cmExpandedCommandArgument(stringArg, false));
       }
     }
   }
@@ -3112,10 +3082,7 @@ void cmMakefile::SetArgcArgv(const std::vector<std::string>& args)
 cmSourceFile* cmMakefile::GetSource(const std::string& sourceName) const
 {
   cmSourceFileLocation sfl(this, sourceName);
-  for (std::vector<cmSourceFile*>::const_iterator sfi =
-         this->SourceFiles.begin();
-       sfi != this->SourceFiles.end(); ++sfi) {
-    cmSourceFile* sf = *sfi;
+  for (cmSourceFile* sf : this->SourceFiles) {
     if (sf->Matches(sfl)) {
       return sf;
     }
@@ -3166,12 +3133,11 @@ void cmMakefile::EnableLanguage(std::vector<std::string> const& lang,
   std::vector<std::string> langs;
   std::vector<std::string> langsRC;
   langs.reserve(lang.size());
-  for (std::vector<std::string>::const_iterator i = lang.begin();
-       i != lang.end(); ++i) {
-    if (*i == "RC") {
-      langsRC.push_back(*i);
+  for (std::string const& i : lang) {
+    if (i == "RC") {
+      langsRC.push_back(i);
     } else {
-      langs.push_back(*i);
+      langs.push_back(i);
     }
   }
   if (!langs.empty()) {
@@ -3365,9 +3331,7 @@ std::string cmMakefile::GetModulesFile(const char* filename) const
     cmSystemTools::ExpandListArgument(cmakeModulePath, modulePath);
 
     // Look through the possible module directories.
-    for (std::vector<std::string>::iterator i = modulePath.begin();
-         i != modulePath.end(); ++i) {
-      std::string itempl = *i;
+    for (std::string itempl : modulePath) {
       cmSystemTools::ConvertToUnixSlashes(itempl);
       itempl += "/";
       itempl += filename;
@@ -3657,14 +3621,13 @@ void cmMakefile::AddCMakeDependFilesFromUser()
   if (const char* deps_str = this->GetProperty("CMAKE_CONFIGURE_DEPENDS")) {
     cmSystemTools::ExpandListArgument(deps_str, deps);
   }
-  for (std::vector<std::string>::iterator i = deps.begin(); i != deps.end();
-       ++i) {
-    if (cmSystemTools::FileIsFullPath(i->c_str())) {
-      this->AddCMakeDependFile(*i);
+  for (std::string const& dep : deps) {
+    if (cmSystemTools::FileIsFullPath(dep.c_str())) {
+      this->AddCMakeDependFile(dep);
     } else {
       std::string f = this->GetCurrentSourceDirectory();
       f += "/";
-      f += *i;
+      f += dep;
       this->AddCMakeDependFile(f);
     }
   }

+ 8 - 10
Source/cmMakefileExecutableTargetGenerator.cxx

@@ -256,11 +256,10 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule(
 
     // Expand placeholders in the commands.
     rulePlaceholderExpander->SetTargetImpLib(targetOutputReal);
-    for (std::vector<std::string>::iterator i = real_link_commands.begin();
-         i != real_link_commands.end(); ++i) {
-      *i = launcher + *i;
-      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, *i,
-                                                   vars);
+    for (std::string& real_link_command : real_link_commands) {
+      real_link_command = launcher + real_link_command;
+      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
+                                                   real_link_command, vars);
     }
 
     // Restore path conversion to normal shells.
@@ -638,11 +637,10 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
 
     // Expand placeholders in the commands.
     rulePlaceholderExpander->SetTargetImpLib(targetOutPathImport);
-    for (std::vector<std::string>::iterator i = real_link_commands.begin();
-         i != real_link_commands.end(); ++i) {
-      *i = launcher + *i;
-      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, *i,
-                                                   vars);
+    for (std::string& real_link_command : real_link_commands) {
+      real_link_command = launcher + real_link_command;
+      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
+                                                   real_link_command, vars);
     }
 
     // Restore path conversion to normal shells.

+ 14 - 22
Source/cmMakefileLibraryTargetGenerator.cxx

@@ -419,11 +419,10 @@ void cmMakefileLibraryTargetGenerator::WriteDeviceLibraryRules(
     cmSystemTools::ExpandListArgument(linkRule, real_link_commands);
 
     // Expand placeholders.
-    for (std::vector<std::string>::iterator i = real_link_commands.begin();
-         i != real_link_commands.end(); ++i) {
-      *i = launcher + *i;
-      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, *i,
-                                                   vars);
+    for (std::string& real_link_command : real_link_commands) {
+      real_link_command = launcher + real_link_command;
+      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
+                                                   real_link_command, vars);
     }
     // Restore path conversion to normal shells.
     this->LocalGenerator->SetLinkScriptShell(false);
@@ -897,10 +896,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules(
       std::vector<std::string>::iterator osi = object_strings.begin();
       {
         vars.Objects = osi->c_str();
-        for (std::vector<std::string>::const_iterator i =
-               archiveCreateCommands.begin();
-             i != archiveCreateCommands.end(); ++i) {
-          std::string cmd = launcher + *i;
+        for (std::string const& acc : archiveCreateCommands) {
+          std::string cmd = launcher + acc;
           rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
                                                        cmd, vars);
           real_link_commands.push_back(cmd);
@@ -909,10 +906,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules(
       // Append to the archive with the other object sets.
       for (++osi; osi != object_strings.end(); ++osi) {
         vars.Objects = osi->c_str();
-        for (std::vector<std::string>::const_iterator i =
-               archiveAppendCommands.begin();
-             i != archiveAppendCommands.end(); ++i) {
-          std::string cmd = launcher + *i;
+        for (std::string const& aac : archiveAppendCommands) {
+          std::string cmd = launcher + aac;
           rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
                                                        cmd, vars);
           real_link_commands.push_back(cmd);
@@ -920,10 +915,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules(
       }
       // Finish the archive.
       vars.Objects = "";
-      for (std::vector<std::string>::const_iterator i =
-             archiveFinishCommands.begin();
-           i != archiveFinishCommands.end(); ++i) {
-        std::string cmd = launcher + *i;
+      for (std::string const& afc : archiveFinishCommands) {
+        std::string cmd = launcher + afc;
         rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, cmd,
                                                      vars);
         // If there is no ranlib the command will be ":".  Skip it.
@@ -945,11 +938,10 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules(
       }
 
       // Expand placeholders.
-      for (std::vector<std::string>::iterator i = real_link_commands.begin();
-           i != real_link_commands.end(); ++i) {
-        *i = launcher + *i;
-        rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, *i,
-                                                     vars);
+      for (std::string& real_link_command : real_link_commands) {
+        real_link_command = launcher + real_link_command;
+        rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
+                                                     real_link_command, vars);
       }
     }
 

+ 71 - 110
Source/cmMakefileTargetGenerator.cxx

@@ -153,18 +153,16 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
   this->GeneratorTarget->GetCustomCommands(customCommands, config);
   std::string currentBinDir =
     this->LocalGenerator->GetCurrentBinaryDirectory();
-  for (std::vector<cmSourceFile const*>::const_iterator si =
-         customCommands.begin();
-       si != customCommands.end(); ++si) {
-    cmCustomCommandGenerator ccg(*(*si)->GetCustomCommand(), this->ConfigName,
+  for (cmSourceFile const* sf : customCommands) {
+    cmCustomCommandGenerator ccg(*sf->GetCustomCommand(), this->ConfigName,
                                  this->LocalGenerator);
     this->GenerateCustomRuleFile(ccg);
     if (clean) {
       const std::vector<std::string>& outputs = ccg.GetOutputs();
-      for (std::vector<std::string>::const_iterator o = outputs.begin();
-           o != outputs.end(); ++o) {
+      for (std::string const& output : outputs) {
         this->CleanFiles.push_back(
-          this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir, *o));
+          this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir,
+                                                           output));
       }
     }
   }
@@ -178,18 +176,14 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
     extraSources, this->MacOSXContentGenerator);
   std::vector<cmSourceFile const*> externalObjects;
   this->GeneratorTarget->GetExternalObjects(externalObjects, config);
-  for (std::vector<cmSourceFile const*>::const_iterator si =
-         externalObjects.begin();
-       si != externalObjects.end(); ++si) {
-    this->ExternalObjects.push_back((*si)->GetFullPath());
+  for (cmSourceFile const* sf : externalObjects) {
+    this->ExternalObjects.push_back(sf->GetFullPath());
   }
   std::vector<cmSourceFile const*> objectSources;
   this->GeneratorTarget->GetObjectSources(objectSources, config);
-  for (std::vector<cmSourceFile const*>::const_iterator si =
-         objectSources.begin();
-       si != objectSources.end(); ++si) {
+  for (cmSourceFile const* sf : objectSources) {
     // Generate this object file's rule file.
-    this->WriteObjectRuleFiles(**si);
+    this->WriteObjectRuleFiles(*sf);
   }
 }
 
@@ -272,28 +266,26 @@ void cmMakefileTargetGenerator::WriteTargetLanguageFlags()
     languages, this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
   // put the compiler in the rules.make file so that if it changes
   // things rebuild
-  for (std::set<std::string>::const_iterator l = languages.begin();
-       l != languages.end(); ++l) {
+  for (std::string const& language : languages) {
     std::string compiler = "CMAKE_";
-    compiler += *l;
+    compiler += language;
     compiler += "_COMPILER";
-    *this->FlagFileStream << "# compile " << *l << " with "
+    *this->FlagFileStream << "# compile " << language << " with "
                           << this->Makefile->GetSafeDefinition(compiler)
                           << "\n";
   }
 
-  for (std::set<std::string>::const_iterator l = languages.begin();
-       l != languages.end(); ++l) {
-    std::string flags = this->GetFlags(*l);
-    std::string defines = this->GetDefines(*l);
-    std::string includes = this->GetIncludes(*l);
+  for (std::string const& language : languages) {
+    std::string flags = this->GetFlags(language);
+    std::string defines = this->GetDefines(language);
+    std::string includes = this->GetIncludes(language);
     // Escape comment characters so they do not terminate assignment.
     cmSystemTools::ReplaceString(flags, "#", "\\#");
     cmSystemTools::ReplaceString(defines, "#", "\\#");
     cmSystemTools::ReplaceString(includes, "#", "\\#");
-    *this->FlagFileStream << *l << "_FLAGS = " << flags << "\n\n";
-    *this->FlagFileStream << *l << "_DEFINES = " << defines << "\n\n";
-    *this->FlagFileStream << *l << "_INCLUDES = " << includes << "\n\n";
+    *this->FlagFileStream << language << "_FLAGS = " << flags << "\n\n";
+    *this->FlagFileStream << language << "_DEFINES = " << defines << "\n\n";
+    *this->FlagFileStream << language << "_INCLUDES = " << includes << "\n\n";
   }
 }
 
@@ -673,10 +665,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
       if (clauncher && *clauncher) {
         std::vector<std::string> launcher_cmd;
         cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true);
-        for (std::vector<std::string>::iterator i = launcher_cmd.begin(),
-                                                e = launcher_cmd.end();
-             i != e; ++i) {
-          *i = this->LocalGenerator->EscapeForShell(*i);
+        for (std::string& i : launcher_cmd) {
+          i = this->LocalGenerator->EscapeForShell(i);
         }
         std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " ";
         compileCommands.front().insert(0, run_launcher);
@@ -694,11 +684,10 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
     }
 
     // Expand placeholders in the commands.
-    for (std::vector<std::string>::iterator i = compileCommands.begin();
-         i != compileCommands.end(); ++i) {
-      *i = launcher + *i;
-      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, *i,
-                                                   vars);
+    for (std::string& compileCommand : compileCommands) {
+      compileCommand = launcher + compileCommand;
+      rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
+                                                   compileCommand, vars);
     }
 
     // Change the command working directory to the local build tree.
@@ -759,11 +748,10 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
         vars.PreprocessedSource = shellObjI.c_str();
 
         // Expand placeholders in the commands.
-        for (std::vector<std::string>::iterator i = preprocessCommands.begin();
-             i != preprocessCommands.end(); ++i) {
+        for (std::string& preprocessCommand : preprocessCommands) {
           // no launcher for preprocessor commands
-          rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
-                                                       *i, vars);
+          rulePlaceholderExpander->ExpandRuleVariables(
+            this->LocalGenerator, preprocessCommand, vars);
         }
 
         this->LocalGenerator->CreateCDCommand(
@@ -808,11 +796,10 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
         vars.AssemblySource = shellObjS.c_str();
 
         // Expand placeholders in the commands.
-        for (std::vector<std::string>::iterator i = assemblyCommands.begin();
-             i != assemblyCommands.end(); ++i) {
+        for (std::string& assemblyCommand : assemblyCommands) {
           // no launcher for assembly commands
           rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator,
-                                                       *i, vars);
+                                                       assemblyCommand, vars);
         }
 
         this->LocalGenerator->CreateCDCommand(
@@ -880,10 +867,9 @@ void cmMakefileTargetGenerator::WriteTargetRequiresRules()
   // This target drives dependency generation for all object files.
   std::string relPath = this->LocalGenerator->GetHomeRelativeOutputPath();
   std::string objTarget;
-  for (std::vector<std::string>::const_iterator obj = this->Objects.begin();
-       obj != this->Objects.end(); ++obj) {
+  for (std::string const& obj : this->Objects) {
     objTarget = relPath;
-    objTarget += *obj;
+    objTarget += obj;
     objTarget += ".requires";
     depends.push_back(objTarget);
   }
@@ -1007,12 +993,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules()
       << "# Pairs of files generated by the same build rule.\n"
       << "set(CMAKE_MULTIPLE_OUTPUT_PAIRS\n";
     /* clang-format on */
-    for (MultipleOutputPairsType::const_iterator pi =
-           this->MultipleOutputPairs.begin();
-         pi != this->MultipleOutputPairs.end(); ++pi) {
+    for (auto const& pi : this->MultipleOutputPairs) {
       *this->InfoFileStream
-        << "  " << cmOutputConverter::EscapeForCMake(pi->first) << " "
-        << cmOutputConverter::EscapeForCMake(pi->second) << "\n";
+        << "  " << cmOutputConverter::EscapeForCMake(pi.first) << " "
+        << cmOutputConverter::EscapeForCMake(pi.second) << "\n";
     }
     *this->InfoFileStream << "  )\n\n";
   }
@@ -1026,9 +1010,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules()
     << "set(CMAKE_TARGET_LINKED_INFO_FILES\n";
     /* clang-format on */
     std::vector<std::string> dirs = this->GetLinkedTargetDirectories();
-    for (std::vector<std::string>::iterator i = dirs.begin(); i != dirs.end();
-         ++i) {
-      *this->InfoFileStream << "  \"" << *i << "/DependInfo.cmake\"\n";
+    for (std::string const& d : dirs) {
+      *this->InfoFileStream << "  \"" << d << "/DependInfo.cmake\"\n";
     }
     *this->InfoFileStream << "  )\n";
   }
@@ -1126,9 +1109,8 @@ void cmMakefileTargetGenerator::DriveCustomCommands(
   std::vector<cmSourceFile*> sources;
   this->GeneratorTarget->GetSourceFiles(
     sources, this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-  for (std::vector<cmSourceFile*>::const_iterator source = sources.begin();
-       source != sources.end(); ++source) {
-    if (cmCustomCommand* cc = (*source)->GetCustomCommand()) {
+  for (cmSourceFile* source : sources) {
+    if (cmCustomCommand* cc = source->GetCustomCommand()) {
       cmCustomCommandGenerator ccg(*cc, this->ConfigName,
                                    this->LocalGenerator);
       const std::vector<std::string>& outputs = ccg.GetOutputs();
@@ -1187,12 +1169,10 @@ void cmMakefileTargetGenerator::GenerateCustomRuleFile(
   }
 
   // Setup implicit dependency scanning.
-  for (cmCustomCommand::ImplicitDependsList::const_iterator idi =
-         ccg.GetCC().GetImplicitDepends().begin();
-       idi != ccg.GetCC().GetImplicitDepends().end(); ++idi) {
+  for (auto const& idi : ccg.GetCC().GetImplicitDepends()) {
     std::string objFullPath = cmSystemTools::CollapseFullPath(outputs[0]);
-    std::string srcFullPath = cmSystemTools::CollapseFullPath(idi->second);
-    this->LocalGenerator->AddImplicitDepends(this->GeneratorTarget, idi->first,
+    std::string srcFullPath = cmSystemTools::CollapseFullPath(idi.second);
+    this->LocalGenerator->AddImplicitDepends(this->GeneratorTarget, idi.first,
                                              objFullPath.c_str(),
                                              srcFullPath.c_str());
   }
@@ -1225,11 +1205,10 @@ void cmMakefileTargetGenerator::WriteObjectsVariable(
   if (!lineContinue) {
     lineContinue = "\\";
   }
-  for (std::vector<std::string>::const_iterator i = this->Objects.begin();
-       i != this->Objects.end(); ++i) {
+  for (std::string const& obj : this->Objects) {
     *this->BuildFileStream << " " << lineContinue << "\n";
     *this->BuildFileStream << this->LocalGenerator->ConvertToQuotedOutputPath(
-      i->c_str(), useWatcomQuote);
+      obj.c_str(), useWatcomQuote);
   }
   *this->BuildFileStream << "\n";
 
@@ -1246,14 +1225,12 @@ void cmMakefileTargetGenerator::WriteObjectsVariable(
   /* clang-format on */
   std::string currentBinDir =
     this->LocalGenerator->GetCurrentBinaryDirectory();
-  for (std::vector<std::string>::const_iterator i =
-         this->ExternalObjects.begin();
-       i != this->ExternalObjects.end(); ++i) {
+  for (std::string const& obj : this->ExternalObjects) {
     object =
-      this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir, *i);
+      this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir, obj);
     *this->BuildFileStream << " " << lineContinue << "\n";
     *this->BuildFileStream << this->LocalGenerator->ConvertToQuotedOutputPath(
-      i->c_str(), useWatcomQuote);
+      obj.c_str(), useWatcomQuote);
   }
   *this->BuildFileStream << "\n"
                          << "\n";
@@ -1323,14 +1300,11 @@ void cmMakefileTargetGenerator::WriteObjectsStrings(
   cmMakefileTargetGeneratorObjectStrings helper(
     objStrings, this->LocalGenerator,
     this->LocalGenerator->GetStateSnapshot().GetDirectory(), limit);
-  for (std::vector<std::string>::const_iterator i = this->Objects.begin();
-       i != this->Objects.end(); ++i) {
-    helper.Feed(*i);
+  for (std::string const& obj : this->Objects) {
+    helper.Feed(obj);
   }
-  for (std::vector<std::string>::const_iterator i =
-         this->ExternalObjects.begin();
-       i != this->ExternalObjects.end(); ++i) {
-    helper.Feed(*i);
+  for (std::string const& obj : this->ExternalObjects) {
+    helper.Feed(obj);
   }
   helper.Done();
 }
@@ -1398,10 +1372,9 @@ void cmMakefileTargetGenerator::AppendObjectDepends(
   // Add dependencies on the compiled object files.
   std::string relPath = this->LocalGenerator->GetHomeRelativeOutputPath();
   std::string objTarget;
-  for (std::vector<std::string>::const_iterator obj = this->Objects.begin();
-       obj != this->Objects.end(); ++obj) {
+  for (std::string const& obj : this->Objects) {
     objTarget = relPath;
-    objTarget += *obj;
+    objTarget += obj;
     depends.push_back(objTarget);
   }
 
@@ -1426,19 +1399,16 @@ void cmMakefileTargetGenerator::AppendLinkDepends(
   if (cmGeneratorTarget::ModuleDefinitionInfo const* mdi =
         this->GeneratorTarget->GetModuleDefinitionInfo(
           this->GetConfigName())) {
-    for (std::vector<cmSourceFile const*>::const_iterator i =
-           mdi->Sources.begin();
-         i != mdi->Sources.end(); ++i) {
-      depends.push_back((*i)->GetFullPath());
+    for (cmSourceFile const* src : mdi->Sources) {
+      depends.push_back(src->GetFullPath());
     }
   }
 
   // Add a dependency on user-specified manifest files, if any.
   std::vector<cmSourceFile const*> manifest_srcs;
   this->GeneratorTarget->GetManifests(manifest_srcs, this->ConfigName);
-  for (std::vector<cmSourceFile const*>::iterator mi = manifest_srcs.begin();
-       mi != manifest_srcs.end(); ++mi) {
-    depends.push_back((*mi)->GetFullPath());
+  for (cmSourceFile const* manifest_src : manifest_srcs) {
+    depends.push_back(manifest_src->GetFullPath());
   }
 
   // Add user-specified dependencies.
@@ -1481,12 +1451,11 @@ void cmMakefileTargetGenerator::CreateLinkScript(
   linkScriptName += name;
   cmGeneratedFileStream linkScriptStream(linkScriptName.c_str());
   linkScriptStream.SetCopyIfDifferent(true);
-  for (std::vector<std::string>::const_iterator cmd = link_commands.begin();
-       cmd != link_commands.end(); ++cmd) {
+  for (std::string const& link_command : link_commands) {
     // Do not write out empty commands or commands beginning in the
     // shell no-op ":".
-    if (!cmd->empty() && (*cmd)[0] != ':') {
-      linkScriptStream << *cmd << "\n";
+    if (!link_command.empty() && link_command[0] != ':') {
+      linkScriptStream << link_command << "\n";
     }
   }
 
@@ -1521,14 +1490,11 @@ bool cmMakefileTargetGenerator::CheckUseResponseFileForObjects(
     // actual list will likely be much shorter than this.  However, in the
     // worst case all objects will remain as absolute paths.
     size_t length = 0;
-    for (std::vector<std::string>::const_iterator i = this->Objects.begin();
-         i != this->Objects.end(); ++i) {
-      length += i->size() + 3;
+    for (std::string const& obj : this->Objects) {
+      length += obj.size() + 3;
     }
-    for (std::vector<std::string>::const_iterator i =
-           this->ExternalObjects.begin();
-         i != this->ExternalObjects.end(); ++i) {
-      length += i->size() + 3;
+    for (std::string const& ext_obj : this->ExternalObjects) {
+      length += ext_obj.size() + 3;
     }
 
     // We need to guarantee room for both objects and libraries, so
@@ -1751,22 +1717,17 @@ void cmMakefileTargetGenerator::GenDefFile(
   cmGeneratedFileStream fout(objlist_file.c_str());
 
   if (mdi->WindowsExportAllSymbols) {
-    for (std::vector<std::string>::const_iterator i = this->Objects.begin();
-         i != this->Objects.end(); ++i) {
-      if (cmHasLiteralSuffix(*i, ".obj")) {
-        fout << *i << "\n";
+    for (std::string const& obj : this->Objects) {
+      if (cmHasLiteralSuffix(obj, ".obj")) {
+        fout << obj << "\n";
       }
     }
-    for (std::vector<std::string>::const_iterator i =
-           this->ExternalObjects.begin();
-         i != this->ExternalObjects.end(); ++i) {
-      fout << *i << "\n";
+    for (std::string const& obj : this->ExternalObjects) {
+      fout << obj << "\n";
     }
   }
 
-  for (std::vector<cmSourceFile const*>::const_iterator i =
-         mdi->Sources.begin();
-       i != mdi->Sources.end(); ++i) {
-    fout << (*i)->GetFullPath() << "\n";
+  for (cmSourceFile const* src : mdi->Sources) {
+    fout << src->GetFullPath() << "\n";
   }
 }

+ 24 - 36
Source/cmNinjaNormalTargetGenerator.cxx

@@ -10,7 +10,6 @@
 #include <sstream>
 
 #include "cmAlgorithms.h"
-#include "cmCustomCommand.h"
 #include "cmCustomCommandGenerator.h"
 #include "cmGeneratedFileStream.h"
 #include "cmGeneratorTarget.h"
@@ -33,6 +32,8 @@
 #include "cm_auto_ptr.hxx"
 #include "cmake.h"
 
+class cmCustomCommand;
+
 cmNinjaNormalTargetGenerator::cmNinjaNormalTargetGenerator(
   cmGeneratorTarget* target)
   : cmNinjaTargetGenerator(target)
@@ -112,17 +113,14 @@ void cmNinjaNormalTargetGenerator::WriteLanguagesRules()
   std::vector<cmSourceFile const*> sourceFiles;
   this->GetGeneratorTarget()->GetObjectSources(
     sourceFiles, this->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-  for (std::vector<cmSourceFile const*>::const_iterator i =
-         sourceFiles.begin();
-       i != sourceFiles.end(); ++i) {
-    const std::string& lang = (*i)->GetLanguage();
+  for (cmSourceFile const* sf : sourceFiles) {
+    std::string const lang = sf->GetLanguage();
     if (!lang.empty()) {
       languages.insert(lang);
     }
   }
-  for (std::set<std::string>::const_iterator l = languages.begin();
-       l != languages.end(); ++l) {
-    this->WriteLanguageRules(*l);
+  for (std::string const& language : languages) {
+    this->WriteLanguageRules(language);
   }
 }
 
@@ -248,11 +246,10 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkRule(bool useResponseFile)
 
     // Rule for linking library/executable.
     std::vector<std::string> linkCmds = this->ComputeDeviceLinkCmd();
-    for (std::vector<std::string>::iterator i = linkCmds.begin();
-         i != linkCmds.end(); ++i) {
-      *i = launcher + *i;
+    for (std::string& linkCmd : linkCmds) {
+      linkCmd = launcher + linkCmd;
       rulePlaceholderExpander->ExpandRuleVariables(this->GetLocalGenerator(),
-                                                   *i, vars);
+                                                   linkCmd, vars);
     }
 
     // If there is no ranlib the command will be ":".  Skip it.
@@ -373,11 +370,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkRule(bool useResponseFile)
 
     // Rule for linking library/executable.
     std::vector<std::string> linkCmds = this->ComputeLinkCmd();
-    for (std::vector<std::string>::iterator i = linkCmds.begin();
-         i != linkCmds.end(); ++i) {
-      *i = launcher + *i;
+    for (std::string& linkCmd : linkCmds) {
+      linkCmd = launcher + linkCmd;
       rulePlaceholderExpander->ExpandRuleVariables(this->GetLocalGenerator(),
-                                                   *i, vars);
+                                                   linkCmd, vars);
     }
 
     // If there is no ranlib the command will be ":".  Skip it.
@@ -731,10 +727,8 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement()
                                                 &postBuildCmdLines };
 
   for (unsigned i = 0; i != 3; ++i) {
-    for (std::vector<cmCustomCommand>::const_iterator ci =
-           cmdLists[i]->begin();
-         ci != cmdLists[i]->end(); ++ci) {
-      cmCustomCommandGenerator ccg(*ci, cfgName, this->GetLocalGenerator());
+    for (cmCustomCommand const& cc : *cmdLists[i]) {
+      cmCustomCommandGenerator ccg(cc, cfgName, this->GetLocalGenerator());
       localGen.AppendCustomCommandLines(ccg, *cmdLineLists[i]);
       std::vector<std::string> const& ccByproducts = ccg.GetByproducts();
       std::transform(ccByproducts.begin(), ccByproducts.end(),
@@ -960,10 +954,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
                                                 &postBuildCmdLines };
 
   for (unsigned i = 0; i != 3; ++i) {
-    for (std::vector<cmCustomCommand>::const_iterator ci =
-           cmdLists[i]->begin();
-         ci != cmdLists[i]->end(); ++ci) {
-      cmCustomCommandGenerator ccg(*ci, cfgName, this->GetLocalGenerator());
+    for (cmCustomCommand const& cc : *cmdLists[i]) {
+      cmCustomCommandGenerator ccg(cc, cfgName, this->GetLocalGenerator());
       localGen.AppendCustomCommandLines(ccg, *cmdLineLists[i]);
       std::vector<std::string> const& ccByproducts = ccg.GetByproducts();
       std::transform(ccByproducts.begin(), ccByproducts.end(),
@@ -993,17 +985,15 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
 
     if (mdi->WindowsExportAllSymbols) {
       cmNinjaDeps objs = this->GetObjects();
-      for (cmNinjaDeps::iterator i = objs.begin(); i != objs.end(); ++i) {
-        if (cmHasLiteralSuffix(*i, ".obj")) {
-          fout << *i << "\n";
+      for (std::string const& obj : objs) {
+        if (cmHasLiteralSuffix(obj, ".obj")) {
+          fout << obj << "\n";
         }
       }
     }
 
-    for (std::vector<cmSourceFile const*>::const_iterator i =
-           mdi->Sources.begin();
-         i != mdi->Sources.end(); ++i) {
-      fout << (*i)->GetFullPath() << "\n";
+    for (cmSourceFile const* src : mdi->Sources) {
+      fout << src->GetFullPath() << "\n";
     }
   }
   // If we have any PRE_LINK commands, we need to go back to CMAKE_BINARY_DIR
@@ -1050,11 +1040,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
   // Ninja should restat after linking if and only if there are byproducts.
   vars["RESTAT"] = byproducts.empty() ? "" : "1";
 
-  for (cmNinjaDeps::const_iterator oi = byproducts.begin(),
-                                   oe = byproducts.end();
-       oi != oe; ++oi) {
-    this->GetGlobalGenerator()->SeenCustomCommandOutput(*oi);
-    outputs.push_back(*oi);
+  for (std::string const& o : byproducts) {
+    this->GetGlobalGenerator()->SeenCustomCommandOutput(o);
+    outputs.push_back(o);
   }
 
   // Write the build statement for this target.

+ 28 - 48
Source/cmNinjaTargetGenerator.cxx

@@ -215,19 +215,16 @@ cmNinjaDeps cmNinjaTargetGenerator::ComputeLinkDeps() const
   if (cmGeneratorTarget::ModuleDefinitionInfo const* mdi =
         this->GeneratorTarget->GetModuleDefinitionInfo(
           this->GetConfigName())) {
-    for (std::vector<cmSourceFile const*>::const_iterator i =
-           mdi->Sources.begin();
-         i != mdi->Sources.end(); ++i) {
-      result.push_back(this->ConvertToNinjaPath((*i)->GetFullPath()));
+    for (cmSourceFile const* src : mdi->Sources) {
+      result.push_back(this->ConvertToNinjaPath(src->GetFullPath()));
     }
   }
 
   // Add a dependency on user-specified manifest files, if any.
   std::vector<cmSourceFile const*> manifest_srcs;
   this->GeneratorTarget->GetManifests(manifest_srcs, this->ConfigName);
-  for (std::vector<cmSourceFile const*>::iterator mi = manifest_srcs.begin();
-       mi != manifest_srcs.end(); ++mi) {
-    result.push_back(this->ConvertToNinjaPath((*mi)->GetFullPath()));
+  for (cmSourceFile const* manifest_src : manifest_srcs) {
+    result.push_back(this->ConvertToNinjaPath(manifest_src->GetFullPath()));
   }
 
   // Add user-specified dependencies.
@@ -519,11 +516,10 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang)
     std::vector<std::string> ppCmds;
     cmSystemTools::ExpandListArgument(ppCmd, ppCmds);
 
-    for (std::vector<std::string>::iterator i = ppCmds.begin();
-         i != ppCmds.end(); ++i) {
-      *i = launcher + *i;
+    for (std::string& i : ppCmds) {
+      i = launcher + i;
       rulePlaceholderExpander->ExpandRuleVariables(this->GetLocalGenerator(),
-                                                   *i, ppVars);
+                                                   i, ppVars);
     }
 
     // Run CMake dependency scanner on preprocessed output.
@@ -657,10 +653,8 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang)
     if (clauncher && *clauncher) {
       std::vector<std::string> launcher_cmd;
       cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true);
-      for (std::vector<std::string>::iterator i = launcher_cmd.begin(),
-                                              e = launcher_cmd.end();
-           i != e; ++i) {
-        *i = this->LocalGenerator->EscapeForShell(*i);
+      for (std::string& i : launcher_cmd) {
+        i = this->LocalGenerator->EscapeForShell(i);
       }
       std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " ";
       compileCmds.front().insert(0, run_launcher);
@@ -671,10 +665,9 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang)
     compileCmds.front().insert(0, cldeps);
   }
 
-  for (std::vector<std::string>::iterator i = compileCmds.begin();
-       i != compileCmds.end(); ++i) {
-    *i = launcher + *i;
-    rulePlaceholderExpander->ExpandRuleVariables(this->GetLocalGenerator(), *i,
+  for (std::string& i : compileCmds) {
+    i = launcher + i;
+    rulePlaceholderExpander->ExpandRuleVariables(this->GetLocalGenerator(), i,
                                                  vars);
   }
 
@@ -705,10 +698,8 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
   std::string config = this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
   std::vector<cmSourceFile const*> customCommands;
   this->GeneratorTarget->GetCustomCommands(customCommands, config);
-  for (std::vector<cmSourceFile const*>::const_iterator si =
-         customCommands.begin();
-       si != customCommands.end(); ++si) {
-    cmCustomCommand const* cc = (*si)->GetCustomCommand();
+  for (cmSourceFile const* sf : customCommands) {
+    cmCustomCommand const* cc = sf->GetCustomCommand();
     this->GetLocalGenerator()->AddCustomCommandTarget(
       cc, this->GetGeneratorTarget());
     // Record the custom commands for this target. The container is used
@@ -725,10 +716,8 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
     extraSources, this->MacOSXContentGenerator);
   std::vector<cmSourceFile const*> externalObjects;
   this->GeneratorTarget->GetExternalObjects(externalObjects, config);
-  for (std::vector<cmSourceFile const*>::const_iterator si =
-         externalObjects.begin();
-       si != externalObjects.end(); ++si) {
-    this->Objects.push_back(this->GetSourceFilePath(*si));
+  for (cmSourceFile const* sf : externalObjects) {
+    this->Objects.push_back(this->GetSourceFilePath(sf));
   }
 
   cmNinjaDeps orderOnlyDeps;
@@ -740,10 +729,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
                        this->ExtraFiles.end());
 
   // Add order-only dependencies on custom command outputs.
-  for (std::vector<cmCustomCommand const*>::const_iterator cci =
-         this->CustomCommands.begin();
-       cci != this->CustomCommands.end(); ++cci) {
-    cmCustomCommand const* cc = *cci;
+  for (cmCustomCommand const* cc : this->CustomCommands) {
     cmCustomCommandGenerator ccg(*cc, this->GetConfigName(),
                                  this->GetLocalGenerator());
     const std::vector<std::string>& ccoutputs = ccg.GetOutputs();
@@ -768,10 +754,8 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
   }
   std::vector<cmSourceFile const*> objectSources;
   this->GeneratorTarget->GetObjectSources(objectSources, config);
-  for (std::vector<cmSourceFile const*>::const_iterator si =
-         objectSources.begin();
-       si != objectSources.end(); ++si) {
-    this->WriteObjectBuildStatement(*si);
+  for (cmSourceFile const* sf : objectSources) {
+    this->WriteObjectBuildStatement(sf);
   }
 
   if (!this->DDIFiles.empty()) {
@@ -848,10 +832,9 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
   if (const char* objectDeps = source->GetProperty("OBJECT_DEPENDS")) {
     std::vector<std::string> depList;
     cmSystemTools::ExpandListArgument(objectDeps, depList);
-    for (std::vector<std::string>::iterator odi = depList.begin();
-         odi != depList.end(); ++odi) {
-      if (cmSystemTools::FileIsFullPath(*odi)) {
-        *odi = cmSystemTools::CollapseFullPath(*odi);
+    for (std::string& odi : depList) {
+      if (cmSystemTools::FileIsFullPath(odi)) {
+        odi = cmSystemTools::CollapseFullPath(odi);
       }
     }
     std::transform(depList.begin(), depList.end(),
@@ -1019,19 +1002,17 @@ void cmNinjaTargetGenerator::WriteTargetDependInfo(std::string const& lang)
   std::vector<std::string> includes;
   this->LocalGenerator->GetIncludeDirectories(includes, this->GeneratorTarget,
                                               lang, this->GetConfigName());
-  for (std::vector<std::string>::iterator i = includes.begin();
-       i != includes.end(); ++i) {
+  for (std::string const& i : includes) {
     // Convert the include directories the same way we do for -I flags.
     // See upstream ninja issue 1251.
-    tdi_include_dirs.append(this->ConvertToNinjaPath(*i));
+    tdi_include_dirs.append(this->ConvertToNinjaPath(i));
   }
 
   Json::Value& tdi_linked_target_dirs = tdi["linked-target-dirs"] =
     Json::arrayValue;
   std::vector<std::string> linked = this->GetLinkedTargetDirectories();
-  for (std::vector<std::string>::iterator i = linked.begin();
-       i != linked.end(); ++i) {
-    tdi_linked_target_dirs.append(*i);
+  for (std::string const& l : linked) {
+    tdi_linked_target_dirs.append(l);
   }
 
   std::string const tdin = this->GetTargetDependInfoPath(lang);
@@ -1099,10 +1080,9 @@ void cmNinjaTargetGenerator::ExportObjectCompileCommand(
   CM_AUTO_PTR<cmRulePlaceholderExpander> rulePlaceholderExpander(
     this->GetLocalGenerator()->CreateRulePlaceholderExpander());
 
-  for (std::vector<std::string>::iterator i = compileCmds.begin();
-       i != compileCmds.end(); ++i) {
+  for (std::string& i : compileCmds) {
     // no launcher for CMAKE_EXPORT_COMPILE_COMMANDS
-    rulePlaceholderExpander->ExpandRuleVariables(this->GetLocalGenerator(), *i,
+    rulePlaceholderExpander->ExpandRuleVariables(this->GetLocalGenerator(), i,
                                                  compileObjectVars);
   }
 

+ 7 - 12
Source/cmNinjaUtilityTargetGenerator.cxx

@@ -51,17 +51,15 @@ void cmNinjaUtilityTargetGenerator::Generate()
   bool uses_terminal = false;
 
   for (unsigned i = 0; i != 2; ++i) {
-    for (std::vector<cmCustomCommand>::const_iterator ci =
-           cmdLists[i]->begin();
-         ci != cmdLists[i]->end(); ++ci) {
-      cmCustomCommandGenerator ccg(*ci, this->GetConfigName(),
+    for (cmCustomCommand const& ci : *cmdLists[i]) {
+      cmCustomCommandGenerator ccg(ci, this->GetConfigName(),
                                    this->GetLocalGenerator());
       this->GetLocalGenerator()->AppendCustomCommandDeps(ccg, deps);
       this->GetLocalGenerator()->AppendCustomCommandLines(ccg, commands);
       std::vector<std::string> const& ccByproducts = ccg.GetByproducts();
       std::transform(ccByproducts.begin(), ccByproducts.end(),
                      std::back_inserter(util_outputs), MapToNinjaPath());
-      if (ci->GetUsesTerminal()) {
+      if (ci.GetUsesTerminal()) {
         uses_terminal = true;
       }
     }
@@ -71,9 +69,8 @@ void cmNinjaUtilityTargetGenerator::Generate()
   std::string config =
     this->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE");
   this->GetGeneratorTarget()->GetSourceFiles(sources, config);
-  for (std::vector<cmSourceFile*>::const_iterator source = sources.begin();
-       source != sources.end(); ++source) {
-    if (cmCustomCommand* cc = (*source)->GetCustomCommand()) {
+  for (cmSourceFile const* source : sources) {
+    if (cmCustomCommand const* cc = source->GetCustomCommand()) {
       cmCustomCommandGenerator ccg(*cc, this->GetConfigName(),
                                    this->GetLocalGenerator());
       this->GetLocalGenerator()->AddCustomCommandTarget(
@@ -132,10 +129,8 @@ void cmNinjaUtilityTargetGenerator::Generate()
       return;
     }
 
-    for (cmNinjaDeps::const_iterator oi = util_outputs.begin(),
-                                     oe = util_outputs.end();
-         oi != oe; ++oi) {
-      this->GetGlobalGenerator()->SeenCustomCommandOutput(*oi);
+    for (std::string const& util_output : util_outputs) {
+      this->GetGlobalGenerator()->SeenCustomCommandOutput(util_output);
     }
 
     this->GetGlobalGenerator()->WriteCustomCommandBuild(

+ 3 - 4
Source/cmOSXBundleGenerator.cxx

@@ -195,12 +195,11 @@ void cmOSXBundleGenerator::GenerateMacOSXContentStatements(
     return;
   }
 
-  for (std::vector<cmSourceFile const*>::const_iterator si = sources.begin();
-       si != sources.end(); ++si) {
+  for (cmSourceFile const* source : sources) {
     cmGeneratorTarget::SourceFileFlags tsFlags =
-      this->GT->GetTargetSourceFileFlags(*si);
+      this->GT->GetTargetSourceFileFlags(source);
     if (tsFlags.Type != cmGeneratorTarget::SourceFileTypeNormal) {
-      (*generator)(**si, tsFlags.MacFolder);
+      (*generator)(*source, tsFlags.MacFolder);
     }
   }
 }

+ 24 - 31
Source/cmOrderDirectories.cxx

@@ -75,9 +75,8 @@ public:
   void FindImplicitConflicts(std::ostringstream& w)
   {
     bool first = true;
-    for (unsigned int i = 0; i < this->OD->OriginalDirectories.size(); ++i) {
+    for (std::string const& dir : this->OD->OriginalDirectories) {
       // Check if this directory conflicts with the entry.
-      std::string const& dir = this->OD->OriginalDirectories[i];
       if (dir != this->Directory &&
           cmSystemTools::GetRealPath(dir) !=
             cmSystemTools::GetRealPath(this->Directory) &&
@@ -226,12 +225,10 @@ bool cmOrderDirectoriesConstraintLibrary::FindConflict(std::string const& dir)
       this->OD->RemoveLibraryExtension.find(this->FileName)) {
     std::string lib = this->OD->RemoveLibraryExtension.match(1);
     std::string ext = this->OD->RemoveLibraryExtension.match(2);
-    for (std::vector<std::string>::iterator i =
-           this->OD->LinkExtensions.begin();
-         i != this->OD->LinkExtensions.end(); ++i) {
-      if (*i != ext) {
+    for (std::string const& LinkExtension : this->OD->LinkExtensions) {
+      if (LinkExtension != ext) {
         std::string fname = lib;
-        fname += *i;
+        fname += LinkExtension;
         if (this->FileMayConflict(dir, fname)) {
           return true;
         }
@@ -346,9 +343,8 @@ void cmOrderDirectories::SetImplicitDirectories(
   std::set<std::string> const& implicitDirs)
 {
   this->ImplicitDirectories.clear();
-  for (std::set<std::string>::const_iterator i = implicitDirs.begin();
-       i != implicitDirs.end(); ++i) {
-    this->ImplicitDirectories.insert(this->GetRealPath(*i));
+  for (std::string const& implicitDir : implicitDirs) {
+    this->ImplicitDirectories.insert(this->GetRealPath(implicitDir));
   }
 }
 
@@ -375,8 +371,8 @@ void cmOrderDirectories::CollectOriginalDirectories()
   this->AddOriginalDirectories(this->UserDirectories);
 
   // Add directories containing constraints.
-  for (unsigned int i = 0; i < this->ConstraintEntries.size(); ++i) {
-    this->ConstraintEntries[i]->AddDirectory();
+  for (cmOrderDirectoriesConstraint* entry : this->ConstraintEntries) {
+    entry->AddDirectory();
   }
 
   // Add language runtime directories last.
@@ -400,20 +396,19 @@ int cmOrderDirectories::AddOriginalDirectory(std::string const& dir)
 void cmOrderDirectories::AddOriginalDirectories(
   std::vector<std::string> const& dirs)
 {
-  for (std::vector<std::string>::const_iterator di = dirs.begin();
-       di != dirs.end(); ++di) {
+  for (std::string const& dir : dirs) {
     // We never explicitly specify implicit link directories.
-    if (this->IsImplicitDirectory(*di)) {
+    if (this->IsImplicitDirectory(dir)) {
       continue;
     }
 
     // Skip the empty string.
-    if (di->empty()) {
+    if (dir.empty()) {
       continue;
     }
 
     // Add this directory.
-    this->AddOriginalDirectory(*di);
+    this->AddOriginalDirectory(dir);
   }
 }
 
@@ -442,16 +437,15 @@ void cmOrderDirectories::FindConflicts()
   }
 
   // Clean up the conflict graph representation.
-  for (std::vector<ConflictList>::iterator i = this->ConflictGraph.begin();
-       i != this->ConflictGraph.end(); ++i) {
+  for (ConflictList& cl : this->ConflictGraph) {
     // Sort the outgoing edges for each graph node so that the
     // original order will be preserved as much as possible.
-    std::sort(i->begin(), i->end());
+    std::sort(cl.begin(), cl.end());
 
     // Make the edge list unique so cycle detection will be reliable.
     ConflictList::iterator last =
-      std::unique(i->begin(), i->end(), cmOrderDirectoriesCompare());
-    i->erase(last, i->end());
+      std::unique(cl.begin(), cl.end(), cmOrderDirectoriesCompare());
+    cl.erase(last, cl.end());
   }
 
   // Check items in implicit link directories.
@@ -463,12 +457,12 @@ void cmOrderDirectories::FindImplicitConflicts()
   // Check for items in implicit link directories that have conflicts
   // in the explicit directories.
   std::ostringstream conflicts;
-  for (unsigned int i = 0; i < this->ImplicitDirEntries.size(); ++i) {
-    this->ImplicitDirEntries[i]->FindImplicitConflicts(conflicts);
+  for (cmOrderDirectoriesConstraint* entry : this->ImplicitDirEntries) {
+    entry->FindImplicitConflicts(conflicts);
   }
 
   // Skip warning if there were no conflicts.
-  std::string text = conflicts.str();
+  std::string const text = conflicts.str();
   if (text.empty()) {
     return;
   }
@@ -515,8 +509,8 @@ void cmOrderDirectories::VisitDirectory(unsigned int i)
 
   // Visit the neighbors of the node first.
   ConflictList const& clist = this->ConflictGraph[i];
-  for (ConflictList::const_iterator j = clist.begin(); j != clist.end(); ++j) {
-    this->VisitDirectory(j->first);
+  for (ConflictPair const& j : clist) {
+    this->VisitDirectory(j.first);
   }
 
   // Now that all directories required to come before this one have
@@ -542,10 +536,9 @@ void cmOrderDirectories::DiagnoseCycle()
   for (unsigned int i = 0; i < this->ConflictGraph.size(); ++i) {
     ConflictList const& clist = this->ConflictGraph[i];
     e << "  dir " << i << " is [" << this->OriginalDirectories[i] << "]\n";
-    for (ConflictList::const_iterator j = clist.begin(); j != clist.end();
-         ++j) {
-      e << "    dir " << j->first << " must precede it due to ";
-      this->ConstraintEntries[j->second]->Report(e);
+    for (ConflictPair const& j : clist) {
+      e << "    dir " << j.first << " must precede it due to ";
+      this->ConstraintEntries[j.second]->Report(e);
       e << "\n";
     }
   }

+ 3 - 4
Source/cmOutputConverter.cxx

@@ -285,12 +285,11 @@ cmOutputConverter::FortranFormat cmOutputConverter::GetFortranFormat(
   if (value && *value) {
     std::vector<std::string> fmt;
     cmSystemTools::ExpandListArgument(value, fmt);
-    for (std::vector<std::string>::iterator fi = fmt.begin(); fi != fmt.end();
-         ++fi) {
-      if (*fi == "FIXED") {
+    for (std::string const& fi : fmt) {
+      if (fi == "FIXED") {
         format = FortranFormatFixed;
       }
-      if (*fi == "FREE") {
+      if (fi == "FREE") {
         format = FortranFormatFree;
       }
     }

+ 19 - 45
Source/cmOutputRequiredFilesCommand.cxx

@@ -5,7 +5,6 @@
 #include "cmsys/FStream.hxx"
 #include "cmsys/RegularExpression.hxx"
 #include <map>
-#include <unordered_map>
 #include <utility>
 
 #include "cmAlgorithms.h"
@@ -114,8 +113,9 @@ public:
     std::set<std::string> uniqueIncludes;
     std::vector<std::string> orderedAndUniqueIncludes;
     cmTargets& targets = this->Makefile->GetTargets();
-    for (cmTargets::iterator l = targets.begin(); l != targets.end(); ++l) {
-      const char* incDirProp = l->second.GetProperty("INCLUDE_DIRECTORIES");
+    for (auto const& target : targets) {
+      const char* incDirProp =
+        target.second.GetProperty("INCLUDE_DIRECTORIES");
       if (!incDirProp) {
         continue;
       }
@@ -126,9 +126,7 @@ public:
       std::vector<std::string> includes;
       cmSystemTools::ExpandListArgument(incDirs, includes);
 
-      for (std::vector<std::string>::const_iterator j = includes.begin();
-           j != includes.end(); ++j) {
-        std::string path = *j;
+      for (std::string& path : includes) {
         this->Makefile->ExpandVariablesInString(path);
         if (uniqueIncludes.insert(path).second) {
           orderedAndUniqueIncludes.push_back(path);
@@ -136,10 +134,8 @@ public:
       }
     }
 
-    for (std::vector<std::string>::const_iterator it =
-           orderedAndUniqueIncludes.begin();
-         it != orderedAndUniqueIncludes.end(); ++it) {
-      this->AddSearchPath(*it);
+    for (std::string const& inc : orderedAndUniqueIncludes) {
+      this->AddSearchPath(inc);
     }
   }
 
@@ -220,10 +216,7 @@ protected:
           if (cmSystemTools::FileExists(cxxFile.c_str())) {
             found = true;
           }
-          for (std::vector<std::string>::iterator i =
-                 this->IncludeDirectories.begin();
-               i != this->IncludeDirectories.end(); ++i) {
-            std::string path = *i;
+          for (std::string path : this->IncludeDirectories) {
             path = path + "/";
             path = path + cxxFile;
             if (cmSystemTools::FileExists(path.c_str())) {
@@ -235,10 +228,7 @@ protected:
             if (cmSystemTools::FileExists(cxxFile.c_str())) {
               found = true;
             }
-            for (std::vector<std::string>::iterator i =
-                   this->IncludeDirectories.begin();
-                 i != this->IncludeDirectories.end(); ++i) {
-              std::string path = *i;
+            for (std::string path : this->IncludeDirectories) {
               path = path + "/";
               path = path + cxxFile;
               if (cmSystemTools::FileExists(path.c_str())) {
@@ -251,10 +241,7 @@ protected:
             if (cmSystemTools::FileExists(cxxFile.c_str())) {
               found = true;
             }
-            for (std::vector<std::string>::iterator i =
-                   this->IncludeDirectories.begin();
-                 i != this->IncludeDirectories.end(); ++i) {
-              std::string path = *i;
+            for (std::string path : this->IncludeDirectories) {
               path = path + "/";
               path = path + cxxFile;
               if (cmSystemTools::FileExists(path.c_str())) {
@@ -267,10 +254,7 @@ protected:
             if (cmSystemTools::FileExists(cxxFile.c_str())) {
               found = true;
             }
-            for (std::vector<std::string>::iterator i =
-                   this->IncludeDirectories.begin();
-                 i != this->IncludeDirectories.end(); ++i) {
-              std::string path = *i;
+            for (std::string path : this->IncludeDirectories) {
               path = path + "/";
               path = path + cxxFile;
               if (cmSystemTools::FileExists(path.c_str())) {
@@ -337,10 +321,8 @@ protected:
       if (!cFile.GetDepends().empty()) {
         // Dependency hints have been given.  Use them to begin the
         // recursion.
-        for (std::vector<std::string>::const_iterator file =
-               cFile.GetDepends().begin();
-             file != cFile.GetDepends().end(); ++file) {
-          this->AddDependency(info, file->c_str());
+        for (std::string const& file : cFile.GetDepends()) {
+          this->AddDependency(info, file.c_str());
         }
 
         // Found dependency information.  We are done.
@@ -357,10 +339,7 @@ protected:
           found = true;
         } else {
           // try to guess which include path to use
-          for (std::vector<std::string>::iterator t =
-                 this->IncludeDirectories.begin();
-               t != this->IncludeDirectories.end(); ++t) {
-            std::string incpath = *t;
+          for (std::string incpath : this->IncludeDirectories) {
             if (!incpath.empty() && incpath[incpath.size() - 1] != '/') {
               incpath = incpath + "/";
             }
@@ -442,10 +421,7 @@ protected:
       return fp;
     }
 
-    for (std::vector<std::string>::iterator i =
-           this->IncludeDirectories.begin();
-         i != this->IncludeDirectories.end(); ++i) {
-      std::string path = *i;
+    for (std::string path : this->IncludeDirectories) {
       if (!path.empty() && path[path.size() - 1] != '/') {
         path = path + "/";
       }
@@ -532,19 +508,17 @@ void cmOutputRequiredFilesCommand::ListDependencies(
   // add info to the visited set
   visited->insert(info);
   // now recurse with info's dependencies
-  for (cmDependInformation::DependencySetType::const_iterator d =
-         info->DependencySet.begin();
-       d != info->DependencySet.end(); ++d) {
-    if (visited->find(*d) == visited->end()) {
+  for (cmDependInformation* d : info->DependencySet) {
+    if (visited->find(d) == visited->end()) {
       if (info->FullPath != "") {
-        std::string tmp = (*d)->FullPath;
+        std::string tmp = d->FullPath;
         std::string::size_type pos = tmp.rfind('.');
         if (pos != std::string::npos && (tmp.substr(pos) != ".h")) {
           tmp = tmp.substr(0, pos);
-          fprintf(fout, "%s\n", (*d)->FullPath.c_str());
+          fprintf(fout, "%s\n", d->FullPath.c_str());
         }
       }
-      this->ListDependencies(*d, fout, visited);
+      this->ListDependencies(d, fout, visited);
     }
   }
 }

+ 37 - 49
Source/cmParseArgumentsCommand.cxx

@@ -5,7 +5,6 @@
 #include <map>
 #include <set>
 #include <sstream>
-#include <stddef.h>
 #include <utility>
 
 #include "cmAlgorithms.h"
@@ -19,11 +18,11 @@ static std::string escape_arg(const std::string& arg)
 {
   // replace ";" with "\;" so output argument lists will split correctly
   std::string escapedArg;
-  for (size_t i = 0; i < arg.size(); ++i) {
-    if (arg[i] == ';') {
+  for (char i : arg) {
+    if (i == ';') {
       escapedArg += '\\';
     }
-    escapedArg += arg[i];
+    escapedArg += i;
   }
   return escapedArg;
 }
@@ -85,37 +84,31 @@ bool cmParseArgumentsCommand::InitialPass(std::vector<std::string> const& args,
   // the second argument is a (cmake) list of options without argument
   std::vector<std::string> list;
   cmSystemTools::ExpandListArgument(*argIter++, list);
-  for (std::vector<std::string>::const_iterator iter = list.begin(),
-                                                end = list.end();
-       iter != end; ++iter) {
-    if (!used_keywords.insert(*iter).second) {
-      this->GetMakefile()->IssueMessage(cmake::WARNING, dup_warning + *iter);
+  for (std::string const& iter : list) {
+    if (!used_keywords.insert(iter).second) {
+      this->GetMakefile()->IssueMessage(cmake::WARNING, dup_warning + iter);
     }
-    options[*iter]; // default initialize
+    options[iter]; // default initialize
   }
 
   // the third argument is a (cmake) list of single argument options
   list.clear();
   cmSystemTools::ExpandListArgument(*argIter++, list);
-  for (std::vector<std::string>::const_iterator iter = list.begin(),
-                                                end = list.end();
-       iter != end; ++iter) {
-    if (!used_keywords.insert(*iter).second) {
-      this->GetMakefile()->IssueMessage(cmake::WARNING, dup_warning + *iter);
+  for (std::string const& iter : list) {
+    if (!used_keywords.insert(iter).second) {
+      this->GetMakefile()->IssueMessage(cmake::WARNING, dup_warning + iter);
     }
-    single[*iter]; // default initialize
+    single[iter]; // default initialize
   }
 
   // the fourth argument is a (cmake) list of multi argument options
   list.clear();
   cmSystemTools::ExpandListArgument(*argIter++, list);
-  for (std::vector<std::string>::const_iterator iter = list.begin(),
-                                                end = list.end();
-       iter != end; ++iter) {
-    if (!used_keywords.insert(*iter).second) {
-      this->GetMakefile()->IssueMessage(cmake::WARNING, dup_warning + *iter);
+  for (std::string const& iter : list) {
+    if (!used_keywords.insert(iter).second) {
+      this->GetMakefile()->IssueMessage(cmake::WARNING, dup_warning + iter);
     }
-    multi[*iter]; // default initialize
+    multi[iter]; // default initialize
   }
 
   enum insideValues
@@ -160,46 +153,45 @@ bool cmParseArgumentsCommand::InitialPass(std::vector<std::string> const& args,
   }
 
   // iterate over the arguments list and fill in the values where applicable
-  for (argIter = list.begin(), argEnd = list.end(); argIter != argEnd;
-       ++argIter) {
-    const options_map::iterator optIter = options.find(*argIter);
+  for (std::string const& arg : list) {
+    const options_map::iterator optIter = options.find(arg);
     if (optIter != options.end()) {
       insideValues = NONE;
       optIter->second = true;
       continue;
     }
 
-    const single_map::iterator singleIter = single.find(*argIter);
+    const single_map::iterator singleIter = single.find(arg);
     if (singleIter != single.end()) {
       insideValues = SINGLE;
-      currentArgName = *argIter;
+      currentArgName = arg;
       continue;
     }
 
-    const multi_map::iterator multiIter = multi.find(*argIter);
+    const multi_map::iterator multiIter = multi.find(arg);
     if (multiIter != multi.end()) {
       insideValues = MULTI;
-      currentArgName = *argIter;
+      currentArgName = arg;
       continue;
     }
 
     switch (insideValues) {
       case SINGLE:
-        single[currentArgName] = *argIter;
+        single[currentArgName] = arg;
         insideValues = NONE;
         break;
       case MULTI:
         if (parseFromArgV) {
-          multi[currentArgName].push_back(escape_arg(*argIter));
+          multi[currentArgName].push_back(escape_arg(arg));
         } else {
-          multi[currentArgName].push_back(*argIter);
+          multi[currentArgName].push_back(arg);
         }
         break;
       default:
         if (parseFromArgV) {
-          unparsed.push_back(escape_arg(*argIter));
+          unparsed.push_back(escape_arg(arg));
         } else {
-          unparsed.push_back(*argIter);
+          unparsed.push_back(arg);
         }
         break;
     }
@@ -208,28 +200,24 @@ bool cmParseArgumentsCommand::InitialPass(std::vector<std::string> const& args,
   // now iterate over the collected values and update their definition
   // within the current scope. undefine if necessary.
 
-  for (options_map::const_iterator iter = options.begin(), end = options.end();
-       iter != end; ++iter) {
-    this->Makefile->AddDefinition(prefix + iter->first,
-                                  iter->second ? "TRUE" : "FALSE");
+  for (auto const& iter : options) {
+    this->Makefile->AddDefinition(prefix + iter.first,
+                                  iter.second ? "TRUE" : "FALSE");
   }
-  for (single_map::const_iterator iter = single.begin(), end = single.end();
-       iter != end; ++iter) {
-    if (!iter->second.empty()) {
-      this->Makefile->AddDefinition(prefix + iter->first,
-                                    iter->second.c_str());
+  for (auto const& iter : single) {
+    if (!iter.second.empty()) {
+      this->Makefile->AddDefinition(prefix + iter.first, iter.second.c_str());
     } else {
-      this->Makefile->RemoveDefinition(prefix + iter->first);
+      this->Makefile->RemoveDefinition(prefix + iter.first);
     }
   }
 
-  for (multi_map::const_iterator iter = multi.begin(), end = multi.end();
-       iter != end; ++iter) {
-    if (!iter->second.empty()) {
+  for (auto const& iter : multi) {
+    if (!iter.second.empty()) {
       this->Makefile->AddDefinition(
-        prefix + iter->first, cmJoin(cmMakeRange(iter->second), ";").c_str());
+        prefix + iter.first, cmJoin(cmMakeRange(iter.second), ";").c_str());
     } else {
-      this->Makefile->RemoveDefinition(prefix + iter->first);
+      this->Makefile->RemoveDefinition(prefix + iter.first);
     }
   }
 

+ 2 - 4
Source/cmPathLabel.cxx

@@ -2,15 +2,13 @@
    file Copyright.txt or https://cmake.org/licensing for details.  */
 #include "cmPathLabel.h"
 
-#include <stddef.h>
-
 cmPathLabel::cmPathLabel(const std::string& label)
   : Label(label)
   , Hash(0)
 {
   // Use a Jenkins one-at-a-time hash with under/over-flow protection
-  for (size_t i = 0; i < this->Label.size(); ++i) {
-    this->Hash += this->Label[i];
+  for (char i : this->Label) {
+    this->Hash += i;
     this->Hash += ((this->Hash & 0x003FFFFF) << 10);
     this->Hash ^= ((this->Hash & 0xFFFFFFC0) >> 6);
   }

+ 2 - 3
Source/cmPolicies.cxx

@@ -120,9 +120,8 @@ static void DiagnoseAncientPolicies(
   e << "The project requests behavior compatible with CMake version \""
     << majorVer << "." << minorVer << "." << patchVer
     << "\", which requires the OLD behavior for some policies:\n";
-  for (std::vector<cmPolicies::PolicyID>::const_iterator i = ancient.begin();
-       i != ancient.end(); ++i) {
-    e << "  " << idToString(*i) << ": " << idToShortDescription(*i) << "\n";
+  for (cmPolicies::PolicyID i : ancient) {
+    e << "  " << idToString(i) << ": " << idToShortDescription(i) << "\n";
   }
   e << "However, this version of CMake no longer supports the OLD "
     << "behavior for these policies.  "

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels