diff DEPENDENCIES/generic/include/boost/geometry/algorithms/difference.hpp @ 101:c530137014c0

Update Boost headers (1.58.0)
author Chris Cannam
date Mon, 07 Sep 2015 11:12:49 +0100
parents 2665513ce2d3
children
line wrap: on
line diff
--- a/DEPENDENCIES/generic/include/boost/geometry/algorithms/difference.hpp	Fri Sep 04 12:01:02 2015 +0100
+++ b/DEPENDENCIES/generic/include/boost/geometry/algorithms/difference.hpp	Mon Sep 07 11:12:49 2015 +0100
@@ -12,6 +12,7 @@
 #include <algorithm>
 
 #include <boost/geometry/algorithms/detail/overlay/intersection_insert.hpp>
+#include <boost/geometry/policies/robustness/get_rescale_policy.hpp>
 
 namespace boost { namespace geometry
 {
@@ -43,17 +44,20 @@
     typename GeometryOut,
     typename Geometry1,
     typename Geometry2,
+    typename RobustPolicy,
     typename OutputIterator,
     typename Strategy
 >
 inline OutputIterator difference_insert(Geometry1 const& geometry1,
-            Geometry2 const& geometry2, OutputIterator out,
+            Geometry2 const& geometry2,
+            RobustPolicy const& robust_policy,
+            OutputIterator out,
             Strategy const& strategy)
 {
     concept::check<Geometry1 const>();
     concept::check<Geometry2 const>();
     concept::check<GeometryOut>();
-    
+
     return geometry::dispatch::intersection_insert
         <
             Geometry1, Geometry2,
@@ -61,7 +65,7 @@
             overlay_difference,
             geometry::detail::overlay::do_reverse<geometry::point_order<Geometry1>::value>::value,
             geometry::detail::overlay::do_reverse<geometry::point_order<Geometry2>::value, true>::value
-        >::apply(geometry1, geometry2, out, strategy);
+        >::apply(geometry1, geometry2, robust_policy, out, strategy);
 }
 
 /*!
@@ -85,10 +89,13 @@
     typename GeometryOut,
     typename Geometry1,
     typename Geometry2,
+    typename RobustPolicy,
     typename OutputIterator
 >
 inline OutputIterator difference_insert(Geometry1 const& geometry1,
-            Geometry2 const& geometry2, OutputIterator out)
+            Geometry2 const& geometry2,
+            RobustPolicy const& robust_policy,
+            OutputIterator out)
 {
     concept::check<Geometry1 const>();
     concept::check<Geometry2 const>();
@@ -99,11 +106,12 @@
             typename cs_tag<GeometryOut>::type,
             Geometry1,
             Geometry2,
-            typename geometry::point_type<GeometryOut>::type
+            typename geometry::point_type<GeometryOut>::type,
+            RobustPolicy
         > strategy;
 
     return difference_insert<GeometryOut>(geometry1, geometry2,
-            out, strategy());
+            robust_policy, out, strategy());
 }
 
 
@@ -140,8 +148,17 @@
     typedef typename boost::range_value<Collection>::type geometry_out;
     concept::check<geometry_out>();
 
+    typedef typename geometry::rescale_overlay_policy_type
+        <
+            Geometry1,
+            Geometry2
+        >::type rescale_policy_type;
+
+    rescale_policy_type robust_policy
+            = geometry::get_rescale_policy<rescale_policy_type>(geometry1, geometry2);
+
     detail::difference::difference_insert<geometry_out>(
-            geometry1, geometry2,
+            geometry1, geometry2, robust_policy,
             std::back_inserter(output_collection));
 }