1 // Boost.Geometry (aka GGL, Generic Geometry Library) 2 3 // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. 4 // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. 5 // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. 6 7 // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library 8 // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. 9 10 // Use, modification and distribution is subject to the Boost Software License, 11 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 12 // http://www.boost.org/LICENSE_1_0.txt) 13 14 #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_SUM_HPP 15 #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_SUM_HPP 16 17 #include <boost/range.hpp> 18 19 20 namespace boost { namespace geometry 21 { 22 #ifndef DOXYGEN_NO_DETAIL 23 namespace detail 24 { 25 26 struct multi_sum 27 { 28 template <typename ReturnType, typename Policy, typename MultiGeometry, typename Strategy> applyboost::geometry::detail::multi_sum29 static inline ReturnType apply(MultiGeometry const& geometry, Strategy const& strategy) 30 { 31 ReturnType sum = ReturnType(); 32 for (typename boost::range_iterator 33 < 34 MultiGeometry const 35 >::type it = boost::begin(geometry); 36 it != boost::end(geometry); 37 ++it) 38 { 39 sum += Policy::apply(*it, strategy); 40 } 41 return sum; 42 } 43 }; 44 45 46 } // namespace detail 47 #endif 48 49 }} // namespace boost::geometry 50 51 52 #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_SUM_HPP 53