diff --git a/include/boost/geometry/algorithms/detail/overlay/linear_linear.hpp b/include/boost/geometry/algorithms/detail/overlay/linear_linear.hpp index ccb996778..e336ac390 100644 --- a/include/boost/geometry/algorithms/detail/overlay/linear_linear.hpp +++ b/include/boost/geometry/algorithms/detail/overlay/linear_linear.hpp @@ -224,10 +224,11 @@ protected: public: template < - typename OutputIterator, typename Strategy + typename RobustPolicy, typename OutputIterator, typename Strategy > static inline OutputIterator apply(Linear1 const& linear1, Linear2 const& linear2, + RobustPolicy const&, OutputIterator oit, Strategy const& ) { @@ -281,10 +282,11 @@ struct linear_linear_linestring { template < - typename OutputIterator, typename Strategy + typename RobustPolicy, typename OutputIterator, typename Strategy > static inline OutputIterator apply(Linear1 const& linear1, Linear2 const& linear2, + RobustPolicy const& robust_policy, OutputIterator oit, Strategy const& strategy) { @@ -301,7 +303,7 @@ struct linear_linear_linestring Linear2, Linear1, LinestringOut, overlay_difference, EnableFilterContinueTurns, EnableRemoveDuplicateTurns, EnableDegenerateTurns - >::apply(linear2, linear1, oit, strategy); + >::apply(linear2, linear1, robust_policy, oit, strategy); } }; diff --git a/include/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp b/include/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp index 4150a2514..8a63e78aa 100644 --- a/include/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp +++ b/include/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp @@ -142,9 +142,10 @@ template > struct point_point_point { - template + template static inline OutputIterator apply(Point1 const& point1, Point2 const& point2, + RobustPolicy const& , OutputIterator oit, Strategy const&) { @@ -175,9 +176,10 @@ template > struct multipoint_point_point { - template + template static inline OutputIterator apply(MultiPoint const& multipoint, Point const& point, + RobustPolicy const& , OutputIterator oit, Strategy const&) { @@ -209,9 +211,10 @@ template > struct point_multipoint_point { - template + template static inline OutputIterator apply(Point const& point, MultiPoint const& multipoint, + RobustPolicy const& , OutputIterator oit, Strategy const&) { @@ -244,9 +247,10 @@ template > struct multipoint_multipoint_point { - template + template static inline OutputIterator apply(MultiPoint1 const& multipoint1, MultiPoint2 const& multipoint2, + RobustPolicy const& robust_policy, OutputIterator oit, Strategy const& strategy) { @@ -256,7 +260,7 @@ struct multipoint_multipoint_point return multipoint_multipoint_point < MultiPoint2, MultiPoint1, PointOut, OverlayType - >::apply(multipoint2, multipoint1, oit, strategy); + >::apply(multipoint2, multipoint1, robust_policy, oit, strategy); } std::vector::type> @@ -399,9 +403,10 @@ template > struct union_pointlike_pointlike_point { - template + template static inline OutputIterator apply(PointLike1 const& pointlike1, PointLike2 const& pointlike2, + RobustPolicy const& robust_policy, OutputIterator oit, Strategy const& strategy) { @@ -412,7 +417,7 @@ struct union_pointlike_pointlike_point PointLike2, PointLike1, PointOut, overlay_difference, typename tag::type, typename tag::type - >::apply(pointlike2, pointlike1, oit, strategy); + >::apply(pointlike2, pointlike1, robust_policy, oit, strategy); } }; diff --git a/include/boost/geometry/multi/algorithms/intersection.hpp b/include/boost/geometry/multi/algorithms/intersection.hpp index 47cd6754c..5902eb261 100644 --- a/include/boost/geometry/multi/algorithms/intersection.hpp +++ b/include/boost/geometry/multi/algorithms/intersection.hpp @@ -45,10 +45,13 @@ struct intersection_multi_linestring_multi_linestring_point template < typename MultiLinestring1, typename MultiLinestring2, + typename RobustPolicy, typename OutputIterator, typename Strategy > static inline OutputIterator apply(MultiLinestring1 const& ml1, - MultiLinestring2 const& ml2, OutputIterator out, + MultiLinestring2 const& ml2, + RobustPolicy const& robust_policy, + OutputIterator out, Strategy const& strategy) { // Note, this loop is quadratic w.r.t. number of linestrings per input. @@ -68,7 +71,7 @@ struct intersection_multi_linestring_multi_linestring_point ++it2) { out = intersection_linestring_linestring_point - ::apply(*it1, *it2, out, strategy); + ::apply(*it1, *it2, robust_policy, out, strategy); } } @@ -83,10 +86,13 @@ struct intersection_linestring_multi_linestring_point template < typename Linestring, typename MultiLinestring, + typename RobustPolicy, typename OutputIterator, typename Strategy > static inline OutputIterator apply(Linestring const& linestring, - MultiLinestring const& ml, OutputIterator out, + MultiLinestring const& ml, + RobustPolicy const& robust_policy, + OutputIterator out, Strategy const& strategy) { for (typename boost::range_iterator @@ -97,7 +103,7 @@ struct intersection_linestring_multi_linestring_point ++it) { out = intersection_linestring_linestring_point - ::apply(linestring, *it, out, strategy); + ::apply(linestring, *it, robust_policy, out, strategy); } return out;