[Cmake-commits] CMake branch, next, updated. v3.2.0-rc2-642-g53dd35e

Stephen Kelly steveire at gmail.com
Mon Feb 23 14:23:49 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  53dd35e55a05aeb6b250c3ad9731c708249f5b93 (commit)
       via  6b66f299c3a7a46ec09da88412fab0b65e2f341b (commit)
       via  d44d3d7e4f85088d4b0d860573261c21e079cbcf (commit)
       via  b8ed9dcc9915c77bd294e0a20eaa6fc90733ac54 (commit)
       via  f01eaafbf1f1cc0791267546dd9d72e6da6f671b (commit)
       via  e8b3022ad2357dbac46b7451198a3a7c5aa7acca (commit)
       via  c2296a5929637fdd77b470330e2467a43a80d2f6 (commit)
       via  54af6f86eef18ddae4a73142b0667c832a626f07 (commit)
       via  37669f7c37f0d2e722253ff81c8074a153fe5aa1 (commit)
       via  47a3e22ea5aee971df1e04a6447bb916af81aa2c (commit)
       via  cb75eec0b45eda230996580043e00e38d35a1e5b (commit)
      from  1998e91525180522bc0503c4c0dadb31dc31f6a8 (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=53dd35e55a05aeb6b250c3ad9731c708249f5b93
commit 53dd35e55a05aeb6b250c3ad9731c708249f5b93
Merge: 1998e91 6b66f29
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Feb 23 14:23:48 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Feb 23 14:23:48 2015 -0500

    Merge topic 'cleanup-cmAlgorithms' into next
    
    6b66f299 cmAlgorithms: Cache the end iterators in algorithms.
    d44d3d7e cmAlgorithms: Remove needless assignment.
    b8ed9dcc cmAlgorithms: Maintain the pivot iterator in cmRemoveIndices.
    f01eaafb cmAlgorithms: Relax iterator requirement for cmRemoveIndices.
    e8b3022a cmAlgorithms: Make cmRemoveDuplicates work with more containers.
    c2296a59 cmAlgorithms: Rename template argument to RemoveN.
    54af6f86 cmAlgorithms: Relax cmRemoveN requirement to FwdIter.
    37669f7c cmAlgorithms: Add a size() to cmRange.
    47a3e22e cmAlgorithms: Rename template type in cmDeleteAll algorithm.
    cb75eec0 cmAlgorithms: Add const to const objects.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6b66f299c3a7a46ec09da88412fab0b65e2f341b
commit 6b66f299c3a7a46ec09da88412fab0b65e2f341b
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:19:14 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Cache the end iterators in algorithms.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index c3a2a65..540ad39 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -235,6 +235,7 @@ template<typename Range, typename InputRange>
 typename Range::const_iterator cmRemoveIndices(Range& r, InputRange const& rem)
 {
   typename InputRange::const_iterator remIt = rem.begin();
+  typename InputRange::const_iterator remEnd = rem.end();
 
   typename Range::iterator writer = r.begin();
   std::advance(writer, *remIt);
@@ -242,13 +243,14 @@ typename Range::const_iterator cmRemoveIndices(Range& r, InputRange const& rem)
   typename InputRange::value_type prevRem = *remIt;
   ++remIt;
   size_t count = 1;
-  for ( ; writer != r.end() && remIt != rem.end(); ++count, ++remIt)
+  const typename Range::iterator rangeEnd = r.end();
+  for ( ; writer != rangeEnd && remIt != remEnd; ++count, ++remIt)
     {
     std::advance(pivot, *remIt - prevRem);
     prevRem = *remIt;
     writer = ContainerAlgorithms::RemoveN(writer, pivot, count);
     }
-  return ContainerAlgorithms::RemoveN(writer, r.end(), count);
+  return ContainerAlgorithms::RemoveN(writer, rangeEnd, count);
 }
 
 template<typename Range, typename MatchRange>
@@ -266,8 +268,9 @@ typename Range::const_iterator cmRemoveDuplicates(Range& r)
   unique.reserve(r.size());
   std::vector<size_t> indices;
   size_t count = 0;
+  const typename Range::iterator end = r.end();
   for(typename Range::const_iterator it = r.begin();
-      it != r.end(); ++it, ++count)
+      it != end; ++it, ++count)
     {
     const typename UniqueVector::iterator low =
         std::lower_bound(unique.begin(), unique.end(), *it);
@@ -282,7 +285,7 @@ typename Range::const_iterator cmRemoveDuplicates(Range& r)
     }
   if (indices.empty())
     {
-    return r.end();
+    return end;
     }
   return cmRemoveIndices(r, indices);
 }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d44d3d7e4f85088d4b0d860573261c21e079cbcf
commit d44d3d7e4f85088d4b0d860573261c21e079cbcf
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:15:47 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Remove needless assignment.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 99213f8..c3a2a65 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -248,8 +248,7 @@ typename Range::const_iterator cmRemoveIndices(Range& r, InputRange const& rem)
     prevRem = *remIt;
     writer = ContainerAlgorithms::RemoveN(writer, pivot, count);
     }
-  writer = ContainerAlgorithms::RemoveN(writer, r.end(), count);
-  return writer;
+  return ContainerAlgorithms::RemoveN(writer, r.end(), count);
 }
 
 template<typename Range, typename MatchRange>

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b8ed9dcc9915c77bd294e0a20eaa6fc90733ac54
commit b8ed9dcc9915c77bd294e0a20eaa6fc90733ac54
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:10:41 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Maintain the pivot iterator in cmRemoveIndices.
    
    Avoid the algorithm of 'Schlemiel the painter' in the case of
    iterators which are not RandomAccess.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index cbfbb26..99213f8 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -238,12 +238,14 @@ typename Range::const_iterator cmRemoveIndices(Range& r, InputRange const& rem)
 
   typename Range::iterator writer = r.begin();
   std::advance(writer, *remIt);
+  typename Range::iterator pivot = writer;
+  typename InputRange::value_type prevRem = *remIt;
   ++remIt;
   size_t count = 1;
   for ( ; writer != r.end() && remIt != rem.end(); ++count, ++remIt)
     {
-    typename Range::iterator pivot = r.begin();
-    std::advance(pivot, *remIt);
+    std::advance(pivot, *remIt - prevRem);
+    prevRem = *remIt;
     writer = ContainerAlgorithms::RemoveN(writer, pivot, count);
     }
   writer = ContainerAlgorithms::RemoveN(writer, r.end(), count);

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f01eaafbf1f1cc0791267546dd9d72e6da6f671b
commit f01eaafbf1f1cc0791267546dd9d72e6da6f671b
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:07:28 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Relax iterator requirement for cmRemoveIndices.
    
    Require only forward iterators from the range.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index b361e1f..cbfbb26 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -236,12 +236,15 @@ typename Range::const_iterator cmRemoveIndices(Range& r, InputRange const& rem)
 {
   typename InputRange::const_iterator remIt = rem.begin();
 
-  typename Range::iterator writer = r.begin() + *remIt;
+  typename Range::iterator writer = r.begin();
+  std::advance(writer, *remIt);
   ++remIt;
   size_t count = 1;
   for ( ; writer != r.end() && remIt != rem.end(); ++count, ++remIt)
     {
-    writer = ContainerAlgorithms::RemoveN(writer, r.begin() + *remIt, count);
+    typename Range::iterator pivot = r.begin();
+    std::advance(pivot, *remIt);
+    writer = ContainerAlgorithms::RemoveN(writer, pivot, count);
     }
   writer = ContainerAlgorithms::RemoveN(writer, r.end(), count);
   return writer;

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e8b3022ad2357dbac46b7451198a3a7c5aa7acca
commit e8b3022ad2357dbac46b7451198a3a7c5aa7acca
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:00:01 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Make cmRemoveDuplicates work with more containers.
    
    Remove the accidental requirement that the input range must be a
    std::vector.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index c803a88..b361e1f 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -257,14 +257,15 @@ typename Range::const_iterator cmRemoveMatching(Range &r, MatchRange const& m)
 template<typename Range>
 typename Range::const_iterator cmRemoveDuplicates(Range& r)
 {
-  std::vector<typename Range::value_type> unique;
+  typedef std::vector<typename Range::value_type> UniqueVector;
+  UniqueVector unique;
   unique.reserve(r.size());
   std::vector<size_t> indices;
   size_t count = 0;
   for(typename Range::const_iterator it = r.begin();
       it != r.end(); ++it, ++count)
     {
-    const typename Range::iterator low =
+    const typename UniqueVector::iterator low =
         std::lower_bound(unique.begin(), unique.end(), *it);
     if (low == unique.end() || *low != *it)
       {

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c2296a5929637fdd77b470330e2467a43a80d2f6
commit c2296a5929637fdd77b470330e2467a43a80d2f6
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:56:45 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Rename template argument to RemoveN.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 4d511cf..c803a88 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -150,10 +150,10 @@ private:
   const_iterator End;
 };
 
-template<typename Iter>
-Iter RemoveN(Iter i1, Iter i2, size_t n)
+template<typename FwdIt>
+FwdIt RemoveN(FwdIt i1, FwdIt i2, size_t n)
 {
-  Iter m = i1;
+  FwdIt m = i1;
   std::advance(m, n);
   return cmRotate(i1, m, i2);
 }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=54af6f86eef18ddae4a73142b0667c832a626f07
commit 54af6f86eef18ddae4a73142b0667c832a626f07
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:55:19 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Relax cmRemoveN requirement to FwdIter.
    
    cmRotate already requires only FwdIter.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 86cc913..4d511cf 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -153,7 +153,9 @@ private:
 template<typename Iter>
 Iter RemoveN(Iter i1, Iter i2, size_t n)
 {
-  return cmRotate(i1, i1 + n, i2);
+  Iter m = i1;
+  std::advance(m, n);
+  return cmRotate(i1, m, i2);
 }
 
 template<typename Range>

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=37669f7c37f0d2e722253ff81c8074a153fe5aa1
commit 37669f7c37f0d2e722253ff81c8074a153fe5aa1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:53:19 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Add a size() to cmRange.
    
    size() is already used by cmRemoveDuplicates, which is designed to
    accept a cmRange.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 4b03736..86cc913 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -127,11 +127,13 @@ struct Range
 {
   typedef const_iterator_ const_iterator;
   typedef typename std::iterator_traits<const_iterator>::value_type value_type;
+  typedef typename std::iterator_traits<const_iterator>::difference_type difference_type;
   Range(const_iterator begin_, const_iterator end_)
     : Begin(begin_), End(end_) {}
   const_iterator begin() const { return Begin; }
   const_iterator end() const { return End; }
   bool empty() const { return std::distance(Begin, End) == 0; }
+  difference_type size() const { return std::distance(Begin, End); }
   Range& advance(cmIML_INT_intptr_t amount)
   {
     std::advance(Begin, amount);

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=47a3e22ea5aee971df1e04a6447bb916af81aa2c
commit 47a3e22ea5aee971df1e04a6447bb916af81aa2c
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:52:36 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Rename template type in cmDeleteAll algorithm.
    
    It may be any range, not only a container.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 56e7f17..4b03736 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -105,19 +105,19 @@ struct cmIsPair<std::pair<K, V> >
   enum { value = true };
 };
 
-template<typename Container,
-    bool valueTypeIsPair = cmIsPair<typename Container::value_type>::value>
+template<typename Range,
+    bool valueTypeIsPair = cmIsPair<typename Range::value_type>::value>
 struct DefaultDeleter
 {
-  void operator()(typename Container::value_type value) const {
+  void operator()(typename Range::value_type value) const {
     delete value;
   }
 };
 
-template<typename Container>
-struct DefaultDeleter<Container, /* valueTypeIsPair = */ true>
+template<typename Range>
+struct DefaultDeleter<Range, /* valueTypeIsPair = */ true>
 {
-  void operator()(typename Container::value_type value) const {
+  void operator()(typename Range::value_type value) const {
     delete value.second;
   }
 };
@@ -187,11 +187,11 @@ cmRange(Range const& range)
       range.begin(), range.end());
 }
 
-template<typename Container>
-void cmDeleteAll(Container const& c)
+template<typename Range>
+void cmDeleteAll(Range const& r)
 {
-  std::for_each(c.begin(), c.end(),
-                ContainerAlgorithms::DefaultDeleter<Container>());
+  std::for_each(r.begin(), r.end(),
+                ContainerAlgorithms::DefaultDeleter<Range>());
 }
 
 template<typename Range>

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cb75eec0b45eda230996580043e00e38d35a1e5b
commit cb75eec0b45eda230996580043e00e38d35a1e5b
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:52:09 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Feb 23 20:19:35 2015 +0100

    cmAlgorithms: Add const to const objects.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index b9bd67b..56e7f17 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -84,7 +84,7 @@ private:
 template<typename FwdIt>
 FwdIt cmRotate(FwdIt first, FwdIt middle, FwdIt last)
 {
-  typename std::iterator_traits<FwdIt>::difference_type dist =
+  const typename std::iterator_traits<FwdIt>::difference_type dist =
       std::distance(middle, last);
   std::rotate(first, middle, last);
   std::advance(first, dist);
@@ -204,7 +204,7 @@ std::string cmJoin(Range const& r, const char* delimiter)
   std::ostringstream os;
   typedef typename Range::value_type ValueType;
   typedef typename Range::const_iterator InputIt;
-  InputIt first = r.begin();
+  const InputIt first = r.begin();
   InputIt last = r.end();
   --last;
   std::copy(first, last,
@@ -260,7 +260,7 @@ typename Range::const_iterator cmRemoveDuplicates(Range& r)
   for(typename Range::const_iterator it = r.begin();
       it != r.end(); ++it, ++count)
     {
-    typename Range::iterator low =
+    const typename Range::iterator low =
         std::lower_bound(unique.begin(), unique.end(), *it);
     if (low == unique.end() || *low != *it)
       {

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

Summary of changes:
 Source/cmAlgorithms.h |   60 +++++++++++++++++++++++++++++--------------------
 1 file changed, 36 insertions(+), 24 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list