Developer Documentation
Loading...
Searching...
No Matches
Iterators.hh
1#pragma once
2/*===========================================================================*\
3 * *
4 * OpenVolumeMesh *
5 * Copyright (C) 2011 by Computer Graphics Group, RWTH Aachen *
6 * www.openvolumemesh.org *
7 * *
8 *---------------------------------------------------------------------------*
9 * This file is part of OpenVolumeMesh. *
10 * *
11 * OpenVolumeMesh is free software: you can redistribute it and/or modify *
12 * it under the terms of the GNU Lesser General Public License as *
13 * published by the Free Software Foundation, either version 3 of *
14 * the License, or (at your option) any later version with the *
15 * following exceptions: *
16 * *
17 * If other files instantiate templates or use macros *
18 * or inline functions from this file, or you compile this file and *
19 * link it with other files to produce an executable, this file does *
20 * not by itself cause the resulting executable to be covered by the *
21 * GNU Lesser General Public License. This exception does not however *
22 * invalidate any other reasons why the executable file might be *
23 * covered by the GNU Lesser General Public License. *
24 * *
25 * OpenVolumeMesh is distributed in the hope that it will be useful, *
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
28 * GNU Lesser General Public License for more details. *
29 * *
30 * You should have received a copy of the GNU LesserGeneral Public *
31 * License along with OpenVolumeMesh. If not, *
32 * see <http://www.gnu.org/licenses/>. *
33 * *
34\*===========================================================================*/
35
36
37#include <type_traits>
38#include <iterator>
39#include <set>
40#include <vector>
41
42#ifndef NDEBUG
43#include <iostream>
44#endif
45
46#include <OpenVolumeMesh/Core/Handles.hh>
47#include <OpenVolumeMesh/Config/Export.hh>
48#include <OpenVolumeMesh/Core/Iterators/BaseIterator.hh>
49#include <OpenVolumeMesh/Core/Iterators/BaseCirculator.hh>
50#include <OpenVolumeMesh/Core/Iterators/GenericCirculator.hh>
51
52#include <OpenVolumeMesh/Core/Iterators/detail/CellEdgeIterImpl.hh>
53#include <OpenVolumeMesh/Core/Iterators/detail/CellFaceIterImpl.hh>
54#include <OpenVolumeMesh/Core/Iterators/detail/CellHalfEdgeIterImpl.hh>
55#include <OpenVolumeMesh/Core/Iterators/detail/CellHalfFaceIterImpl.hh>
56#include <OpenVolumeMesh/Core/Iterators/detail/EdgeCellIterImpl.hh>
57#include <OpenVolumeMesh/Core/Iterators/detail/EdgeFaceIterImpl.hh>
58#include <OpenVolumeMesh/Core/Iterators/detail/EdgeHalfFaceIterImpl.hh>
59#include <OpenVolumeMesh/Core/Iterators/detail/FaceEdgeIterImpl.hh>
60#include <OpenVolumeMesh/Core/Iterators/detail/FaceHalfEdgeIterImpl.hh>
61#include <OpenVolumeMesh/Core/Iterators/detail/FaceVertexIterImpl.hh>
62#include <OpenVolumeMesh/Core/Iterators/detail/HalfEdgeFaceIterImpl.hh>
63#include <OpenVolumeMesh/Core/Iterators/detail/HalfFaceEdgeIterImpl.hh>
64#include <OpenVolumeMesh/Core/Iterators/detail/HalfFaceHalfEdgeIterImpl.hh>
65#include <OpenVolumeMesh/Core/Iterators/detail/VertexEdgeIterImpl.hh>
66#include <OpenVolumeMesh/Core/Iterators/detail/VertexHalfFaceIterImpl.hh>
67#include <OpenVolumeMesh/Core/Iterators/detail/VertexIHalfEdgeIterImpl.hh>
68
69
70#include <OpenVolumeMesh/Core/Iterators/BoundaryHalfFaceHalfFaceIter.hh>
71#include <OpenVolumeMesh/Core/Iterators/BoundaryItemIter.hh>
72#include <OpenVolumeMesh/Core/Iterators/CellCellIter.hh>
73#include <OpenVolumeMesh/Core/Iterators/CellIter.hh>
74#include <OpenVolumeMesh/Core/Iterators/CellVertexIter.hh>
75#include <OpenVolumeMesh/Core/Iterators/EdgeIter.hh>
76#include <OpenVolumeMesh/Core/Iterators/FaceIter.hh>
77#include <OpenVolumeMesh/Core/Iterators/HalfEdgeCellIter.hh>
78#include <OpenVolumeMesh/Core/Iterators/HalfEdgeHalfFaceIter.hh>
79#include <OpenVolumeMesh/Core/Iterators/HalfEdgeIter.hh>
80#include <OpenVolumeMesh/Core/Iterators/HalfFaceIter.hh>
81#include <OpenVolumeMesh/Core/Iterators/HalfFaceVertexIter.hh>
82#include <OpenVolumeMesh/Core/Iterators/VertexCellIter.hh>
83#include <OpenVolumeMesh/Core/Iterators/VertexFaceIter.hh>
84#include <OpenVolumeMesh/Core/Iterators/VertexIter.hh>
85#include <OpenVolumeMesh/Core/Iterators/VertexOHalfEdgeIter.hh>
86#include <OpenVolumeMesh/Core/Iterators/VertexVertexIter.hh>
87
88
89
90namespace OpenVolumeMesh {
91
92
93extern template class OVM_EXPORT GenericCirculator<detail::VertexIHalfEdgeIterImpl>;
94extern template class OVM_EXPORT GenericCirculator<detail::VertexEdgeIterImpl>;
95extern template class OVM_EXPORT GenericCirculator<detail::VertexHalfFaceIterImpl>;
96
97extern template class OVM_EXPORT GenericCirculator<detail::HalfEdgeFaceIterImpl>;
98
99extern template class OVM_EXPORT GenericCirculator<detail::EdgeHalfFaceIterImpl>;
100extern template class OVM_EXPORT GenericCirculator<detail::EdgeFaceIterImpl>;
101extern template class OVM_EXPORT GenericCirculator<detail::EdgeCellIterImpl>;
102
103extern template class OVM_EXPORT GenericCirculator<detail::HalfFaceHalfEdgeIterImpl>;
104extern template class OVM_EXPORT GenericCirculator<detail::HalfFaceEdgeIterImpl>;
105
106extern template class OVM_EXPORT GenericCirculator<detail::FaceVertexIterImpl>;
107extern template class OVM_EXPORT GenericCirculator<detail::FaceHalfEdgeIterImpl>;
108extern template class OVM_EXPORT GenericCirculator<detail::FaceEdgeIterImpl>;
109
110extern template class OVM_EXPORT GenericCirculator<detail::CellHalfEdgeIterImpl>;
111extern template class OVM_EXPORT GenericCirculator<detail::CellEdgeIterImpl>;
112extern template class OVM_EXPORT GenericCirculator<detail::CellHalfFaceIterImpl>;
113extern template class OVM_EXPORT GenericCirculator<detail::CellFaceIterImpl>;
114
115
116
117
118
119typedef GenericCirculator<detail::VertexIHalfEdgeIterImpl> VertexIHalfEdgeIter;
120typedef GenericCirculator<detail::VertexEdgeIterImpl> VertexEdgeIter;
121typedef GenericCirculator<detail::VertexHalfFaceIterImpl> VertexHalfFaceIter;
122
123typedef GenericCirculator<detail::HalfEdgeFaceIterImpl> HalfEdgeFaceIter;
124
125typedef GenericCirculator<detail::EdgeHalfFaceIterImpl> EdgeHalfFaceIter;
126typedef GenericCirculator<detail::EdgeFaceIterImpl> EdgeFaceIter;
127typedef GenericCirculator<detail::EdgeCellIterImpl> EdgeCellIter;
128
129typedef GenericCirculator<detail::HalfFaceHalfEdgeIterImpl> HalfFaceHalfEdgeIter;
130typedef GenericCirculator<detail::HalfFaceEdgeIterImpl> HalfFaceEdgeIter;
131
132typedef GenericCirculator<detail::FaceVertexIterImpl> FaceVertexIter;
133typedef GenericCirculator<detail::FaceHalfEdgeIterImpl> FaceHalfEdgeIter;
134typedef GenericCirculator<detail::FaceEdgeIterImpl> FaceEdgeIter;
135
136typedef GenericCirculator<detail::CellHalfEdgeIterImpl> CellHalfEdgeIter;
137typedef GenericCirculator<detail::CellEdgeIterImpl> CellEdgeIter;
138typedef GenericCirculator<detail::CellHalfFaceIterImpl> CellHalfFaceIter;
139typedef GenericCirculator<detail::CellFaceIterImpl> CellFaceIter;
140
141//===========================================================================
142
143//===========================================================================
144
145} // Namespace OpenVolumeMesh