From cd44f9090ed8b6145481bae8d42654e786aeb992 Mon Sep 17 00:00:00 2001 From: Bruno Lalande Date: Sun, 28 Oct 2012 19:25:13 +0000 Subject: [PATCH] Made dispatch::reverse able to find the tag by itself. [SVN r81077] --- include/boost/geometry/algorithms/reverse.hpp | 35 +++++++------------ .../geometry/multi/algorithms/reverse.hpp | 10 ++---- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/include/boost/geometry/algorithms/reverse.hpp b/include/boost/geometry/algorithms/reverse.hpp index bf0ef2d9a..1e1168a5a 100644 --- a/include/boost/geometry/algorithms/reverse.hpp +++ b/include/boost/geometry/algorithms/reverse.hpp @@ -32,9 +32,9 @@ namespace detail { namespace reverse { -template struct range_reverse { + template static inline void apply(Range& range) { std::reverse(boost::begin(range), boost::end(range)); @@ -42,21 +42,20 @@ struct range_reverse }; -template -struct polygon_reverse +struct polygon_reverse: private range_reverse { + template static inline void apply(Polygon& polygon) { typedef typename geometry::ring_type::type ring_type; - typedef range_reverse per_range; - per_range::apply(exterior_ring(polygon)); + range_reverse::apply(exterior_ring(polygon)); typename interior_return_type::type rings = interior_rings(polygon); for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); ++it) { - per_range::apply(*it); + range_reverse::apply(*it); } } }; @@ -71,11 +70,7 @@ namespace dispatch { -template -< - typename Tag, - typename Geometry -> +template ::type> struct reverse { static inline void apply(Geometry&) @@ -84,20 +79,20 @@ struct reverse template -struct reverse - : detail::reverse::range_reverse +struct reverse + : detail::reverse::range_reverse {}; template -struct reverse - : detail::reverse::range_reverse +struct reverse + : detail::reverse::range_reverse {}; template -struct reverse - : detail::reverse::polygon_reverse +struct reverse + : detail::reverse::polygon_reverse {}; @@ -121,11 +116,7 @@ inline void reverse(Geometry& geometry) { concept::check(); - dispatch::reverse - < - typename tag::type, - Geometry - >::apply(geometry); + dispatch::reverse::apply(geometry); } }} // namespace boost::geometry diff --git a/include/boost/geometry/multi/algorithms/reverse.hpp b/include/boost/geometry/multi/algorithms/reverse.hpp index f8a9442ac..910f1e3d1 100644 --- a/include/boost/geometry/multi/algorithms/reverse.hpp +++ b/include/boost/geometry/multi/algorithms/reverse.hpp @@ -34,27 +34,21 @@ namespace dispatch template -struct reverse +struct reverse : detail::multi_modify < Geometry, detail::reverse::range_reverse - < - typename boost::range_value::type - > > {}; template -struct reverse +struct reverse : detail::multi_modify < Geometry, detail::reverse::polygon_reverse - < - typename boost::range_value::type - > > {};