加载中...
搜索中...
无匹配项
multipolygon_ref.cuh
1/*
2 * 版权所有 (c) 2023, NVIDIA CORPORATION.
3 *
4 * 根据 Apache 许可证 2.0 版 (“许可证”) 获得许可;
5 * 除非遵守许可证,否则您不得使用此文件。
6 * 您可以在以下网址获得许可证的副本
7 *
8 * https://apache.ac.cn/licenses/LICENSE-2.0
9 *
10 * 除非适用法律要求或书面同意,否则软件
11 * 根据许可证分发,按“原样”基础提供,
12 * 不提供任何明示或暗示的担保或条件。
13 * 请参阅许可证,了解管理权限和
14 * 限制的特定语言。
15 */
16#pragma once
17
18#include <cuspatial/cuda_utils.hpp>
19#include <cuspatial/detail/range/enumerate_range.cuh>
20
21namespace cuspatial {
22
30template <typename PartIterator, typename RingIterator, typename VecIterator>
31class multipolygon_ref {
32 public
33 CUSPATIAL_HOST_DEVICE multipolygon_ref(PartIterator part_begin,
34 PartIterator part_end,
35 RingIterator ring_begin,
36 RingIterator ring_end,
37 VecIterator point_begin,
38 VecIterator point_end);
40 CUSPATIAL_HOST_DEVICE auto num_polygons() const;
42 CUSPATIAL_HOST_DEVICE auto size() const { return num_polygons(); }
43
45 CUSPATIAL_HOST_DEVICE bool is_empty() const { return num_polygons() == 0; }
46
48 CUSPATIAL_HOST_DEVICE auto part_begin() const;
50 CUSPATIAL_HOST_DEVICE auto part_end() const;
51
53 CUSPATIAL_HOST_DEVICE auto ring_begin() const;
55 CUSPATIAL_HOST_DEVICE auto ring_end() const;
56
58 CUSPATIAL_HOST_DEVICE auto point_begin() const;
60 CUSPATIAL_HOST_DEVICE auto point_end() const;
61
63 CUSPATIAL_HOST_DEVICE auto begin() const { return part_begin(); }
65 CUSPATIAL_HOST_DEVICE auto end() const { return part_end(); }
66
68 CUSPATIAL_HOST_DEVICE auto enumerate() const { return detail::enumerate_range{begin(), end()}; }
69
71 template <typename IndexType>
72 CUSPATIAL_HOST_DEVICE auto operator[](IndexType polygon_idx) const;
73
74 protected
75 PartIterator _part_begin;
76 PartIterator _part_end;
77 RingIterator _ring_begin;
78 RingIterator _ring_end;
79 VecIterator _point_begin;
80 VecIterator _point_end;
81};
82
83} // 命名空间 cuspatial
84
85#include <cuspatial/detail/geometry_collection/multipolygon_ref.cuh>
CUSPATIAL_HOST_DEVICE auto end() const
返回指向多边形集合中最后一个多边形之后位置的迭代器。
CUSPATIAL_HOST_DEVICE auto enumerate() const
返回多边形的枚举范围。
CUSPATIAL_HOST_DEVICE auto part_end() const
返回指向最后一个多边形之后位置的迭代器。
CUSPATIAL_HOST_DEVICE auto begin() const
返回指向多边形集合中第一个多边形的迭代器。
CUSPATIAL_HOST_DEVICE auto operator[](IndexType polygon_idx) const
返回多边形集合中索引为 polygon_idx 的多边形。
CUSPATIAL_HOST_DEVICE auto point_begin() const
返回指向多边形集合中第一个点的迭代器。
CUSPATIAL_HOST_DEVICE bool is_empty() const
如果多边形集合包含 0 个几何图形,则返回 true。
CUSPATIAL_HOST_DEVICE auto ring_begin() const
返回指向第一个环的迭代器。
CUSPATIAL_HOST_DEVICE auto num_polygons() const
返回多边形集合中的多边形数量。
CUSPATIAL_HOST_DEVICE auto point_end() const
返回指向多边形集合中最后一个点之后位置的迭代器。
CUSPATIAL_HOST_DEVICE auto ring_end() const
返回指向最后一个环之后位置的迭代器。
CUSPATIAL_HOST_DEVICE auto part_begin() const
返回指向第一个多边形的迭代器。
CUSPATIAL_HOST_DEVICE auto size() const
返回多边形集合中的多边形数量。