[Cmake-commits] CMake branch, next, updated. v3.2.0-rc1-464-g3b31afe

Stephen Kelly steveire at gmail.com
Wed Feb 18 18:59:44 EST 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  3b31afe292561dbc67b42c855c2921a6b24284f5 (commit)
       via  f9bcc78f4d7d9eb3c47c2c83c72c1e85e6019382 (commit)
       via  e929515d7ce73f08b9dc72e3db7e8554344343b9 (commit)
       via  f57c9fec2b78acba11cb8716a2ca9681fb5b4b98 (commit)
       via  398806c2cc5241589133a8767b046fe7a7cb36e6 (commit)
       via  b3482e3e886170e45f465523afb2cf8866def7b1 (commit)
       via  617d1996a0671cd37d7a3bfbc6567dc606ff743b (commit)
       via  65b0042e1d79f3486db07e973f41f165a676ee81 (commit)
       via  e1dc07e182b0cb15b20394c79f37794e6df99e62 (commit)
       via  2c6bff053f294d31b4f1edb80e428f4c8ec3d572 (commit)
       via  8ad705f14040ae252b938830aeeb9124ebc5af72 (commit)
       via  7703057d02ac901c018fc1bc62b985bd3399f5b4 (commit)
       via  cc2345200e5c5f7910486f9350a3fcc724910afa (commit)
       via  155f2a3477fc675e3a2f501633006cbbff550768 (commit)
       via  86c09fe543002e0d89842f89e22a44127da7ee55 (commit)
       via  77d69c5cb6e758d6e7a6ada2f2c9f435e15010bb (commit)
       via  9c225767873ce64a745e865c6f1c3372a8ab45d9 (commit)
       via  ee5bc006ebee898729b81237719106704a2bb38a (commit)
       via  b3a0c6e08f36efc5f3cd4c1a0d9614a789f91e38 (commit)
      from  6cd2d2711b401c157d5c63d647a065bc97cca174 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3b31afe292561dbc67b42c855c2921a6b24284f5
commit 3b31afe292561dbc67b42c855c2921a6b24284f5
Merge: 6cd2d27 f9bcc78
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 18 18:59:42 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Feb 18 18:59:42 2015 -0500

    Merge topic 'use-algorithms' into next
    
    f9bcc78f Replace loops with algorithms.
    e929515d cmAlgorithms: Add cmReverseRange adaptor.
    f57c9fec cmAlgorithms: Add cmFindNot algorithm.
    398806c2 cmRST: Replace two erase with a rotate and larger erase.
    b3482e3e cmAlgorithms: Update concept requirement to FowardIterator
    617d1996 cmAlgorithms: Move cmRotate out of 'implementation detail' namespace.
    65b0042e cmRST: Move two algorithms beside each other.
    e1dc07e1 cmRST: Use std::min where appropriate.
    2c6bff05 cmGlobalGenerator: Convert set insert algorithm to vector algorithms.
    8ad705f1 Convert some raw loops to cmWrap.
    7703057d cmAlgorithms: Add cmWrap.
    cc234520 Use cmJoin where possible.
    155f2a34 cmCacheManager: Replace loop with algorithm.
    86c09fe5 cmGlobalGenerator: Replace loop with algorithm.
    77d69c5c cmTarget: Port loop to algorithm.
    9c225767 cmGlobalGenerator: Replace set::insert algorithm with cmRemoveDuplicates.
    ...


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f9bcc78f4d7d9eb3c47c2c83c72c1e85e6019382
commit f9bcc78f4d7d9eb3c47c2c83c72c1e85e6019382
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Feb 2 02:13:54 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:21 2015 +0100

    Replace loops with algorithms.

diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx
index 480da0d..b7330ce 100644
--- a/Source/cmRST.cxx
+++ b/Source/cmRST.cxx
@@ -484,19 +484,13 @@ void cmRST::UnindentLines(std::vector<std::string>& lines)
       }
     }
 
-  // Drop leading blank lines.
-  size_t leadingEmpty = 0;
-  for(size_t i = 0; i < lines.size() && lines[i].empty(); ++i)
-    {
-    ++leadingEmpty;
-    }
+  std::vector<std::string>::const_iterator it = lines.begin();
+  size_t leadingEmpty = std::distance(it, cmFindNot(lines, std::string()));
+
+  std::vector<std::string>::const_reverse_iterator rit = lines.rbegin();
+  size_t trailingEmpty = std::distance(rit,
+                            cmFindNot(cmReverseRange(lines), std::string()));
 
-  // Drop trailing blank lines.
-  size_t trailingEmpty = 0;
-  for(size_t i = lines.size(); i > 0 && lines[i-1].empty(); --i)
-    {
-    ++trailingEmpty;
-    }
   lines.erase(cmRotate(lines.begin(),
               lines.begin() + leadingEmpty,
               lines.end() - trailingEmpty), lines.end());

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e929515d7ce73f08b9dc72e3db7e8554344343b9
commit e929515d7ce73f08b9dc72e3db7e8554344343b9
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 17 22:04:25 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:21 2015 +0100

    cmAlgorithms: Add cmReverseRange adaptor.
    
    Use it to implement list(REVERSE).

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 9721e3e..05cdfeb 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -297,4 +297,12 @@ typename Range::const_iterator cmFindNot(Range const& r, T const& t)
                       std::bind1st(std::not_equal_to<T>(), t));
 }
 
+template<typename Range>
+ContainerAlgorithms::Range<typename Range::const_reverse_iterator>
+cmReverseRange(Range const& range)
+{
+  return ContainerAlgorithms::Range<typename Range::const_reverse_iterator>(
+      range.rbegin(), range.rend());
+}
+
 #endif
diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx
index 0c6adfd..17617aa 100644
--- a/Source/cmListCommand.cxx
+++ b/Source/cmListCommand.cxx
@@ -390,8 +390,7 @@ bool cmListCommand
     return false;
     }
 
-  std::reverse(varArgsExpanded.begin(), varArgsExpanded.end());
-  std::string value = cmJoin(varArgsExpanded, ";");
+  std::string value = cmJoin(cmReverseRange(varArgsExpanded), ";");
 
   this->Makefile->AddDefinition(listName, value.c_str());
   return true;

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f57c9fec2b78acba11cb8716a2ca9681fb5b4b98
commit f57c9fec2b78acba11cb8716a2ca9681fb5b4b98
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 11 23:53:41 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:21 2015 +0100

    cmAlgorithms: Add cmFindNot algorithm.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 6f8711f..9721e3e 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -289,4 +289,12 @@ std::string cmWrap(std::string prefix, Range const& r, std::string suffix,
   return prefix + cmJoin(r, (suffix + sep + prefix).c_str()) + suffix;
 }
 
+
+template<typename Range, typename T>
+typename Range::const_iterator cmFindNot(Range const& r, T const& t)
+{
+  return std::find_if(r.begin(), r.end(),
+                      std::bind1st(std::not_equal_to<T>(), t));
+}
+
 #endif

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=398806c2cc5241589133a8767b046fe7a7cb36e6
commit 398806c2cc5241589133a8767b046fe7a7cb36e6
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jan 30 00:03:24 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:21 2015 +0100

    cmRST: Replace two erase with a rotate and larger erase.

diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx
index 14e8ad9..480da0d 100644
--- a/Source/cmRST.cxx
+++ b/Source/cmRST.cxx
@@ -497,6 +497,7 @@ void cmRST::UnindentLines(std::vector<std::string>& lines)
     {
     ++trailingEmpty;
     }
-  lines.erase(lines.begin(), lines.begin()+leadingEmpty);
-  lines.erase(lines.end()-trailingEmpty, lines.end());
+  lines.erase(cmRotate(lines.begin(),
+              lines.begin() + leadingEmpty,
+              lines.end() - trailingEmpty), lines.end());
 }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b3482e3e886170e45f465523afb2cf8866def7b1
commit b3482e3e886170e45f465523afb2cf8866def7b1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 17 21:59:26 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:21 2015 +0100

    cmAlgorithms: Update concept requirement to FowardIterator

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index f480b86..6f8711f 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -81,14 +81,14 @@ private:
   const std::string m_test;
 };
 
-template<typename BiDirIt>
-BiDirIt cmRotate(BiDirIt first, BiDirIt middle, BiDirIt last)
+template<typename FwdIt>
+FwdIt cmRotate(FwdIt first, FwdIt middle, FwdIt last)
 {
-  typename std::iterator_traits<BiDirIt>::difference_type dist =
-      std::distance(first, middle);
+  typename std::iterator_traits<FwdIt>::difference_type dist =
+      std::distance(middle, last);
   std::rotate(first, middle, last);
-  std::advance(last, -dist);
-  return last;
+  std::advance(first, dist);
+  return first;
 }
 
 namespace ContainerAlgorithms {

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=617d1996a0671cd37d7a3bfbc6567dc606ff743b
commit 617d1996a0671cd37d7a3bfbc6567dc606ff743b
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Feb 15 23:39:38 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:21 2015 +0100

    cmAlgorithms: Move cmRotate out of 'implementation detail' namespace.
    
    This should be generally usable in cmake.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 54dc14a..f480b86 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -81,6 +81,16 @@ private:
   const std::string m_test;
 };
 
+template<typename BiDirIt>
+BiDirIt cmRotate(BiDirIt first, BiDirIt middle, BiDirIt last)
+{
+  typename std::iterator_traits<BiDirIt>::difference_type dist =
+      std::distance(first, middle);
+  std::rotate(first, middle, last);
+  std::advance(last, -dist);
+  return last;
+}
+
 namespace ContainerAlgorithms {
 
 template<typename T>
@@ -138,20 +148,10 @@ private:
   const_iterator End;
 };
 
-template<typename BiDirIt>
-BiDirIt Rotate(BiDirIt first, BiDirIt middle, BiDirIt last)
-{
-  typename std::iterator_traits<BiDirIt>::difference_type dist =
-      std::distance(first, middle);
-  std::rotate(first, middle, last);
-  std::advance(last, -dist);
-  return last;
-}
-
 template<typename Iter>
 Iter RemoveN(Iter i1, Iter i2, size_t n)
 {
-  return ContainerAlgorithms::Rotate(i1, i1 + n, i2);
+  return cmRotate(i1, i1 + n, i2);
 }
 
 template<typename Range>

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=65b0042e1d79f3486db07e973f41f165a676ee81
commit 65b0042e1d79f3486db07e973f41f165a676ee81
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jan 30 00:01:06 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:20 2015 +0100

    cmRST: Move two algorithms beside each other.

diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx
index da72ab7..14e8ad9 100644
--- a/Source/cmRST.cxx
+++ b/Source/cmRST.cxx
@@ -490,7 +490,6 @@ void cmRST::UnindentLines(std::vector<std::string>& lines)
     {
     ++leadingEmpty;
     }
-  lines.erase(lines.begin(), lines.begin()+leadingEmpty);
 
   // Drop trailing blank lines.
   size_t trailingEmpty = 0;
@@ -498,5 +497,6 @@ void cmRST::UnindentLines(std::vector<std::string>& lines)
     {
     ++trailingEmpty;
     }
+  lines.erase(lines.begin(), lines.begin()+leadingEmpty);
   lines.erase(lines.end()-trailingEmpty, lines.end());
 }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e1dc07e182b0cb15b20394c79f37794e6df99e62
commit e1dc07e182b0cb15b20394c79f37794e6df99e62
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 11 23:43:55 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:20 2015 +0100

    cmRST: Use std::min where appropriate.

diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx
index d20d999..da72ab7 100644
--- a/Source/cmRST.cxx
+++ b/Source/cmRST.cxx
@@ -463,10 +463,7 @@ void cmRST::UnindentLines(std::vector<std::string>& lines)
       }
 
     // Truncate indentation to match that on this line.
-    if(line.size() < indentEnd)
-      {
-      indentEnd = line.size();
-      }
+    indentEnd = std::min(indentEnd, line.size());
     for(std::string::size_type j = 0; j != indentEnd; ++j)
       {
       if(line[j] != indentText[j])

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2c6bff053f294d31b4f1edb80e428f4c8ec3d572
commit 2c6bff053f294d31b4f1edb80e428f4c8ec3d572
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 18 23:29:18 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:20 2015 +0100

    cmGlobalGenerator: Convert set insert algorithm to vector algorithms.
    
    Adjust test for new error output.

diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index ac4489a..3baffd3 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -3022,7 +3022,7 @@ void cmGlobalGenerator::AddEvaluationFile(const std::string &inputFile,
 //----------------------------------------------------------------------------
 void cmGlobalGenerator::ProcessEvaluationFiles()
 {
-  std::set<std::string> generatedFiles;
+  std::vector<std::string> generatedFiles;
   for(std::vector<cmGeneratorExpressionEvaluationFile*>::const_iterator
       li = this->EvaluationFiles.begin();
       li != this->EvaluationFiles.end();
@@ -3034,16 +3034,24 @@ void cmGlobalGenerator::ProcessEvaluationFiles()
       return;
       }
     std::vector<std::string> files = (*li)->GetFiles();
-    for(std::vector<std::string>::const_iterator fi = files.begin();
-        fi != files.end(); ++fi)
+    std::sort(files.begin(), files.end());
+
+    std::vector<std::string> intersection;
+    std::set_intersection(files.begin(), files.end(),
+                          generatedFiles.begin(), generatedFiles.end(),
+                          std::back_inserter(intersection));
+    if (!intersection.empty())
       {
-      if (!generatedFiles.insert(*fi).second)
-        {
-        cmSystemTools::Error("File to be generated by multiple different "
-          "commands: ", fi->c_str());
-        return;
-        }
+      cmSystemTools::Error("Files to be generated by multiple different "
+        "commands: ", cmWrap("\"", intersection, "\"", " ").c_str());
+      return;
       }
+
+        generatedFiles.insert(generatedFiles.end(),
+                              files.begin(), files.end());
+    std::vector<std::string>::iterator newIt =
+        generatedFiles.end() - files.size();
+    std::inplace_merge(generatedFiles.begin(), newIt, generatedFiles.end());
     }
 }
 
diff --git a/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt b/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt
index da97ba4..4fa3f20 100644
--- a/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt
+++ b/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt
@@ -1 +1 @@
-CMake Error: File to be generated by multiple different commands: .*CommandConflict-build/output_.*.txt
+CMake Error: Files to be generated by multiple different commands: ".*CommandConflict-build/output_.*.txt"

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8ad705f14040ae252b938830aeeb9124ebc5af72
commit 8ad705f14040ae252b938830aeeb9124ebc5af72
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 18 22:14:26 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:20 2015 +0100

    Convert some raw loops to cmWrap.

diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx
index 8652690..be28b2f 100644
--- a/Source/cmComputeLinkDepends.cxx
+++ b/Source/cmComputeLinkDepends.cxx
@@ -705,10 +705,7 @@ void cmComputeLinkDepends::DisplayConstraintGraph()
     {
     EdgeList const& nl = this->EntryConstraintGraph[i];
     e << "item " << i << " is [" << this->EntryList[i].Item << "]\n";
-    for(EdgeList::const_iterator j = nl.begin(); j != nl.end(); ++j)
-      {
-      e << "  item " << *j << " must follow it\n";
-      }
+    e << cmWrap("  item ", nl, " must follow it", "\n") << "\n";
     }
   fprintf(stderr, "%s\n", e.str().c_str());
 }
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index bcd2d81..e9390e4 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -683,11 +683,9 @@ void cmCoreTryCompile::FindOutputFile(const std::string& targetName)
 
   std::ostringstream emsg;
   emsg << "Unable to find the executable at any of:\n";
-  for (unsigned int i = 0; i < searchDirs.size(); ++i)
-    {
-    emsg << "  " << this->BinaryDirectory << searchDirs[i]
-         << tmpOutputFile << "\n";
-    }
+  emsg << cmWrap("  " + this->BinaryDirectory,
+                 searchDirs,
+                 tmpOutputFile, "\n") << "\n";
   this->FindErrorMessage = emsg.str();
   return;
 }
diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
index fd3aa0b..6fe055a 100644
--- a/Source/cmFindBase.cxx
+++ b/Source/cmFindBase.cxx
@@ -355,11 +355,7 @@ void cmFindBase::PrintFindStuff()
   std::cerr << "SearchPathSuffixes  ";
   std::cerr << cmJoin(this->SearchPathSuffixes, "\n") << "\n";
   std::cerr << "SearchPaths\n";
-  for(std::vector<std::string>::const_iterator i = this->SearchPaths.begin();
-      i != this->SearchPaths.end(); ++i)
-    {
-    std::cerr << "[" << *i << "]\n";
-    }
+  std::cerr << cmWrap("[", this->SearchPaths, "]", "\n") << "\n";
 }
 
 bool cmFindBase::CheckForVariableInCache()
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index fd9b236..26bd4b9 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -329,10 +329,7 @@ bool cmFindPackageCommand
     {
     std::ostringstream e;
     e << "called with components that are both required and optional:\n";
-    for(unsigned int i=0; i<doubledComponents.size(); ++i)
-      {
-      e << "  " << doubledComponents[i] << "\n";
-      }
+    e << cmWrap("  ", doubledComponents, "", "\n") << "\n";
     this->SetError(e.str());
     return false;
     }
@@ -808,13 +805,8 @@ bool cmFindPackageCommand::HandlePackageMode()
           {
           e << "Could not find a package configuration file provided by \""
             << this->Name << "\"" << requestedVersionString
-            << " with any of the following names:\n";
-          for(std::vector<std::string>::const_iterator ci =
-                this->Configs.begin();
-              ci != this->Configs.end(); ++ci)
-            {
-            e << "  " << *ci << "\n";
-            }
+            << " with any of the following names:\n"
+            << cmWrap("  ", this->Configs, "", "\n") << "\n";
           }
 
         e << "Add the installation prefix of \"" << this->Name << "\" to "
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 6fd569e..813e97d 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -213,13 +213,7 @@ cmMakefile::~cmMakefile()
 void cmMakefile::PrintStringVector(const char* s,
                                    const std::vector<std::string>& v) const
 {
-  std::cout << s << ": ( \n";
-  for(std::vector<std::string>::const_iterator i = v.begin();
-      i != v.end(); ++i)
-    {
-    std::cout << *i << " ";
-    }
-  std::cout << " )\n";
+  std::cout << s << ": ( \n" << cmWrap("\"", v, "\"", " ") << ")\n";
 }
 
 void cmMakefile
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index c913ea9..37f9a8f 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -213,27 +213,14 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
     // Echo string
     else if (args[1] == "echo" )
       {
-      unsigned int cc;
-      const char* space = "";
-      for ( cc = 2; cc < args.size(); cc ++ )
-        {
-        std::cout << space << args[cc];
-        space = " ";
-        }
-      std::cout << std::endl;
+      std::cout << cmJoin(cmRange(args).advance(2), " ") << std::endl;
       return 0;
       }
 
     // Echo string no new line
     else if (args[1] == "echo_append" )
       {
-      unsigned int cc;
-      const char* space = "";
-      for ( cc = 2; cc < args.size(); cc ++ )
-        {
-        std::cout << space << args[cc];
-        space = " ";
-        }
+      std::cout << cmJoin(cmRange(args).advance(2), " ");
       return 0;
       }
 

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7703057d02ac901c018fc1bc62b985bd3399f5b4
commit 7703057d02ac901c018fc1bc62b985bd3399f5b4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 18 23:50:36 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:20 2015 +0100

    cmAlgorithms: Add cmWrap.
    
    Port some existing cmJoin to use it.
    
    cmJoin is cumbersome to use in cases where the objective is to
    somehow 'quote' each item and then join it with a separator.  In that
    case, the joiner string is harder to read and reason about.  cmWrap
    aims to solve that.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 8491838..54dc14a 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -278,4 +278,15 @@ typename Range::const_iterator cmRemoveDuplicates(Range& r)
   return cmRemoveIndices(r, indices);
 }
 
+template<typename Range>
+std::string cmWrap(std::string prefix, Range const& r, std::string suffix,
+                   std::string sep)
+{
+   if (r.empty())
+     {
+     return std::string();
+     }
+  return prefix + cmJoin(r, (suffix + sep + prefix).c_str()) + suffix;
+}
+
 #endif
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index a7cfda7..391a965 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -724,12 +724,7 @@ cmLocalUnixMakefileGenerator3
     }
 
   // Write the list of commands.
-  for(std::vector<std::string>::const_iterator i = commands.begin();
-      i != commands.end(); ++i)
-    {
-    replace = *i;
-    os << "\t" << replace << "\n";
-    }
+  os << cmWrap("\t", commands, "", "\n") << "\n";
   if(symbolic && !this->WatcomWMake)
     {
     os << ".PHONY : " << cmMakeSafe(tgt) << "\n";
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index bf496e9..bc5be33 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -835,7 +835,7 @@ cmSystemTools::PrintSingleCommand(std::vector<std::string> const& command)
     return std::string();
     }
 
-  return "\"" + cmJoin(command, "\" \"") + "\"";
+  return cmWrap("\"", command, "\"", " ");
 }
 
 bool cmSystemTools::DoesFileExistWithExtensions(
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 81582f5..c913ea9 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -463,9 +463,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
         return 1;
         }
 
-      std::string command = "\"";
-      command += cmJoin(cmRange(args).advance(3), "\" \"");
-      command += "\"";
+      std::string command = cmWrap("\"", cmRange(args).advance(3), "\"", " ");
       int retval = 0;
       int timeout = 0;
       if ( cmSystemTools::RunSingleCommand(command.c_str(), 0, &retval,

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cc2345200e5c5f7910486f9350a3fcc724910afa
commit cc2345200e5c5f7910486f9350a3fcc724910afa
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Feb 12 20:53:43 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:20 2015 +0100

    Use cmJoin where possible.

diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index 8e20c14..bcd2d81 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -260,14 +260,10 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
         err << "Unknown extension \"" << ext << "\" for file\n"
             << "  " << *si << "\n"
             << "try_compile() works only for enabled languages.  "
-            << "Currently these are:\n ";
+            << "Currently these are:\n  ";
         std::vector<std::string> langs;
         gg->GetEnabledLanguages(langs);
-        for(std::vector<std::string>::iterator l = langs.begin();
-            l != langs.end(); ++l)
-          {
-          err << " " << *l;
-          }
+        err << cmJoin(langs, " ");
         err << "\nSee project() command to enable other languages.";
         this->Makefile->IssueMessage(cmake::FATAL_ERROR, err.str());
         return -1;
@@ -373,12 +369,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
     // handle any compile flags we need to pass on
     if (!compileDefs.empty())
       {
-      fprintf(fout, "add_definitions( ");
-      for (size_t i = 0; i < compileDefs.size(); ++i)
-        {
-        fprintf(fout,"%s ",compileDefs[i].c_str());
-        }
-      fprintf(fout, ")\n");
+      fprintf(fout, "add_definitions(%s)\n", cmJoin(compileDefs, " ").c_str());
       }
 
     /* Use a random file name to avoid rapid creation and deletion
diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
index 6e55533..fd3aa0b 100644
--- a/Source/cmFindBase.cxx
+++ b/Source/cmFindBase.cxx
@@ -350,19 +350,10 @@ void cmFindBase::PrintFindStuff()
   std::cerr << "NoCMakeSystemPath " << this->NoCMakeSystemPath << "\n";
   std::cerr << "EnvironmentPath " << this->EnvironmentPath << "\n";
   std::cerr << "CMakePathName " << this->CMakePathName << "\n";
-  std::cerr << "Names  ";
-  for(unsigned int i =0; i < this->Names.size(); ++i)
-    {
-    std::cerr << this->Names[i] << " ";
-    }
-  std::cerr << "\n";
+  std::cerr << "Names  " << cmJoin(this->Names, " ") << "\n";
   std::cerr << "\n";
   std::cerr << "SearchPathSuffixes  ";
-  for(unsigned int i =0; i < this->SearchPathSuffixes.size(); ++i)
-    {
-    std::cerr << this->SearchPathSuffixes[i] << "\n";
-    }
-  std::cerr << "\n";
+  std::cerr << cmJoin(this->SearchPathSuffixes, "\n") << "\n";
   std::cerr << "SearchPaths\n";
   for(std::vector<std::string>::const_iterator i = this->SearchPaths.begin();
       i != this->SearchPaths.end(); ++i)
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index c275e6b..a7cfda7 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -1330,13 +1330,7 @@ cmLocalUnixMakefileGenerator3
                       this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"));
     fout << "\n"
          << "# Per-language clean rules from dependency scanning.\n"
-         << "foreach(lang";
-    for(std::set<std::string>::const_iterator l = languages.begin();
-        l != languages.end(); ++l)
-      {
-      fout << " " << *l;
-      }
-    fout << ")\n"
+         << "foreach(lang" << cmJoin(languages, " ") << ")\n"
          << "  include(" << this->GetTargetDirectory(target)
          << "/cmake_clean_${lang}.cmake OPTIONAL)\n"
          << "endforeach()\n";
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 6a7dc6e..81582f5 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -1329,12 +1329,7 @@ bool cmcmd::RunCommand(const char* comment,
   if(verbose)
     {
     std::cout << comment << ":\n";
-    for(std::vector<std::string>::iterator i = command.begin();
-        i != command.end(); ++i)
-      {
-      std::cout << *i << " ";
-      }
-    std::cout << "\n";
+    std::cout << cmJoin(command, " ") << "\n";
     }
   std::string output;
   int retCode =0;

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=155f2a3477fc675e3a2f501633006cbbff550768
commit 155f2a3477fc675e3a2f501633006cbbff550768
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Feb 9 19:50:09 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:20 2015 +0100

    cmCacheManager: Replace loop with algorithm.

diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx
index 45e92ce..0c77891 100644
--- a/Source/cmCacheManager.cxx
+++ b/Source/cmCacheManager.cxx
@@ -186,11 +186,7 @@ void cmCacheManager::CleanCMakeFiles(const std::string& path)
   cmsys::Glob globIt;
   globIt.FindFiles(glob);
   std::vector<std::string> files = globIt.GetFiles();
-  for(std::vector<std::string>::iterator i = files.begin();
-      i != files.end(); ++i)
-    {
-    cmSystemTools::RemoveFile(*i);
-    }
+  std::for_each(files.begin(), files.end(), cmSystemTools::RemoveFile);
 }
 
 bool cmCacheManager::LoadCache(const std::string& path,

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=86c09fe543002e0d89842f89e22a44127da7ee55
commit 86c09fe543002e0d89842f89e22a44127da7ee55
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Feb 12 22:29:11 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:19 2015 +0100

    cmGlobalGenerator: Replace loop with algorithm.

diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index c976c69..ac4489a 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -2571,17 +2571,12 @@ bool cmGlobalGenerator::IsReservedTarget(std::string const& name)
     "test", "RUN_TESTS",
     "package", "PACKAGE",
     "package_source",
-    "ZERO_CHECK",
-    0
+    "ZERO_CHECK"
   };
 
-  for(const char** reservedTarget = reservedTargets;
-    *reservedTarget; ++reservedTarget)
-    {
-    if(name == *reservedTarget) return true;
-    }
-
-  return false;
+  return std::find(cmArrayBegin(reservedTargets),
+                   cmArrayEnd(reservedTargets), name)
+      != cmArrayEnd(reservedTargets);
 }
 
 void cmGlobalGenerator::SetExternalMakefileProjectGenerator(

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=77d69c5cb6e758d6e7a6ada2f2c9f435e15010bb
commit 77d69c5cb6e758d6e7a6ada2f2c9f435e15010bb
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Feb 15 13:40:56 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:19 2015 +0100

    cmTarget: Port loop to algorithm.

diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 1ad0d48..7673554 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -1542,12 +1542,8 @@ void cmTarget::DeleteDependencyForVS6( DependencyMap& depMap,
   if( map_itr != depMap.end() )
     {
     DependencyList& depList = map_itr->second;
-    DependencyList::iterator itr;
-    while( (itr = std::find(depList.begin(), depList.end(), dep)) !=
-           depList.end() )
-      {
-      depList.erase( itr );
-      }
+    depList.erase(std::remove(depList.begin(), depList.end(), dep),
+                  depList.end());
     }
 }
 

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9c225767873ce64a745e865c6f1c3372a8ab45d9
commit 9c225767873ce64a745e865c6f1c3372a8ab45d9
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 18 22:45:01 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:19 2015 +0100

    cmGlobalGenerator: Replace set::insert algorithm with cmRemoveDuplicates.

diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 1de4a59..c976c69 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -2937,14 +2937,11 @@ void cmGlobalGenerator::WriteSummary(cmTarget* target)
       {
       target->GetSourceFiles(sources, *ci);
       }
-    std::set<cmSourceFile*> emitted;
+    std::vector<cmSourceFile*>::const_iterator sourcesEnd
+        = cmRemoveDuplicates(sources);
     for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
-        si != sources.end(); ++si)
+        si != sourcesEnd; ++si)
       {
-      if (!emitted.insert(*si).second)
-        {
-        continue;
-        }
       Json::Value& lj_source = lj_sources.append(Json::objectValue);
       cmSourceFile* sf = *si;
       std::string const& sfp = sf->GetFullPath();

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ee5bc006ebee898729b81237719106704a2bb38a
commit ee5bc006ebee898729b81237719106704a2bb38a
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 18 21:58:07 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:19 2015 +0100

    cmGeneratorTarget: Replace set insert algorithm with cmRemoveDuplicates.

diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index a4f099b..44c9e9a 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -528,23 +528,22 @@ cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs,
   std::vector<cmSourceFile const*> objectFiles;
   this->GetExternalObjects(objectFiles, config);
   std::vector<cmTarget*> objectLibraries;
-  std::set<cmTarget*> emitted;
   for(std::vector<cmSourceFile const*>::const_iterator
       it = objectFiles.begin(); it != objectFiles.end(); ++it)
     {
     std::string objLib = (*it)->GetObjectLibrary();
     if (cmTarget* tgt = this->Makefile->FindTargetToUse(objLib))
       {
-      if (emitted.insert(tgt).second)
-        {
-        objectLibraries.push_back(tgt);
-        }
+      objectLibraries.push_back(tgt);
       }
     }
 
+  std::vector<cmTarget*>::const_iterator end
+      = cmRemoveDuplicates(objectLibraries);
+
   for(std::vector<cmTarget*>::const_iterator
         ti = objectLibraries.begin();
-      ti != objectLibraries.end(); ++ti)
+      ti != end; ++ti)
     {
     cmTarget* objLib = *ti;
     cmGeneratorTarget* ogt =

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b3a0c6e08f36efc5f3cd4c1a0d9614a789f91e38
commit b3a0c6e08f36efc5f3cd4c1a0d9614a789f91e38
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Feb 12 23:45:25 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Feb 19 00:59:19 2015 +0100

    cmLocalGenerator: Convert loop to algorithm.

diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 6a6135b..2accf47 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2800,12 +2800,7 @@ std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source,
       }
     if(this->WindowsShell)
       {
-      std::string::size_type pos = 0;
-      while((pos = result.find('/', pos)) != std::string::npos)
-        {
-        result[pos] = '\\';
-        pos++;
-        }
+      std::replace(result.begin(), result.end(), '/', '\\');
       }
     result = this->EscapeForShell(result, true, false, output == WATCOMQUOTE);
     }

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list