]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/geometry/algorithms/detail/intersection/multi.hpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / boost / geometry / algorithms / detail / intersection / multi.hpp
index 92ce89bb2d8f972a83da9888121999c253345a38..6a8c1f6c62194b9976086ccb6569b1efa438a63b 100644 (file)
@@ -2,8 +2,8 @@
 
 // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
 
-// This file was modified by Oracle on 2014.
-// Modifications copyright (c) 2014-2015, Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014, 2020.
+// Modifications copyright (c) 2014-2020, Oracle and/or its affiliates.
 
 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
 
@@ -123,7 +123,8 @@ template
 <
     bool ReverseAreal,
     typename LineStringOut,
-    overlay_type OverlayType
+    overlay_type OverlayType,
+    bool FollowIsolatedPoints
 >
 struct intersection_of_multi_linestring_with_areal
 {
@@ -147,7 +148,7 @@ struct intersection_of_multi_linestring_with_areal
         {
             out = intersection_of_linestring_with_areal
                 <
-                    ReverseAreal, LineStringOut, OverlayType
+                    ReverseAreal, LineStringOut, OverlayType, FollowIsolatedPoints
                 >::apply(*it, areal, robust_policy, out, strategy);
         }
 
@@ -161,7 +162,8 @@ template
 <
     bool ReverseAreal,
     typename LineStringOut,
-    overlay_type OverlayType
+    overlay_type OverlayType,
+    bool FollowIsolatedPoints
 >
 struct intersection_of_areal_with_multi_linestring
 {
@@ -178,7 +180,7 @@ struct intersection_of_areal_with_multi_linestring
     {
         return intersection_of_multi_linestring_with_areal
             <
-                ReverseAreal, LineStringOut, OverlayType
+                ReverseAreal, LineStringOut, OverlayType, FollowIsolatedPoints
             >::apply(ml, areal, robust_policy, out, strategy);
     }
 };
@@ -228,14 +230,14 @@ template
     typename MultiLinestring1, typename MultiLinestring2,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool Reverse1, bool Reverse2, bool ReverseOut
+    bool Reverse1, bool Reverse2
 >
 struct intersection_insert
     <
         MultiLinestring1, MultiLinestring2,
         GeometryOut,
         OverlayType,
-        Reverse1, Reverse2, ReverseOut,
+        Reverse1, Reverse2,
         multi_linestring_tag, multi_linestring_tag, point_tag,
         linear_tag, linear_tag, pointlike_tag
     > : detail::intersection::intersection_multi_linestring_multi_linestring_point
@@ -250,14 +252,14 @@ template
     typename Linestring, typename MultiLinestring,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool Reverse1, bool Reverse2, bool ReverseOut
+    bool Reverse1, bool Reverse2
 >
 struct intersection_insert
     <
         Linestring, MultiLinestring,
         GeometryOut,
         OverlayType,
-        Reverse1, Reverse2, ReverseOut,
+        Reverse1, Reverse2,
         linestring_tag, multi_linestring_tag, point_tag,
         linear_tag, linear_tag, pointlike_tag
     > : detail::intersection::intersection_linestring_multi_linestring_point
@@ -272,14 +274,14 @@ template
     typename MultiLinestring, typename Box,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool Reverse1, bool Reverse2, bool ReverseOut
+    bool Reverse1, bool Reverse2
 >
 struct intersection_insert
     <
         MultiLinestring, Box,
         GeometryOut,
         OverlayType,
-        Reverse1, Reverse2, ReverseOut,
+        Reverse1, Reverse2,
         multi_linestring_tag, box_tag, linestring_tag,
         linear_tag, areal_tag, linear_tag
     > : detail::intersection::clip_multi_linestring
@@ -294,21 +296,22 @@ template
     typename Linestring, typename MultiPolygon,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool ReverseLinestring, bool ReverseMultiPolygon, bool ReverseOut
+    bool ReverseLinestring, bool ReverseMultiPolygon
 >
 struct intersection_insert
     <
         Linestring, MultiPolygon,
         GeometryOut,
         OverlayType,
-        ReverseLinestring, ReverseMultiPolygon, ReverseOut,
+        ReverseLinestring, ReverseMultiPolygon,
         linestring_tag, multi_polygon_tag, linestring_tag,
         linear_tag, areal_tag, linear_tag
     > : detail::intersection::intersection_of_linestring_with_areal
             <
                 ReverseMultiPolygon,
                 GeometryOut,
-                OverlayType
+                OverlayType,
+                false
             >
 {};
 
@@ -320,21 +323,22 @@ template
     typename Polygon, typename MultiLinestring,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool ReversePolygon, bool ReverseMultiLinestring, bool ReverseOut
+    bool ReversePolygon, bool ReverseMultiLinestring
 >
 struct intersection_insert
     <
         Polygon, MultiLinestring,
         GeometryOut,
         OverlayType,
-        ReversePolygon, ReverseMultiLinestring, ReverseOut,
+        ReversePolygon, ReverseMultiLinestring,
         polygon_tag, multi_linestring_tag, linestring_tag,
         areal_tag, linear_tag, linear_tag
     > : detail::intersection::intersection_of_areal_with_multi_linestring
             <
                 ReversePolygon,
                 GeometryOut,
-                OverlayType
+                OverlayType,
+                false
             >
 {};
 
@@ -344,21 +348,22 @@ template
     typename MultiLinestring, typename Ring,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool ReverseMultiLinestring, bool ReverseRing, bool ReverseOut
+    bool ReverseMultiLinestring, bool ReverseRing
 >
 struct intersection_insert
     <
         MultiLinestring, Ring,
         GeometryOut,
         OverlayType,
-        ReverseMultiLinestring, ReverseRing, ReverseOut,
+        ReverseMultiLinestring, ReverseRing,
         multi_linestring_tag, ring_tag, linestring_tag,
         linear_tag, areal_tag, linear_tag
     > : detail::intersection::intersection_of_multi_linestring_with_areal
             <
                 ReverseRing,
                 GeometryOut,
-                OverlayType
+                OverlayType,
+                false
             >
 {};
 
@@ -367,21 +372,22 @@ template
     typename MultiLinestring, typename Polygon,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool ReverseMultiLinestring, bool ReverseRing, bool ReverseOut
+    bool ReverseMultiLinestring, bool ReversePolygon
 >
 struct intersection_insert
     <
         MultiLinestring, Polygon,
         GeometryOut,
         OverlayType,
-        ReverseMultiLinestring, ReverseRing, ReverseOut,
+        ReverseMultiLinestring, ReversePolygon,
         multi_linestring_tag, polygon_tag, linestring_tag,
         linear_tag, areal_tag, linear_tag
     > : detail::intersection::intersection_of_multi_linestring_with_areal
             <
-                ReverseRing,
+                ReversePolygon,
                 GeometryOut,
-                OverlayType
+                OverlayType,
+                false
             >
 {};
 
@@ -392,22 +398,126 @@ template
     typename MultiLinestring, typename MultiPolygon,
     typename GeometryOut,
     overlay_type OverlayType,
-    bool ReverseMultiLinestring, bool ReverseMultiPolygon, bool ReverseOut
+    bool ReverseMultiLinestring, bool ReverseMultiPolygon
 >
 struct intersection_insert
     <
         MultiLinestring, MultiPolygon,
         GeometryOut,
         OverlayType,
-        ReverseMultiLinestring, ReverseMultiPolygon, ReverseOut,
+        ReverseMultiLinestring, ReverseMultiPolygon,
         multi_linestring_tag, multi_polygon_tag, linestring_tag,
         linear_tag, areal_tag, linear_tag
     > : detail::intersection::intersection_of_multi_linestring_with_areal
             <
                 ReverseMultiPolygon,
                 GeometryOut,
-                OverlayType
+                OverlayType,
+                false
+            >
+{};
+
+
+
+template
+<
+    typename MultiLinestring, typename Ring,
+    typename TupledOut,
+    overlay_type OverlayType,
+    bool ReverseMultiLinestring, bool ReverseRing
+>
+struct intersection_insert
+    <
+        MultiLinestring, Ring,
+        TupledOut,
+        OverlayType,
+        ReverseMultiLinestring, ReverseRing,
+        multi_linestring_tag, ring_tag, detail::intersection::tupled_output_tag,
+        linear_tag, areal_tag, detail::intersection::tupled_output_tag
+    > : detail::intersection::intersection_of_multi_linestring_with_areal
+            <
+                ReverseRing,
+                TupledOut,
+                OverlayType,
+                true
+            >
+      , detail::intersection::expect_output_pl<MultiLinestring, Ring, TupledOut>
+{};
+
+
+template
+<
+    typename MultiLinestring, typename Polygon,
+    typename TupledOut,
+    overlay_type OverlayType,
+    bool ReverseMultiLinestring, bool ReversePolygon
+>
+struct intersection_insert
+    <
+        MultiLinestring, Polygon,
+        TupledOut,
+        OverlayType,
+        ReverseMultiLinestring, ReversePolygon,
+        multi_linestring_tag, polygon_tag, detail::intersection::tupled_output_tag,
+        linear_tag, areal_tag, detail::intersection::tupled_output_tag
+    > : detail::intersection::intersection_of_multi_linestring_with_areal
+            <
+                ReversePolygon,
+                TupledOut,
+                OverlayType,
+                true
+            >
+    , detail::intersection::expect_output_pl<MultiLinestring, Polygon, TupledOut>
+{};
+
+template
+<
+    typename Polygon, typename MultiLinestring,
+    typename TupledOut,
+    overlay_type OverlayType,
+    bool ReversePolygon, bool ReverseMultiLinestring
+>
+struct intersection_insert
+    <
+        Polygon, MultiLinestring,
+        TupledOut,
+        OverlayType,
+        ReversePolygon, ReverseMultiLinestring,
+        polygon_tag, multi_linestring_tag, detail::intersection::tupled_output_tag,
+        areal_tag, linear_tag, detail::intersection::tupled_output_tag
+    > : detail::intersection::intersection_of_areal_with_multi_linestring
+            <
+                ReversePolygon,
+                TupledOut,
+                OverlayType,
+                true
+            >
+    , detail::intersection::expect_output_pl<Polygon, MultiLinestring, TupledOut>
+{};
+
+template
+<
+    typename MultiLinestring, typename MultiPolygon,
+    typename TupledOut,
+    overlay_type OverlayType,
+    bool ReverseMultiLinestring, bool ReverseMultiPolygon
+>
+struct intersection_insert
+    <
+        MultiLinestring, MultiPolygon,
+        TupledOut,
+        OverlayType,
+        ReverseMultiLinestring, ReverseMultiPolygon,
+        multi_linestring_tag, multi_polygon_tag, detail::intersection::tupled_output_tag,
+        linear_tag, areal_tag, detail::intersection::tupled_output_tag
+    > : detail::intersection::intersection_of_multi_linestring_with_areal
+            <
+                ReverseMultiPolygon,
+                TupledOut,
+                OverlayType,
+                true
             >
+    , detail::intersection::expect_output_pl<MultiLinestring, MultiPolygon, TupledOut>
 {};