spade/delaunay_core/handles/iterators/
mod.rs

1mod 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>;