Browse Source

Use the cmJoin algorithm where possible.

Stephen Kelly 10 years ago
parent
commit
55a73e6b1f

+ 2 - 24
Source/cmComputeLinkInformation.cxx

@@ -448,18 +448,7 @@ std::string cmComputeLinkInformation::GetRPathLinkString()
     }
 
   // Construct the linker runtime search path.
-  std::string rpath_link;
-  const char* sep = "";
-  std::vector<std::string> const& dirs =
-    this->OrderDependentRPath->GetOrderedDirectories();
-  for(std::vector<std::string>::const_iterator di = dirs.begin();
-      di != dirs.end(); ++di)
-    {
-    rpath_link += sep;
-    sep = ":";
-    rpath_link += *di;
-    }
-  return rpath_link;
+  return cmJoin(this->OrderDependentRPath->GetOrderedDirectories(), ":");
 }
 
 //----------------------------------------------------------------------------
@@ -1999,18 +1988,7 @@ std::string cmComputeLinkInformation::GetRPathString(bool for_install)
   this->GetRPath(runtimeDirs, for_install);
 
   // Concatenate the paths.
-  std::string rpath;
-  const char* sep = "";
-  for(std::vector<std::string>::const_iterator ri = runtimeDirs.begin();
-      ri != runtimeDirs.end(); ++ri)
-    {
-    // Separate from previous path.
-    rpath += sep;
-    sep = this->GetRuntimeSep().c_str();
-
-    // Add this path.
-    rpath += *ri;
-    }
+  std::string rpath = cmJoin(runtimeDirs, this->GetRuntimeSep());
 
   // If the rpath will be replaced at install time, prepare space.
   if(!for_install && this->RuntimeUseChrpath)

+ 1 - 10
Source/cmGeneratorExpressionEvaluator.cxx

@@ -803,18 +803,9 @@ static const struct JoinNode : public cmGeneratorExpressionNode
                        const GeneratorExpressionContent *,
                        cmGeneratorExpressionDAGChecker *) const
   {
-    std::string result;
-
     std::vector<std::string> list;
     cmSystemTools::ExpandListArgument(parameters.front(), list);
-    std::string sep;
-    for(std::vector<std::string>::const_iterator li = list.begin();
-      li != list.end(); ++li)
-      {
-      result += sep + *li;
-      sep = parameters[1];
-      }
-    return result;
+    return cmJoin(list, parameters[1]);
   }
 } joinNode;
 

+ 2 - 12
Source/cmInstallCommand.cxx

@@ -777,18 +777,8 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
       this->Makefile->GetLocalGenerator()->GetGlobalGenerator()
         ->GetExportSets()[exports.GetString()]->AddTargetExport(te);
 
-      std::vector<std::string> dirs = includesArgs.GetIncludeDirs();
-      if(!dirs.empty())
-        {
-        const char *sep = "";
-        for (std::vector<std::string>::const_iterator it = dirs.begin();
-            it != dirs.end(); ++it)
-          {
-          te->InterfaceIncludeDirectories += sep;
-          te->InterfaceIncludeDirectories += *it;
-          sep = ";";
-          }
-        }
+      te->InterfaceIncludeDirectories =
+          cmJoin(includesArgs.GetIncludeDirs(), ";");
       }
     }
 

+ 3 - 27
Source/cmListCommand.cxx

@@ -353,15 +353,7 @@ bool cmListCommand::HandleInsertCommand(std::vector<std::string> const& args)
     cnt ++;
     }
 
-  std::string value;
-  const char* sep = "";
-  for ( cc = 0; cc < varArgsExpanded.size(); cc ++ )
-    {
-    value += sep;
-    value += varArgsExpanded[cc];
-    sep = ";";
-    }
-
+  std::string value = cmJoin(varArgsExpanded, ";");
   this->Makefile->AddDefinition(listName, value.c_str());
   return true;
 }
@@ -402,15 +394,8 @@ bool cmListCommand
       }
     }
 
-  std::string value;
-  const char* sep = "";
-  for ( cc = 0; cc < varArgsExpanded.size(); cc ++ )
-    {
-    value += sep;
-    value += varArgsExpanded[cc];
-    sep = ";";
-    }
 
+  std::string value = cmJoin(varArgsExpanded, ";");
   this->Makefile->AddDefinition(listName, value.c_str());
   return true;
 }
@@ -518,16 +503,7 @@ bool cmListCommand
 
   std::sort(varArgsExpanded.begin(), varArgsExpanded.end());
 
-  std::string value;
-  std::vector<std::string>::iterator it;
-  const char* sep = "";
-  for ( it = varArgsExpanded.begin(); it != varArgsExpanded.end(); ++ it )
-    {
-    value += sep;
-    value += it->c_str();
-    sep = ";";
-    }
-
+  std::string value = cmJoin(varArgsExpanded, ";");
   this->Makefile->AddDefinition(listName, value.c_str());
   return true;
 }

+ 1 - 11
Source/cmMakefile.cxx

@@ -1791,22 +1791,12 @@ void cmMakefile::AddIncludeDirectories(const std::vector<std::string> &incs,
     return;
     }
 
-  std::string incString;
-  std::string sep;
-
-  for(std::vector<std::string>::const_iterator li = incs.begin();
-      li != incs.end(); ++li)
-    {
-    incString += sep + *li;
-    sep = ";";
-    }
-
   std::vector<cmValueWithOrigin>::iterator position =
                               before ? this->IncludeDirectoriesEntries.begin()
                                     : this->IncludeDirectoriesEntries.end();
 
   cmListFileBacktrace lfbt = this->GetBacktrace();
-  cmValueWithOrigin entry(incString, lfbt);
+  cmValueWithOrigin entry(cmJoin(incs, ";"), lfbt);
   this->IncludeDirectoriesEntries.insert(position, entry);
 
   // Property on each target:

+ 5 - 39
Source/cmQtAutoGenerators.cxx

@@ -224,16 +224,7 @@ std::string cmQtAutoGenerators::ListQt5RccInputs(cmSourceFile* sf,
       }
     }
   depends.insert(depends.end(), qrcEntries.begin(), qrcEntries.end());
-  std::string entriesList;
-  const char* sep = "";
-  for(std::vector<std::string>::const_iterator it = qrcEntries.begin();
-      it != qrcEntries.end(); ++it)
-    {
-    entriesList += sep;
-    entriesList += *it;
-    sep = "@list_sep@";
-    }
-  return entriesList;
+  return cmJoin(qrcEntries, "@list_sep@");
 }
 
 std::string cmQtAutoGenerators::ListQt4RccInputs(cmSourceFile* sf,
@@ -512,29 +503,13 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target,
   // Get the include dirs for this target, without stripping the implicit
   // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667
   localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false);
-  const char* sep = "";
-  incs = "";
-  for(std::vector<std::string>::const_iterator incDirIt = includeDirs.begin();
-      incDirIt != includeDirs.end();
-      ++incDirIt)
-    {
-    incs += sep;
-    sep = ";";
-    incs += *incDirIt;
-    }
+
+  incs = cmJoin(includeDirs, ";");
 
   std::set<std::string> defines;
   localGen->AddCompileDefinitions(defines, target, config);
 
-  sep = "";
-  for(std::set<std::string>::const_iterator defIt = defines.begin();
-      defIt != defines.end();
-      ++defIt)
-    {
-    defs += sep;
-    sep = ";";
-    defs += *defIt;
-    }
+  defs += cmJoin(defines, ";");
 }
 
 void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target)
@@ -879,16 +854,7 @@ static void GetUicOpts(cmTarget const* target, const std::string& config,
 {
   std::vector<std::string> opts;
   target->GetAutoUicOptions(opts, config);
-
-  const char* sep = "";
-  for(std::vector<std::string>::const_iterator optIt = opts.begin();
-      optIt != opts.end();
-      ++optIt)
-    {
-    optString += sep;
-    sep = ";";
-    optString += *optIt;
-    }
+  optString = cmJoin(opts, ";");
 }
 
 void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target,

+ 1 - 8
Source/cmRST.cxx

@@ -417,14 +417,7 @@ void cmRST::ProcessDirectiveReplace()
 {
   // Record markup lines as replacement text.
   std::string& replacement = this->Replace[this->ReplaceName];
-  const char* sep = "";
-  for(std::vector<std::string>::iterator i = this->MarkupLines.begin();
-      i != this->MarkupLines.end(); ++i)
-    {
-    replacement += sep;
-    replacement += *i;
-    sep = " ";
-    }
+  replacement += cmJoin(this->MarkupLines, " ");
   this->ReplaceName = "";
 }
 

+ 6 - 12
Source/cmSystemTools.cxx

@@ -828,18 +828,12 @@ bool cmSystemTools::RunSingleCommand(
 std::string
 cmSystemTools::PrintSingleCommand(std::vector<std::string> const& command)
 {
-  std::string commandStr;
-  const char* sep = "";
-  for(std::vector<std::string>::const_iterator i = command.begin();
-      i != command.end(); ++i)
-    {
-    commandStr += sep;
-    commandStr += "\"";
-    commandStr += *i;
-    commandStr += "\"";
-    sep = " ";
-    }
-  return commandStr;
+  if (command.empty())
+    {
+    return std::string();
+    }
+
+  return "\"" + cmJoin(command, "\" \"") + "\"";
 }
 
 bool cmSystemTools::DoesFileExistWithExtensions(

+ 3 - 28
Source/cmTarget.cxx

@@ -923,16 +923,7 @@ void cmTarget::GetSourceFiles(std::vector<cmSourceFile*> &files,
 //----------------------------------------------------------------------------
 void cmTarget::AddTracedSources(std::vector<std::string> const& srcs)
 {
-  std::string srcFiles;
-  const char* sep = "";
-  for(std::vector<std::string>::const_iterator i = srcs.begin();
-      i != srcs.end(); ++i)
-    {
-    std::string filename = *i;
-    srcFiles += sep;
-    srcFiles += filename;
-    sep = ";";
-    }
+  std::string srcFiles = cmJoin(srcs, ";");
   if (!srcFiles.empty())
     {
     this->Internal->SourceFilesMap.clear();
@@ -6088,24 +6079,8 @@ cmTargetInternals::ComputeLinkInterfaceLibraries(
         }
       if (ifaceLibs != iface.Libraries)
         {
-        std::string oldLibraries;
-        std::string newLibraries;
-        const char *sep = "";
-        for(std::vector<cmLinkImplItem>::const_iterator it
-              = impl->Libraries.begin(); it != impl->Libraries.end(); ++it)
-          {
-          oldLibraries += sep;
-          oldLibraries += *it;
-          sep = ";";
-          }
-        sep = "";
-        for(std::vector<cmLinkItem>::const_iterator it
-              = ifaceLibs.begin(); it != ifaceLibs.end(); ++it)
-          {
-          newLibraries += sep;
-          newLibraries += *it;
-          sep = ";";
-          }
+        std::string oldLibraries = cmJoin(impl->Libraries, ";");
+        std::string newLibraries = cmJoin(ifaceLibs, ";");
         if(oldLibraries.empty())
           { oldLibraries = "(empty)"; }
         if(newLibraries.empty())

+ 1 - 9
Source/cmTargetCompileFeaturesCommand.cxx

@@ -40,15 +40,7 @@ void cmTargetCompileFeaturesCommand
 std::string cmTargetCompileFeaturesCommand
 ::Join(const std::vector<std::string> &content)
 {
-  std::string defs;
-  std::string sep;
-  for(std::vector<std::string>::const_iterator it = content.begin();
-    it != content.end(); ++it)
-    {
-    defs += sep + *it;
-    sep = ";";
-    }
-  return defs;
+  return cmJoin(content, ";");
 }
 
 //----------------------------------------------------------------------------

+ 1 - 9
Source/cmTargetCompileOptionsCommand.cxx

@@ -39,15 +39,7 @@ void cmTargetCompileOptionsCommand
 std::string cmTargetCompileOptionsCommand
 ::Join(const std::vector<std::string> &content)
 {
-  std::string defs;
-  std::string sep;
-  for(std::vector<std::string>::const_iterator it = content.begin();
-    it != content.end(); ++it)
-    {
-    defs += sep + *it;
-    sep = ";";
-    }
-  return defs;
+  return cmJoin(content, ";");
 }
 
 //----------------------------------------------------------------------------

+ 1 - 9
Source/cmTargetIncludeDirectoriesCommand.cxx

@@ -91,15 +91,7 @@ void cmTargetIncludeDirectoriesCommand
 
   if (system)
     {
-    std::string joined;
-    std::string sep;
-    for(std::vector<std::string>::const_iterator it = content.begin();
-      it != content.end(); ++it)
-      {
-      joined += sep;
-      sep = ";";
-      joined += *it;
-      }
+    std::string joined = cmJoin(content, ";");
     tgt->AppendProperty("INTERFACE_SYSTEM_INCLUDE_DIRECTORIES",
                         joined.c_str());
     }

+ 1 - 9
Source/cmTargetSourcesCommand.cxx

@@ -44,15 +44,7 @@ void cmTargetSourcesCommand
 std::string cmTargetSourcesCommand
 ::Join(const std::vector<std::string> &content)
 {
-  std::string srcs;
-  std::string sep;
-  for(std::vector<std::string>::const_iterator it = content.begin();
-    it != content.end(); ++it)
-    {
-    srcs += sep + *it;
-    sep = ";";
-    }
-  return srcs;
+  return cmJoin(content, ";");
 }
 
 //----------------------------------------------------------------------------

+ 1 - 8
Source/cmake.cxx

@@ -2320,14 +2320,7 @@ const char *cmake::GetProperty(const std::string& prop,
       {
       std::vector<std::string> enLangs;
       this->GlobalGenerator->GetEnabledLanguages(enLangs);
-      const char* sep = "";
-      for(std::vector<std::string>::iterator i = enLangs.begin();
-          i != enLangs.end(); ++i)
-        {
-        lang += sep;
-        sep = ";";
-        lang += *i;
-        }
+      lang = cmJoin(enLangs, ";");
       }
     this->SetProperty("ENABLED_LANGUAGES", lang.c_str());
     }