diff options
Diffstat (limited to 'boost/geometry/algorithms/detail/expand/indexed.hpp')
-rw-r--r-- | boost/geometry/algorithms/detail/expand/indexed.hpp | 42 |
1 files changed, 9 insertions, 33 deletions
diff --git a/boost/geometry/algorithms/detail/expand/indexed.hpp b/boost/geometry/algorithms/detail/expand/indexed.hpp index 28cf0e2e4f..fe7ee4f781 100644 --- a/boost/geometry/algorithms/detail/expand/indexed.hpp +++ b/boost/geometry/algorithms/detail/expand/indexed.hpp @@ -5,11 +5,12 @@ // Copyright (c) 2009-2015 Mateusz Loskot, London, UK. // Copyright (c) 2014-2015 Samuel Debionne, Grenoble, France. -// This file was modified by Oracle on 2015, 2016. -// Modifications copyright (c) 2015-2016, Oracle and/or its affiliates. +// This file was modified by Oracle on 2015, 2016, 2017. +// Modifications copyright (c) 2015-2017, Oracle and/or its affiliates. // Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -22,15 +23,13 @@ #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_EXPAND_INDEXED_HPP #include <cstddef> +#include <functional> #include <boost/geometry/core/access.hpp> #include <boost/geometry/core/tags.hpp> #include <boost/geometry/util/select_coordinate_type.hpp> -#include <boost/geometry/strategies/compare.hpp> -#include <boost/geometry/policies/compare.hpp> - #include <boost/geometry/algorithms/dispatch/expand.hpp> @@ -44,7 +43,6 @@ namespace detail { namespace expand template < - typename StrategyLess, typename StrategyGreater, std::size_t Index, std::size_t Dimension, std::size_t DimensionCount > @@ -53,27 +51,17 @@ struct indexed_loop template <typename Box, typename Geometry, typename Strategy> static inline void apply(Box& box, Geometry const& source, Strategy const& strategy) { - typedef typename strategy::compare::detail::select_strategy - < - StrategyLess, 1, Box, Dimension - >::type less_type; - - typedef typename strategy::compare::detail::select_strategy - < - StrategyGreater, -1, Box, Dimension - >::type greater_type; - typedef typename select_coordinate_type < Box, Geometry >::type coordinate_type; - less_type less; - greater_type greater; - coordinate_type const coord = get<Index, Dimension>(source); + std::less<coordinate_type> less; + std::greater<coordinate_type> greater; + if (less(coord, get<min_corner, Dimension>(box))) { set<min_corner, Dimension>(box, coord); @@ -86,21 +74,15 @@ struct indexed_loop indexed_loop < - StrategyLess, StrategyGreater, Index, Dimension + 1, DimensionCount >::apply(box, source, strategy); } }; -template -< - typename StrategyLess, typename StrategyGreater, - std::size_t Index, std::size_t DimensionCount -> +template <std::size_t Index, std::size_t DimensionCount> struct indexed_loop < - StrategyLess, StrategyGreater, Index, DimensionCount, DimensionCount > { @@ -111,11 +93,7 @@ struct indexed_loop // Changes a box such that the other box is also contained by the box -template -< - std::size_t Dimension, std::size_t DimensionCount, - typename StrategyLess, typename StrategyGreater -> +template <std::size_t Dimension, std::size_t DimensionCount> struct expand_indexed { template <typename Box, typename Geometry, typename Strategy> @@ -125,13 +103,11 @@ struct expand_indexed { indexed_loop < - StrategyLess, StrategyGreater, 0, Dimension, DimensionCount >::apply(box, geometry, strategy); indexed_loop < - StrategyLess, StrategyGreater, 1, Dimension, DimensionCount >::apply(box, geometry, strategy); } |