added robust_policy which is, for linear/linear or pointlike/pointlike,

not used in the end
This commit is contained in:
Barend Gehrels
2014-04-23 13:31:23 +02:00
parent 2bfede47f3
commit d228fb8523
3 changed files with 27 additions and 14 deletions

View File

@@ -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);
}
};

View File

@@ -142,9 +142,10 @@ template
>
struct point_point_point
{
template <typename OutputIterator, typename Strategy>
template <typename RobustPolicy, typename OutputIterator, typename Strategy>
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 <typename OutputIterator, typename Strategy>
template <typename RobustPolicy, typename OutputIterator, typename Strategy>
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 <typename OutputIterator, typename Strategy>
template <typename RobustPolicy, typename OutputIterator, typename Strategy>
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 <typename OutputIterator, typename Strategy>
template <typename RobustPolicy, typename OutputIterator, typename Strategy>
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<typename point_type<MultiPoint2>::type>
@@ -399,9 +403,10 @@ template
>
struct union_pointlike_pointlike_point
{
template <typename OutputIterator, typename Strategy>
template <typename RobustPolicy, typename OutputIterator, typename Strategy>
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<PointLike2>::type,
typename tag<PointLike1>::type
>::apply(pointlike2, pointlike1, oit, strategy);
>::apply(pointlike2, pointlike1, robust_policy, oit, strategy);
}
};

View File

@@ -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<PointOut>
::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<PointOut>
::apply(linestring, *it, out, strategy);
::apply(linestring, *it, robust_policy, out, strategy);
}
return out;