18#include <cuspatial/cuda_utils.hpp>
19#include <cuspatial/detail/range/enumerate_range.cuh>
30template <
typename PartIterator,
typename RingIterator,
typename VecIterator>
68 CUSPATIAL_HOST_DEVICE
auto enumerate()
const {
return detail::enumerate_range{
begin(),
end()}; }
71 template <
typename IndexType>
72 CUSPATIAL_HOST_DEVICE
auto operator[](IndexType polygon_idx)
const;
75 PartIterator _part_begin;
76 PartIterator _part_end;
77 RingIterator _ring_begin;
78 RingIterator _ring_end;
79 VecIterator _point_begin;
80 VecIterator _point_end;
85#include <cuspatial/detail/geometry_collection/multipolygon_ref.cuh>
Represent a reference to a multipolygon stored in a structure of arrays.
CUSPATIAL_HOST_DEVICE auto end() const
Return iterator to one past the last polygon of the multipolygon.
CUSPATIAL_HOST_DEVICE auto enumerate() const
Return an enumerated range to the polygons.
CUSPATIAL_HOST_DEVICE auto part_end() const
Return iterator to one past the last polygon.
CUSPATIAL_HOST_DEVICE auto begin() const
Return iterator to the first polygon of the multipolygon.
CUSPATIAL_HOST_DEVICE auto operator[](IndexType polygon_idx) const
Return polygon_idxth polygon in the multipolygon.
CUSPATIAL_HOST_DEVICE auto point_begin() const
Return iterator to the first point of the multipolygon.
CUSPATIAL_HOST_DEVICE bool is_empty() const
Returns true if the multipolygon contains 0 geometries.
CUSPATIAL_HOST_DEVICE auto ring_begin() const
Return iterator to the first ring.
CUSPATIAL_HOST_DEVICE auto num_polygons() const
Return the number of polygons in the multipolygon.
CUSPATIAL_HOST_DEVICE auto point_end() const
Return iterator to one past the last point of the multipolygon.
CUSPATIAL_HOST_DEVICE auto ring_end() const
Return iterator to one past the last ring.
CUSPATIAL_HOST_DEVICE auto part_begin() const
Return iterator to the first polygon.
CUSPATIAL_HOST_DEVICE auto size() const
Return the number of polygons in the multipolygon.