summaryrefslogtreecommitdiff
path: root/boost/geometry/algorithms/detail/is_valid/polygon.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/algorithms/detail/is_valid/polygon.hpp')
-rw-r--r--boost/geometry/algorithms/detail/is_valid/polygon.hpp34
1 files changed, 14 insertions, 20 deletions
diff --git a/boost/geometry/algorithms/detail/is_valid/polygon.hpp b/boost/geometry/algorithms/detail/is_valid/polygon.hpp
index 72ae593f8e..39512ad154 100644
--- a/boost/geometry/algorithms/detail/is_valid/polygon.hpp
+++ b/boost/geometry/algorithms/detail/is_valid/polygon.hpp
@@ -1,9 +1,9 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-
-// Copyright (c) 2014-2020, Oracle and/or its affiliates.
+// Copyright (c) 2017-2023 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2014-2023, Oracle and/or its affiliates.
+// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
@@ -34,7 +34,7 @@
#include <boost/geometry/core/ring_type.hpp>
#include <boost/geometry/core/tags.hpp>
-#include <boost/geometry/util/condition.hpp>
+#include <boost/geometry/util/constexpr.hpp>
#include <boost/geometry/util/range.hpp>
#include <boost/geometry/util/sequence.hpp>
@@ -50,7 +50,6 @@
#include <boost/geometry/algorithms/detail/point_on_border.hpp>
#include <boost/geometry/algorithms/within.hpp>
-#include <boost/geometry/algorithms/detail/check_iterator_range.hpp>
#include <boost/geometry/algorithms/detail/partition.hpp>
#include <boost/geometry/algorithms/detail/is_valid/complement_graph.hpp>
@@ -86,17 +85,17 @@ class is_valid_polygon
protected:
template <typename VisitPolicy, typename Strategy>
- struct per_ring
+ struct is_invalid_ring
{
- per_ring(VisitPolicy& policy, Strategy const& strategy)
+ is_invalid_ring(VisitPolicy& policy, Strategy const& strategy)
: m_policy(policy)
, m_strategy(strategy)
{}
template <typename Ring>
- inline bool apply(Ring const& ring) const
+ inline bool operator()(Ring const& ring) const
{
- return detail::is_valid::is_valid_ring
+ return ! detail::is_valid::is_valid_ring
<
Ring, false, true
>::apply(ring, m_policy, m_strategy);
@@ -111,14 +110,9 @@ protected:
VisitPolicy& visitor,
Strategy const& strategy)
{
- return
- detail::check_iterator_range
- <
- per_ring<VisitPolicy, Strategy>,
- true // allow for empty interior ring range
- >::apply(boost::begin(interior_rings),
- boost::end(interior_rings),
- per_ring<VisitPolicy, Strategy>(visitor, strategy));
+ return std::none_of(boost::begin(interior_rings),
+ boost::end(interior_rings),
+ is_invalid_ring<VisitPolicy, Strategy>(visitor, strategy));
}
struct has_valid_rings
@@ -372,7 +366,7 @@ protected:
}
struct has_holes_inside
- {
+ {
template <typename TurnIterator, typename VisitPolicy, typename Strategy>
static inline bool apply(Polygon const& polygon,
TurnIterator first,
@@ -410,7 +404,7 @@ protected:
typedef complement_graph
<
typename turn_type::point_type,
- typename Strategy::cs_tag
+ Strategy
> graph;
graph g(geometry::num_interior_rings(polygon) + 1);
@@ -452,7 +446,7 @@ public:
return false;
}
- if (BOOST_GEOMETRY_CONDITION(CheckRingValidityOnly))
+ if BOOST_GEOMETRY_CONSTEXPR (CheckRingValidityOnly)
{
return true;
}