spade/delaunay_core/handles/iterators/
mod.rs1mod circular_iterator;
2mod fixed_iterators;
3mod hull_iterator;
4
5use super::{handle_defs::*, InnerTag, PossiblyOuterTag};
6use fixed_iterators::{DynamicHandleIterator, FixedHandleIterator};
7
8pub use circular_iterator::{CircularIterator, NextBackFn};
9pub use hull_iterator::HullIterator;
10
11macro_rules! type_handle_doc {
12 ($doc_name:expr, $item_type:expr) => {
13 concat!(
14 "An iterator over ",
15 $doc_name,
16 ".\n",
17 "\n",
18 "This iterator is created by [Triangulation::",
19 $item_type,
20 "()]",
21 "(crate::Triangulation::",
22 $item_type,
23 ").\n\n",
24 "*Note: This iterator specializes `nth` and `nth_back` - those operations run in O(1)*"
25 )
26 };
27}
28
29#[doc = type_handle_doc!("vertices", "vertices")]
30pub type VertexIterator<'a, V, DE, UE, F> =
31 DynamicHandleIterator<'a, V, DE, UE, F, VertexTag, InnerTag>;
32
33#[doc = type_handle_doc!("fixed vertices", "fixed_vertices")]
34pub type FixedVertexIterator = FixedHandleIterator<VertexTag, InnerTag>;
35
36#[doc = type_handle_doc!("directed edges", "directed_edges")]
37pub type DirectedEdgeIterator<'a, V, DE, UE, F> =
38 DynamicHandleIterator<'a, V, DE, UE, F, DirectedEdgeTag, InnerTag>;
39
40#[doc = type_handle_doc!("fixed directed edges", "fixed_directed_edges")]
41pub type FixedDirectedEdgeIterator = FixedHandleIterator<DirectedEdgeTag, InnerTag>;
42
43#[doc = type_handle_doc!("undirected edges", "undirected_edges")]
44pub type UndirectedEdgeIterator<'a, V, DE, UE, F> =
45 DynamicHandleIterator<'a, V, DE, UE, F, UndirectedEdgeTag, InnerTag>;
46
47#[doc = type_handle_doc!("fixed undirected edges", "fixed_undirected_edges")]
48pub type FixedUndirectedEdgeIterator = FixedHandleIterator<UndirectedEdgeTag, InnerTag>;
49
50#[doc = type_handle_doc!("voronoi faces", "voronoi_faces")]
51pub type VoronoiFaceIterator<'a, V, DE, UE, F> =
52 DynamicHandleIterator<'a, V, DE, UE, F, VoronoiFaceTag, PossiblyOuterTag>;
53
54#[doc = type_handle_doc!("directed voronoi edges", "directed_voronoi_edges")]
55pub type DirectedVoronoiEdgeIterator<'a, V, DE, UE, F> =
56 DynamicHandleIterator<'a, V, DE, UE, F, DirectedVoronoiEdgeTag, InnerTag>;
57
58#[doc = type_handle_doc!("undirected voronoi edges", "undirected_voronoi_edges")]
59pub type UndirectedVoronoiEdgeIterator<'a, V, DE, UE, F> =
60 DynamicHandleIterator<'a, V, DE, UE, F, UndirectedVoronoiEdgeTag, InnerTag>;
61
62#[doc = type_handle_doc!("faces", "all_faces")]
63pub type FaceIterator<'a, V, DE, UE, F> =
64 DynamicHandleIterator<'a, V, DE, UE, F, FaceTag, PossiblyOuterTag>;
65
66#[doc = type_handle_doc!("inner faces", "inner_faces")]
67pub type InnerFaceIterator<'a, V, DE, UE, F> =
68 DynamicHandleIterator<'a, V, DE, UE, F, FaceTag, InnerTag>;
69
70#[doc = type_handle_doc!("fixed faces", "fixed_all_faces")]
71pub type FixedFaceIterator = FixedHandleIterator<FaceTag, PossiblyOuterTag>;
72
73#[doc = type_handle_doc!("fixed inner faces", "fixed_inner_faces")]
74pub type FixedInnerFaceIterator = FixedHandleIterator<FaceTag, InnerTag>;