[Cmake-commits] CMake branch, next, updated. v3.2.0-rc2-691-gd170c90

Brad King brad.king at kitware.com
Tue Feb 24 09:16: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  d170c90d0ad3b749355f15ad7f91f290d7329156 (commit)
       via  47c2da6aa8c8f77e8d01b68cd5de596da2b2c3d7 (commit)
       via  a5b10ae68a4a84face73767f96189673015946be (commit)
       via  7fd8557f4c3d761c8ec0e7c29c9fa74a3ff45295 (commit)
       via  1f7967913662429adcc509528086d6525acff317 (commit)
       via  ba959934a6a832e7d0a9f4bfc433e09aad1476f3 (commit)
       via  cae45df77235bf7314421f2520177f21179beb84 (commit)
       via  b917f4c003cb192f461345b66a9af1a3436b86b1 (commit)
       via  bbc1a9788d94ed9a6f710689611c63dcc52c8b09 (commit)
       via  47a3e22ea5aee971df1e04a6447bb916af81aa2c (commit)
       via  cb75eec0b45eda230996580043e00e38d35a1e5b (commit)
      from  62e71cadfed6f49104496c1dff176935f7fad6bd (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=d170c90d0ad3b749355f15ad7f91f290d7329156
commit d170c90d0ad3b749355f15ad7f91f290d7329156
Merge: 62e71ca 47c2da6
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Feb 24 09:16:48 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Feb 24 09:16:48 2015 -0500

    Merge topic 'cleanup-cmAlgorithms' into next
    
    47c2da6a cmAlgorithms: Cache the end iterators in algorithms.
    a5b10ae6 cmAlgorithms: Remove needless assignment.
    7fd8557f cmAlgorithms: Maintain the pivot iterator in cmRemoveIndices.
    1f796791 cmAlgorithms: Relax iterator requirement for cmRemoveIndices.
    ba959934 cmAlgorithms: Make cmRemoveDuplicates work with more containers.
    cae45df7 cmAlgorithms: Rename template argument to RemoveN.
    b917f4c0 cmAlgorithms: Relax cmRemoveN requirement to FwdIter.
    bbc1a978 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=47c2da6aa8c8f77e8d01b68cd5de596da2b2c3d7
commit 47c2da6aa8c8f77e8d01b68cd5de596da2b2c3d7
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:19:14 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:02 2015 -0500

    cmAlgorithms: Cache the end iterators in algorithms.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 43023db..b9d7e78 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -236,6 +236,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);
@@ -243,13 +244,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>
@@ -267,8 +269,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);
@@ -283,7 +286,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=a5b10ae68a4a84face73767f96189673015946be
commit a5b10ae68a4a84face73767f96189673015946be
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:15:47 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:02 2015 -0500

    cmAlgorithms: Remove needless assignment.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index f00e1c0..43023db 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -249,8 +249,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=7fd8557f4c3d761c8ec0e7c29c9fa74a3ff45295
commit 7fd8557f4c3d761c8ec0e7c29c9fa74a3ff45295
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:10:41 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:02 2015 -0500

    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 3dd5f95..f00e1c0 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -239,12 +239,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=1f7967913662429adcc509528086d6525acff317
commit 1f7967913662429adcc509528086d6525acff317
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:07:28 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:02 2015 -0500

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

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 161a2cb..3dd5f95 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -237,12 +237,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=ba959934a6a832e7d0a9f4bfc433e09aad1476f3
commit ba959934a6a832e7d0a9f4bfc433e09aad1476f3
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 22:00:01 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:02 2015 -0500

    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 ca4c1fd..161a2cb 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -258,14 +258,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=cae45df77235bf7314421f2520177f21179beb84
commit cae45df77235bf7314421f2520177f21179beb84
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:56:45 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:01 2015 -0500

    cmAlgorithms: Rename template argument to RemoveN.

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 8790732..ca4c1fd 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -151,10 +151,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=b917f4c003cb192f461345b66a9af1a3436b86b1
commit b917f4c003cb192f461345b66a9af1a3436b86b1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:55:19 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:01 2015 -0500

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

diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index f90f105..8790732 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -154,7 +154,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=bbc1a9788d94ed9a6f710689611c63dcc52c8b09
commit bbc1a9788d94ed9a6f710689611c63dcc52c8b09
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 20 21:53:19 2015 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Feb 24 09:16:01 2015 -0500

    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..f90f105 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -127,11 +127,14 @@ 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:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list