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.k...@kitware.com> AuthorDate: Tue Feb 24 09:16:48 2015 -0500 Commit: CMake Topic Stage <kwro...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 22:19:14 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 22:15:47 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 22:10:41 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 22:07:28 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 22:00:01 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 21:56:45 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 21:55:19 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 21:53:19 2015 +0100 Commit: Brad King <brad.k...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 21:52:36 2015 +0100 Commit: Stephen Kelly <steve...@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 <steve...@gmail.com> AuthorDate: Fri Feb 20 21:52:09 2015 +0100 Commit: Stephen Kelly <steve...@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 _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits