$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76001 - in trunk: boost/geometry/algorithms boost/geometry/multi/algorithms libs/geometry/doc/src/docutils/tools/support_status
From: bruno.lalande_at_[hidden]
Date: 2011-12-16 17:04:57
Author: bruno.lalande
Date: 2011-12-16 17:04:56 EST (Fri, 16 Dec 2011)
New Revision: 76001
URL: http://svn.boost.org/trac/boost/changeset/76001
Log:
Made dispatch::distance able to get the strategy tag by itself.
Text files modified: 
   trunk/boost/geometry/algorithms/distance.hpp                                 |    58 +++++++++++++++------------------------ 
   trunk/boost/geometry/multi/algorithms/distance.hpp                           |    10 ++----                                  
   trunk/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp |     1                                         
   3 files changed, 27 insertions(+), 42 deletions(-)
Modified: trunk/boost/geometry/algorithms/distance.hpp
==============================================================================
--- trunk/boost/geometry/algorithms/distance.hpp	(original)
+++ trunk/boost/geometry/algorithms/distance.hpp	2011-12-16 17:04:56 EST (Fri, 16 Dec 2011)
@@ -247,10 +247,10 @@
 
 template
 <
-    typename Geometry1, typename Geometry2,
-    typename StrategyTag, typename Strategy,
+    typename Geometry1, typename Geometry2, typename Strategy,
     typename Tag1 = typename tag_cast<typename tag<Geometry1>::type, multi_tag>::type,
     typename Tag2 = typename tag_cast<typename tag<Geometry2>::type, multi_tag>::type,
+    typename StrategyTag = typename strategy::distance::services::tag<Strategy>::type,
     bool Reverse = reverse_dispatch<Geometry1, Geometry2>::type::value
 >
 struct distance: not_implemented<for_geometry<Tag1>,
@@ -261,9 +261,8 @@
 template <typename P1, typename P2, typename Strategy>
 struct distance
     <
-        P1, P2,
-        strategy_tag_distance_point_point, Strategy,
-        point_tag, point_tag,
+        P1, P2, Strategy,
+        point_tag, point_tag, strategy_tag_distance_point_point,
         false
     >
     : detail::distance::point_to_point<P1, P2, Strategy>
@@ -273,18 +272,15 @@
 // If reversal is needed, perform it
 template
 <
-    typename Geometry1, typename Geometry2,
-    typename StrategyTag, typename Strategy,
-    typename Tag1,
-    typename Tag2
+    typename Geometry1, typename Geometry2, typename Strategy,
+    typename Tag1, typename Tag2, typename StrategyTag
 >
 struct distance
 <
-    Geometry1, Geometry2,
-    StrategyTag, Strategy,
-    Tag1, Tag2,
+    Geometry1, Geometry2, Strategy,
+    Tag1, Tag2, StrategyTag,
     true
->: distance<Geometry2, Geometry1, StrategyTag, Strategy, Tag2, Tag1, false>
+>: distance<Geometry2, Geometry1, Strategy, Tag2, Tag1, StrategyTag, false>
 {
     static inline typename return_type<Strategy>::type apply(
         Geometry1 const& g1,
@@ -293,9 +289,8 @@
     {
         return distance
             <
-                Geometry2, Geometry1,
-                StrategyTag, Strategy,
-                Tag2, Tag1,
+                Geometry2, Geometry1, Strategy,
+                Tag2, Tag1, StrategyTag,
                 false
             >::apply(g2, g1, strategy);
     }
@@ -306,9 +301,8 @@
 template <typename Point, typename Linestring, typename Strategy>
 struct distance
 <
-    Point, Linestring,
-    strategy_tag_distance_point_point, Strategy,
-    point_tag, linestring_tag,
+    Point, Linestring, Strategy,
+    point_tag, linestring_tag, strategy_tag_distance_point_point,
     false
 >
 {
@@ -336,9 +330,8 @@
 template <typename Point, typename Linestring, typename Strategy>
 struct distance
 <
-    Point, Linestring,
-    strategy_tag_distance_point_segment, Strategy,
-    point_tag, linestring_tag,
+    Point, Linestring, Strategy,
+    point_tag, linestring_tag, strategy_tag_distance_point_segment,
     false
 >
 {
@@ -358,9 +351,8 @@
 template <typename Point, typename Ring, typename Strategy>
 struct distance
 <
-    Point, Ring,
-    strategy_tag_distance_point_point, Strategy,
-    point_tag, ring_tag,
+    Point, Ring, Strategy,
+    point_tag, ring_tag, strategy_tag_distance_point_point,
     false
 >
 {
@@ -394,9 +386,8 @@
 template <typename Point, typename Polygon, typename Strategy>
 struct distance
 <
-    Point, Polygon,
-    strategy_tag_distance_point_point, Strategy,
-    point_tag, polygon_tag,
+    Point, Polygon, Strategy,
+    point_tag, polygon_tag, strategy_tag_distance_point_point,
     false
 >
 {
@@ -431,9 +422,8 @@
 template <typename Point, typename Segment, typename Strategy>
 struct distance
 <
-    Point, Segment,
-    strategy_tag_distance_point_point, Strategy,
-    point_tag, segment_tag,
+    Point, Segment, Strategy,
+    point_tag, segment_tag, strategy_tag_distance_point_point,
     false
 > : detail::distance::point_to_segment<Point, Segment, Strategy>
 {};
@@ -442,9 +432,8 @@
 template <typename Point, typename Segment, typename Strategy>
 struct distance
 <
-    Point, Segment,
-    strategy_tag_distance_point_segment, Strategy,
-    point_tag, segment_tag,
+    Point, Segment, Strategy,
+    point_tag, segment_tag, strategy_tag_distance_point_segment,
     false
 >
 {
@@ -512,7 +501,6 @@
                <
                    Geometry1,
                    Geometry2,
-                   typename strategy::distance::services::tag<Strategy>::type,
                    Strategy
                >::apply(geometry1, geometry2, strategy);
 }
Modified: trunk/boost/geometry/multi/algorithms/distance.hpp
==============================================================================
--- trunk/boost/geometry/multi/algorithms/distance.hpp	(original)
+++ trunk/boost/geometry/multi/algorithms/distance.hpp	2011-12-16 17:04:56 EST (Fri, 16 Dec 2011)
@@ -112,9 +112,8 @@
 >
 struct distance
 <
-    G1, G2,
-    strategy_tag_distance_point_point, Strategy,
-    SingleGeometryTag, multi_tag,
+    G1, G2, Strategy,
+    SingleGeometryTag, multi_tag, strategy_tag_distance_point_point,
     false
 >
     : detail::distance::distance_single_to_multi<G1, G2, Strategy>
@@ -123,9 +122,8 @@
 template <typename G1, typename G2, typename Strategy>
 struct distance
 <
-    G1, G2,
-    strategy_tag_distance_point_point, Strategy,
-    multi_tag, multi_tag,
+    G1, G2, Strategy,
+    multi_tag, multi_tag, strategy_tag_distance_point_point,
     false
 >
     : detail::distance::distance_multi_to_multi<G1, G2, Strategy>
Modified: trunk/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp
==============================================================================
--- trunk/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp	(original)
+++ trunk/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp	2011-12-16 17:04:56 EST (Fri, 16 Dec 2011)
@@ -35,7 +35,6 @@
   : boost::geometry::dispatch::distance<
         G1,
         G2,
-        boost::geometry::strategy_tag_distance_point_point,
         typename boost::geometry::strategy::distance::services::default_strategy<
             boost::geometry::point_tag,
             G1,