From 9b477525de9e1f38431ea18c32ec98590d45724d Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Thu, 27 Feb 2014 15:59:03 +0000 Subject: [PATCH] reformatted numeric.hpp --- include/boost/range/numeric.hpp | 150 ++++++++++++++++++++------------ 1 file changed, 93 insertions(+), 57 deletions(-) diff --git a/include/boost/range/numeric.hpp b/include/boost/range/numeric.hpp index 0b61527..d1510cd 100644 --- a/include/boost/range/numeric.hpp +++ b/include/boost/range/numeric.hpp @@ -1,14 +1,8 @@ -/////////////////////////////////////////////////////////////////////////////// -/// \file algorithm.hpp -/// Contains range-based versions of the std algorithms -// -///////////////////////////////////////////////////////////////////////////// -// Copyright 2009 Neil Groves. +// Copyright 2009-2014 Neil Groves. // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // - // Copyright 2006 Thorsten Ottosen. // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -18,7 +12,9 @@ // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) - +// +// Contains range-based versions of the numeric std algorithms +// #if defined(_MSC_VER) #pragma once #endif @@ -39,18 +35,23 @@ namespace boost { - template< class SinglePassRange, class Value > - inline Value accumulate( const SinglePassRange& rng, Value init ) + template + inline Value accumulate(const SinglePassRange& rng, Value init) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::accumulate( boost::begin(rng), boost::end(rng), init ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + + return std::accumulate(boost::begin(rng), boost::end(rng), init); } - template< class SinglePassRange, class Value, class BinaryOperation > - inline Value accumulate( const SinglePassRange& rng, Value init, BinaryOperation op ) + template + inline Value accumulate(const SinglePassRange& rng, Value init, + BinaryOperation op) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::accumulate( boost::begin(rng), boost::end(rng), init, op ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept )); + + return std::accumulate(boost::begin(rng), boost::end(rng), init, op); } namespace range_detail @@ -77,76 +78,111 @@ namespace boost } // namespace range_detail - template< class SinglePassRange1, class SinglePassRange2, class Value > - inline Value inner_product( const SinglePassRange1& rng1, const SinglePassRange2& rng2, Value init ) + template< + class SinglePassRange1, + class SinglePassRange2, + class Value + > + inline Value inner_product( + const SinglePassRange1& rng1, + const SinglePassRange2& rng2, + Value init) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + BOOST_ASSERT( range_detail::inner_product_precondition( rng1, rng2, typename range_category::type(), typename range_category::type())); - return std::inner_product( boost::begin(rng1), boost::end(rng1), - boost::begin(rng2), init ); + return std::inner_product( + boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), init); } - template< class SinglePassRange1, - class SinglePassRange2, - class Value, - class BinaryOperation1, class BinaryOperation2 > - inline Value inner_product( const SinglePassRange1& rng1, const SinglePassRange2& rng2, - Value init, - BinaryOperation1 op1, BinaryOperation2 op2 ) + template< + class SinglePassRange1, + class SinglePassRange2, + class Value, + class BinaryOperation1, + class BinaryOperation2 + > + inline Value inner_product( + const SinglePassRange1& rng1, + const SinglePassRange2& rng2, + Value init, + BinaryOperation1 op1, + BinaryOperation2 op2) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + BOOST_ASSERT( range_detail::inner_product_precondition( rng1, rng2, typename range_category::type(), typename range_category::type())); - return std::inner_product( boost::begin(rng1), boost::end(rng1), - boost::begin(rng2), init, op1, op2 ); + return std::inner_product( + boost::begin(rng1), boost::end(rng1), + boost::begin(rng2), init, op1, op2); } - template< class SinglePassRange, class OutputIterator > - inline OutputIterator partial_sum ( const SinglePassRange& rng, - OutputIterator result ) + template + inline OutputIterator partial_sum(const SinglePassRange& rng, + OutputIterator result) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::partial_sum( boost::begin(rng), boost::end(rng), result ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + + return std::partial_sum(boost::begin(rng), boost::end(rng), result); } - template< class SinglePassRange, class OutputIterator, class BinaryOperation > - inline OutputIterator partial_sum ( const SinglePassRange& rng, OutputIterator result, - BinaryOperation op ) + template + inline OutputIterator partial_sum( + const SinglePassRange& rng, + OutputIterator result, + BinaryOperation op) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::partial_sum( boost::begin(rng), boost::end(rng), result, op ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + + return std::partial_sum(boost::begin(rng), boost::end(rng), result, op); } - template< class SinglePassRange, class OutputIterator > - inline OutputIterator adjacent_difference ( const SinglePassRange& rng, - OutputIterator result ) + template + inline OutputIterator adjacent_difference( + const SinglePassRange& rng, + OutputIterator result) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::adjacent_difference( boost::begin(rng), boost::end(rng), - result ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + + return std::adjacent_difference(boost::begin(rng), boost::end(rng), + result); } - template< class SinglePassRange, class OutputIterator, class BinaryOperation > - inline OutputIterator adjacent_difference ( const SinglePassRange& rng, - OutputIterator result, - BinaryOperation op ) + template + inline OutputIterator adjacent_difference( + const SinglePassRange& rng, + OutputIterator result, + BinaryOperation op) { - BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept )); - return std::adjacent_difference( boost::begin(rng), boost::end(rng), - result, op ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept)); + + return std::adjacent_difference(boost::begin(rng), boost::end(rng), + result, op); } -} +} // namespace boost #endif