Developer Documentation
PolyConnectivity_inline_impl.hh
1 /* ========================================================================= *
2  * *
3  * OpenMesh *
4  * Copyright (c) 2001-2015, RWTH-Aachen University *
5  * Department of Computer Graphics and Multimedia *
6  * All rights reserved. *
7  * www.openmesh.org *
8  * *
9  *---------------------------------------------------------------------------*
10  * This file is part of OpenMesh. *
11  *---------------------------------------------------------------------------*
12  * *
13  * Redistribution and use in source and binary forms, with or without *
14  * modification, are permitted provided that the following conditions *
15  * are met: *
16  * *
17  * 1. Redistributions of source code must retain the above copyright notice, *
18  * this list of conditions and the following disclaimer. *
19  * *
20  * 2. Redistributions in binary form must reproduce the above copyright *
21  * notice, this list of conditions and the following disclaimer in the *
22  * documentation and/or other materials provided with the distribution. *
23  * *
24  * 3. Neither the name of the copyright holder nor the names of its *
25  * contributors may be used to endorse or promote products derived from *
26  * this software without specific prior written permission. *
27  * *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39  * *
40  * ========================================================================= */
41 
42 #ifndef OPENMESH_POLYCONNECTIVITY_INLINE_IMPL_HH
43 #define OPENMESH_POLYCONNECTIVITY_INLINE_IMPL_HH
44 
45 #include <OpenMesh/Core/Mesh/PolyConnectivity.hh>
46 #include <OpenMesh/Core/Mesh/IteratorsT.hh>
47 #include <OpenMesh/Core/Mesh/CirculatorsT.hh>
48 #include <OpenMesh/Core/Mesh/SmartHandles.hh>
49 
50 namespace OpenMesh {
51 
52 
54 
55 inline SmartHalfedgeHandle PolyConnectivity::next_halfedge_handle(SmartHalfedgeHandle _heh) const { return make_smart(next_halfedge_handle(HalfedgeHandle(_heh)), *this); }
56 inline SmartHalfedgeHandle PolyConnectivity::prev_halfedge_handle(SmartHalfedgeHandle _heh) const { return make_smart(prev_halfedge_handle(HalfedgeHandle(_heh)), *this); }
57 inline SmartHalfedgeHandle PolyConnectivity::opposite_halfedge_handle(SmartHalfedgeHandle _heh) const { return make_smart(opposite_halfedge_handle(HalfedgeHandle(_heh)), *this); }
58 inline SmartHalfedgeHandle PolyConnectivity::ccw_rotated_halfedge_handle(SmartHalfedgeHandle _heh) const { return make_smart(ccw_rotated_halfedge_handle(HalfedgeHandle(_heh)), *this); }
59 inline SmartHalfedgeHandle PolyConnectivity::cw_rotated_halfedge_handle(SmartHalfedgeHandle _heh) const { return make_smart(cw_rotated_halfedge_handle(HalfedgeHandle(_heh)), *this); }
60 
61 inline SmartHalfedgeHandle PolyConnectivity::s_halfedge_handle(SmartEdgeHandle _eh, unsigned int _i) { return make_smart(ArrayKernel::s_halfedge_handle(EdgeHandle(_eh), _i), _eh.mesh()); }
62 inline SmartEdgeHandle PolyConnectivity::s_edge_handle(SmartHalfedgeHandle _heh) { return make_smart(ArrayKernel::s_edge_handle(HalfedgeHandle(_heh)), _heh.mesh()); }
63 
64 inline SmartHalfedgeHandle PolyConnectivity::halfedge_handle(SmartEdgeHandle _eh, unsigned int _i) const { return make_smart(halfedge_handle(EdgeHandle(_eh), _i), *this); }
65 inline SmartEdgeHandle PolyConnectivity::edge_handle(SmartHalfedgeHandle _heh) const { return make_smart(edge_handle(HalfedgeHandle(_heh)), *this); }
66 inline SmartHalfedgeHandle PolyConnectivity::halfedge_handle(SmartFaceHandle _fh) const { return make_smart(halfedge_handle(FaceHandle(_fh)), *this); }
67 inline SmartHalfedgeHandle PolyConnectivity::halfedge_handle(SmartVertexHandle _vh) const { return make_smart(halfedge_handle(VertexHandle(_vh)), *this); }
68 
69 inline SmartFaceHandle PolyConnectivity::face_handle(SmartHalfedgeHandle _heh) const { return make_smart(face_handle(HalfedgeHandle(_heh)), *this); }
70 
71 
72 
74 template <typename RangeTraitT>
75 class EntityRange : public SmartRangeT<EntityRange<RangeTraitT>, typename RangeTraitT::ITER_TYPE::SmartHandle> {
76  public:
77  typedef typename RangeTraitT::ITER_TYPE iterator;
78  typedef typename RangeTraitT::ITER_TYPE const_iterator;
79 
80  explicit EntityRange(typename RangeTraitT::CONTAINER_TYPE &container) : container_(container) {}
81  typename RangeTraitT::ITER_TYPE begin() const { return RangeTraitT::begin(container_); }
82  typename RangeTraitT::ITER_TYPE end() const { return RangeTraitT::end(container_); }
83 
84  private:
85  typename RangeTraitT::CONTAINER_TYPE &container_;
86 };
87 
89 template <typename CirculatorRangeTraitT>
90 //class CirculatorRange : public SmartRangeT<CirculatorRange<CirculatorRangeTraitT>, decltype (make_smart(std::declval<typename CirculatorRangeTraitT::TO_ENTITYE_TYPE>(), std::declval<PolyConnectivity>()))>{
91 class CirculatorRange : public SmartRangeT<CirculatorRange<CirculatorRangeTraitT>, typename SmartHandle<typename CirculatorRangeTraitT::TO_ENTITYE_TYPE>::type>{
92  public:
93  typedef typename CirculatorRangeTraitT::ITER_TYPE ITER_TYPE;
94  typedef typename CirculatorRangeTraitT::CENTER_ENTITY_TYPE CENTER_ENTITY_TYPE;
95  typedef typename CirculatorRangeTraitT::CONTAINER_TYPE CONTAINER_TYPE;
96  typedef ITER_TYPE iterator;
97  typedef ITER_TYPE const_iterator;
98 
100  const CONTAINER_TYPE &container,
101  CENTER_ENTITY_TYPE center) :
102  container_(container), center_(center) {}
103  ITER_TYPE begin() const { return CirculatorRangeTraitT::begin(container_, center_); }
104  ITER_TYPE end() const { return CirculatorRangeTraitT::end(container_, center_); }
105 
106  private:
107  const CONTAINER_TYPE &container_;
108  CENTER_ENTITY_TYPE center_;
109 };
110 
111 
120 
121 template <> inline PolyConnectivity::ConstVertexRangeSkipping PolyConnectivity::elements<VertexHandle>() const { return vertices(); }
122 template <> inline PolyConnectivity::ConstVertexRange PolyConnectivity::all_elements<VertexHandle>() const { return all_vertices(); }
123 template <> inline PolyConnectivity::ConstHalfedgeRangeSkipping PolyConnectivity::elements<HalfedgeHandle>() const { return halfedges(); }
124 template <> inline PolyConnectivity::ConstHalfedgeRange PolyConnectivity::all_elements<HalfedgeHandle>() const { return all_halfedges(); }
125 template <> inline PolyConnectivity::ConstEdgeRangeSkipping PolyConnectivity::elements<EdgeHandle>() const { return edges(); }
126 template <> inline PolyConnectivity::ConstEdgeRange PolyConnectivity::all_elements<EdgeHandle>() const { return all_edges(); }
127 template <> inline PolyConnectivity::ConstFaceRangeSkipping PolyConnectivity::elements<FaceHandle>() const { return faces(); }
128 template <> inline PolyConnectivity::ConstFaceRange PolyConnectivity::all_elements<FaceHandle>() const { return all_faces(); }
129 
130 
132  return ConstVertexVertexRange(*this, _vh);
133 }
134 
136  return ConstVertexIHalfedgeRange(*this, _vh);
137 }
138 
140  return ConstVertexOHalfedgeRange(*this, _vh);
141 }
142 
144  return ConstVertexEdgeRange(*this, _vh);
145 }
146 
148  return ConstVertexFaceRange(*this, _vh);
149 }
150 
152  return ConstFaceVertexRange(*this, _fh);
153 }
154 
156  return ConstFaceHalfedgeRange(*this, _fh);
157 }
158 
160  return ConstFaceEdgeRange(*this, _fh);
161 }
162 
164  return ConstFaceFaceRange(*this, _fh);
165 }
166 
167 
168 
170 { return VertexIter(*this, VertexHandle(0)); }
171 
173 { return ConstVertexIter(*this, VertexHandle(0)); }
174 
176 { return VertexIter(*this, VertexHandle( int(n_vertices() ) )); }
177 
179 { return ConstVertexIter(*this, VertexHandle( int(n_vertices()) )); }
180 
182 { return HalfedgeIter(*this, HalfedgeHandle(0)); }
183 
185 { return ConstHalfedgeIter(*this, HalfedgeHandle(0)); }
186 
188 { return HalfedgeIter(*this, HalfedgeHandle(int(n_halfedges()))); }
189 
191 { return ConstHalfedgeIter(*this, HalfedgeHandle(int(n_halfedges()))); }
192 
194 { return EdgeIter(*this, EdgeHandle(0)); }
195 
197 { return ConstEdgeIter(*this, EdgeHandle(0)); }
198 
200 { return EdgeIter(*this, EdgeHandle(int(n_edges()))); }
201 
203 { return ConstEdgeIter(*this, EdgeHandle(int(n_edges()))); }
204 
206 { return FaceIter(*this, FaceHandle(0)); }
207 
209 { return ConstFaceIter(*this, FaceHandle(0)); }
210 
212 { return FaceIter(*this, FaceHandle(int(n_faces()))); }
213 
214 
216 { return ConstFaceIter(*this, FaceHandle(int(n_faces()))); }
217 
219 { return VertexIter(*this, VertexHandle(0), true); }
220 
222 { return ConstVertexIter(*this, VertexHandle(0), true); }
223 
225 { return HalfedgeIter(*this, HalfedgeHandle(0), true); }
226 
228 { return ConstHalfedgeIter(*this, HalfedgeHandle(0), true); }
229 
231 { return EdgeIter(*this, EdgeHandle(0), true); }
232 
234 { return ConstEdgeIter(*this, EdgeHandle(0), true); }
235 
237 { return FaceIter(*this, FaceHandle(0), true); }
238 
240 { return ConstFaceIter(*this, FaceHandle(0), true); }
241 
243 { return VertexVertexIter(*this, _vh); }
244 
246 { return VertexVertexCWIter(*this, _vh); }
247 
249 { return VertexVertexCCWIter(*this, _vh); }
250 
252 { return VertexIHalfedgeIter(*this, _vh); }
253 
255 { return VertexIHalfedgeCWIter(*this, _vh); }
256 
258 { return VertexIHalfedgeCCWIter(*this, _vh); }
259 
261 { return VertexOHalfedgeIter(*this, _vh); }
262 
264 { return VertexOHalfedgeCWIter(*this, _vh); }
265 
267 { return VertexOHalfedgeCCWIter(*this, _vh); }
268 
270 { return VertexEdgeIter(*this, _vh); }
271 
273 { return VertexEdgeCWIter(*this, _vh); }
274 
276 { return VertexEdgeCCWIter(*this, _vh); }
277 
279 { return VertexFaceIter(*this, _vh); }
280 
282 { return VertexFaceCWIter(*this, _vh); }
283 
285 { return VertexFaceCCWIter(*this, _vh); }
286 
288 { return ConstVertexVertexIter(*this, _vh); }
289 
291 { return ConstVertexVertexCWIter(*this, _vh); }
292 
294 { return ConstVertexVertexCCWIter(*this, _vh); }
295 
297 { return ConstVertexIHalfedgeIter(*this, _vh); }
298 
300 { return ConstVertexIHalfedgeCWIter(*this, _vh); }
301 
303 { return ConstVertexIHalfedgeCCWIter(*this, _vh); }
304 
306 { return ConstVertexOHalfedgeIter(*this, _vh); }
307 
309 { return ConstVertexOHalfedgeCWIter(*this, _vh); }
310 
312 { return ConstVertexOHalfedgeCCWIter(*this, _vh); }
313 
315 { return ConstVertexEdgeIter(*this, _vh); }
316 
318 { return ConstVertexEdgeCWIter(*this, _vh); }
319 
321 { return ConstVertexEdgeCCWIter(*this, _vh); }
322 
324 { return ConstVertexFaceIter(*this, _vh); }
325 
327 { return ConstVertexFaceCWIter(*this, _vh); }
328 
330 { return ConstVertexFaceCCWIter(*this, _vh); }
331 
333 { return FaceVertexIter(*this, _fh); }
334 
336 { return FaceVertexCWIter(*this, _fh); }
337 
339 { return FaceVertexCCWIter(*this, _fh); }
340 
342 { return FaceHalfedgeIter(*this, _fh); }
343 
345 { return FaceHalfedgeCWIter(*this, _fh); }
346 
348 { return FaceHalfedgeCCWIter(*this, _fh); }
349 
351 { return FaceEdgeIter(*this, _fh); }
352 
354 { return FaceEdgeCWIter(*this, _fh); }
355 
357 { return FaceEdgeCCWIter(*this, _fh); }
358 
360 { return FaceFaceIter(*this, _fh); }
361 
363 { return FaceFaceCWIter(*this, _fh); }
364 
366 { return FaceFaceCCWIter(*this, _fh); }
367 
369 { return ConstFaceVertexIter(*this, _fh); }
370 
372 { return ConstFaceVertexCWIter(*this, _fh); }
373 
375 { return ConstFaceVertexCCWIter(*this, _fh); }
376 
378 { return ConstFaceHalfedgeIter(*this, _fh); }
379 
381 { return ConstFaceHalfedgeCWIter(*this, _fh); }
382 
384 { return ConstFaceHalfedgeCCWIter(*this, _fh); }
385 
387 { return ConstFaceEdgeIter(*this, _fh); }
388 
390 { return ConstFaceEdgeCWIter(*this, _fh); }
391 
393 { return ConstFaceEdgeCCWIter(*this, _fh); }
394 
396 { return ConstFaceFaceIter(*this, _fh); }
397 
399 { return ConstFaceFaceCWIter(*this, _fh); }
400 
402 { return ConstFaceFaceCCWIter(*this, _fh); }
403 
404 
406 { return VertexVertexIter(*this, _vh); }
407 
409 { return VertexVertexCWIter(*this, _vh); }
410 
412 { return VertexVertexCCWIter(*this, _vh); }
413 
415 { return VertexIHalfedgeIter(*this, _vh); }
416 
418 { return VertexIHalfedgeCWIter(*this, _vh); }
419 
421 { return VertexIHalfedgeCCWIter(*this, _vh); }
422 
424 { return VertexOHalfedgeIter(*this, _vh); }
425 
427 { return VertexOHalfedgeCWIter(*this, _vh); }
428 
430 { return VertexOHalfedgeCCWIter(*this, _vh); }
431 
433 { return VertexEdgeIter(*this, _vh); }
434 
436 { return VertexEdgeCWIter(*this, _vh); }
437 
439 { return VertexEdgeCCWIter(*this, _vh); }
440 
442 { return VertexFaceIter(*this, _vh); }
443 
445 { return VertexFaceCWIter(*this, _vh); }
446 
448 { return VertexFaceCCWIter(*this, _vh); }
449 
450 
452 { return ConstVertexVertexIter(*this, _vh); }
453 
455 { return ConstVertexVertexCWIter(*this, _vh); }
456 
458 { return ConstVertexVertexCCWIter(*this, _vh); }
459 
461 { return ConstVertexIHalfedgeIter(*this, _vh); }
462 
464 { return ConstVertexIHalfedgeCWIter(*this, _vh); }
465 
467 { return ConstVertexIHalfedgeCCWIter(*this, _vh); }
468 
470 { return ConstVertexOHalfedgeIter(*this, _vh); }
471 
473 { return ConstVertexOHalfedgeCWIter(*this, _vh); }
474 
476 { return ConstVertexOHalfedgeCCWIter(*this, _vh); }
477 
479 { return ConstVertexEdgeIter(*this, _vh); }
480 
482 { return ConstVertexEdgeCWIter(*this, _vh); }
483 
485 { return ConstVertexEdgeCCWIter(*this, _vh); }
486 
488 { return ConstVertexFaceIter(*this, _vh); }
489 
491 { return ConstVertexFaceCWIter(*this, _vh); }
492 
494 { return ConstVertexFaceCCWIter(*this, _vh); }
495 
496 
498 { return FaceVertexIter(*this, _fh); }
499 
501 { return FaceVertexCWIter(*this, _fh); }
502 
504 { return FaceVertexCCWIter(*this, _fh); }
505 
507 { return FaceHalfedgeIter(*this, _fh); }
508 
510 { return FaceHalfedgeCWIter(*this, _fh); }
511 
513 { return FaceHalfedgeCCWIter(*this, _fh); }
514 
516 { return FaceEdgeIter(*this, _fh); }
517 
519 { return FaceEdgeCWIter(*this, _fh); }
520 
522 { return FaceEdgeCCWIter(*this, _fh); }
523 
525 { return FaceFaceIter(*this, _fh); }
526 
528 { return FaceFaceCWIter(*this, _fh); }
529 
531 { return FaceFaceCCWIter(*this, _fh); }
532 
534 { return HalfedgeLoopIter(*this, _heh); }
535 
537 { return HalfedgeLoopCWIter(*this, _heh); }
538 
540 { return HalfedgeLoopCCWIter(*this, _heh); }
541 
542 
544 { return ConstFaceVertexIter(*this, _fh); }
545 
547 { return ConstFaceVertexCWIter(*this, _fh); }
548 
550 { return ConstFaceVertexCCWIter(*this, _fh); }
551 
553 { return ConstFaceHalfedgeIter(*this, _fh); }
554 
556 { return ConstFaceHalfedgeCWIter(*this, _fh); }
557 
559 { return ConstFaceHalfedgeCCWIter(*this, _fh); }
560 
562 { return ConstFaceEdgeIter(*this, _fh); }
563 
565 { return ConstFaceEdgeCWIter(*this, _fh); }
566 
568 { return ConstFaceEdgeCCWIter(*this, _fh); }
569 
571 { return ConstFaceFaceIter(*this, _fh); }
572 
574 { return ConstFaceFaceCWIter(*this, _fh); }
575 
577 { return ConstFaceFaceCCWIter(*this, _fh); }
578 
580 { return ConstHalfedgeLoopIter(*this, _heh); }
581 
583 { return ConstHalfedgeLoopCWIter(*this, _heh); }
584 
586 { return ConstHalfedgeLoopCCWIter(*this, _heh); }
587 
588 // 'end' circulators
589 
591 { return VertexVertexIter(*this, _vh, true); }
592 
594 { return VertexVertexCWIter(*this, _vh, true); }
595 
597 { return VertexVertexCCWIter(*this, _vh, true); }
598 
600 { return VertexIHalfedgeIter(*this, _vh, true); }
601 
603 { return VertexIHalfedgeCWIter(*this, _vh, true); }
604 
606 { return VertexIHalfedgeCCWIter(*this, _vh, true); }
607 
609 { return VertexOHalfedgeIter(*this, _vh, true); }
610 
612 { return VertexOHalfedgeCWIter(*this, _vh, true); }
613 
615 { return VertexOHalfedgeCCWIter(*this, _vh, true); }
616 
618 { return VertexEdgeIter(*this, _vh, true); }
619 
621 { return VertexEdgeCWIter(*this, _vh, true); }
622 
624 { return VertexEdgeCCWIter(*this, _vh, true); }
625 
627 { return VertexFaceIter(*this, _vh, true); }
628 
630 { return VertexFaceCWIter(*this, _vh, true); }
631 
633 { return VertexFaceCCWIter(*this, _vh, true); }
634 
635 
637 { return ConstVertexVertexIter(*this, _vh, true); }
638 
640 { return ConstVertexVertexCWIter(*this, _vh, true); }
641 
643 { return ConstVertexVertexCCWIter(*this, _vh, true); }
644 
646 { return ConstVertexIHalfedgeIter(*this, _vh, true); }
647 
649 { return ConstVertexIHalfedgeCWIter(*this, _vh, true); }
650 
652 { return ConstVertexIHalfedgeCCWIter(*this, _vh, true); }
653 
655 { return ConstVertexOHalfedgeIter(*this, _vh, true); }
656 
658 { return ConstVertexOHalfedgeCWIter(*this, _vh, true); }
659 
661 { return ConstVertexOHalfedgeCCWIter(*this, _vh, true); }
662 
664 { return ConstVertexEdgeIter(*this, _vh, true); }
665 
667 { return ConstVertexEdgeCWIter(*this, _vh, true); }
668 
670 { return ConstVertexEdgeCCWIter(*this, _vh, true); }
671 
673 { return ConstVertexFaceIter(*this, _vh, true); }
674 
676 { return ConstVertexFaceCWIter(*this, _vh, true); }
677 
679 { return ConstVertexFaceCCWIter(*this, _vh, true); }
680 
681 
683 { return FaceVertexIter(*this, _fh, true); }
684 
686 { return FaceVertexCWIter(*this, _fh, true); }
687 
689 { return FaceVertexCCWIter(*this, _fh, true); }
690 
692 { return FaceHalfedgeIter(*this, _fh, true); }
693 
695 { return FaceHalfedgeCWIter(*this, _fh, true); }
696 
698 { return FaceHalfedgeCCWIter(*this, _fh, true); }
699 
701 { return FaceEdgeIter(*this, _fh, true); }
702 
704 { return FaceEdgeCWIter(*this, _fh, true); }
705 
707 { return FaceEdgeCCWIter(*this, _fh, true); }
708 
710 { return FaceFaceIter(*this, _fh, true); }
711 
713 { return FaceFaceCWIter(*this, _fh, true); }
714 
716 { return FaceFaceCCWIter(*this, _fh, true); }
717 
719 { return HalfedgeLoopIter(*this, _heh, true); }
720 
722 { return HalfedgeLoopCWIter(*this, _heh, true); }
723 
725 { return HalfedgeLoopCCWIter(*this, _heh, true); }
726 
727 
729 { return ConstFaceVertexIter(*this, _fh, true); }
730 
732 { return ConstFaceVertexCWIter(*this, _fh, true); }
733 
735 { return ConstFaceVertexCCWIter(*this, _fh, true); }
736 
738 { return ConstFaceHalfedgeIter(*this, _fh, true); }
739 
741 { return ConstFaceHalfedgeCWIter(*this, _fh, true); }
742 
744 { return ConstFaceHalfedgeCCWIter(*this, _fh, true); }
745 
747 { return ConstFaceEdgeIter(*this, _fh, true); }
748 
750 { return ConstFaceEdgeCWIter(*this, _fh, true); }
751 
753 { return ConstFaceEdgeCCWIter(*this, _fh, true); }
754 
756 { return ConstFaceFaceIter(*this, _fh, true); }
757 
759 { return ConstFaceFaceCWIter(*this, _fh, true); }
760 
762 { return ConstFaceFaceCCWIter(*this, _fh, true); }
763 
765 { return ConstHalfedgeLoopIter(*this, _heh, true); }
766 
768 { return ConstHalfedgeLoopCWIter(*this, _heh, true); }
769 
771 { return ConstHalfedgeLoopCCWIter(*this, _heh, true); }
772 
773 
774 }//namespace OpenMesh
775 
776 #endif // OPENMESH_POLYCONNECTIVITY_INLINE_IMPL_HH
777 
Iterators::GenericCirculatorT< VertexEdgeTraits, false > VertexEdgeCCWIter
ConstFaceVertexCWIter cfv_cwend(FaceHandle _fh) const
const face - vertex circulator cw
ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const
Handle for a edge entity.
Definition: Handles.hh:134
ConstFaceHalfedgeCWIter cfh_cwbegin(FaceHandle _fh) const
const face - halfedge circulator cw
Handle for a face entity.
Definition: Handles.hh:141
FaceEdgeCCWIter fe_ccwiter(FaceHandle _fh)
face - edge circulator ccw
ConstHalfedgeLoopCCWIter chl_ccwbegin(HalfedgeHandle _heh) const
const halfedge circulator ccw
FaceHalfedgeIter ConstFaceHalfedgeIter
ConstVertexEdgeRange ve_range(VertexHandle _vh) const
VertexVertexCCWIter vv_ccwbegin(VertexHandle _vh)
vertex - vertex circulator ccw
VertexFaceIter vf_begin(VertexHandle _vh)
vertex - face circulator
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > > ConstVertexRangeSkipping
VertexIHalfedgeCWIter vih_cwend(VertexHandle _vh)
vertex - incoming halfedge circulator cw
VertexIter ConstVertexIter
Linear iterator.
ConstVertexVertexCCWIter cvv_ccwiter(VertexHandle _vh) const
const vertex circulator ccw
FaceFaceCCWIter ConstFaceFaceCCWIter
VertexIter vertices_end()
End iterator for vertices.
ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
const vertex circulator
ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
const face - edge circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > > ConstVertexEdgeRange
FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
const face - vertex circulator
HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
halfedge circulator
FaceVertexCWIter fv_cwbegin(FaceHandle _fh)
face - vertex circulator cw
ConstVertexFaceCWIter cvf_cwiter(VertexHandle _vh) const
const vertex - face circulator cw
ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Base class for all smart range types.
Definition: SmartRange.hh:70
Iterators::GenericCirculatorT_DEPRECATED< FaceFaceTraits > FaceFaceIter
Iterators::GenericCirculatorT_DEPRECATED< VertexOppositeHalfedgeTraits > VertexIHalfedgeIter
HalfedgeLoopIter ConstHalfedgeLoopIter
ConstVertexVertexIter cvv_end(VertexHandle _vh) const
const vertex circulator
FaceEdgeCCWIter fe_ccwbegin(FaceHandle _fh)
face - edge circulator ccw
VertexEdgeIter ve_begin(VertexHandle _vh)
vertex - edge circulator
VertexVertexCWIter ConstVertexVertexCWIter
VertexOHalfedgeIter ConstVertexOHalfedgeIter
VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
const PolyConnectivity * mesh() const
Get the underlying mesh of this handle.
Definition: SmartHandles.hh:74
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > > ConstFaceEdgeRange
ConstFaceEdgeCCWIter cfe_ccwend(FaceHandle _fh) const
const face - edge circulator ccw
ConstVertexIHalfedgeCCWIter cvih_ccwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
ConstFaceHalfedgeCCWIter cfh_ccwbegin(FaceHandle _fh) const
const face - halfedge circulator ccw
ConstFaceFaceCCWIter cff_ccwiter(FaceHandle _fh) const
const face - face circulator
HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
face - face circulator
Iterators::GenericCirculatorT_DEPRECATED< FaceEdgeTraits > FaceEdgeIter
ConstVertexOHalfedgeCCWIter cvoh_ccwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Handle for a halfedge entity.
Definition: Handles.hh:127
ConstFaceVertexCCWIter cfv_ccwiter(FaceHandle _fh) const
const face - vertex circulator ccw
ConstHalfedgeLoopCCWIter chl_ccwend(HalfedgeHandle _heh) const
const face - face circulator ccw
VertexFaceCWIter ConstVertexFaceCWIter
FaceEdgeIter fe_begin(FaceHandle _fh)
face - edge circulator
VertexEdgeIter ve_end(VertexHandle _vh)
vertex - edge circulator
Iterators::GenericCirculatorT< VertexFaceTraits, true > VertexFaceCWIter
VertexVertexIter vv_iter(VertexHandle _vh)
vertex - vertex circulator
FaceIter faces_begin()
Begin iterator for faces.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > > ConstFaceFaceRange
FaceVertexIter fv_end(FaceHandle _fh)
face - vertex circulator
ConstFaceVertexCWIter cfv_cwiter(FaceHandle _fh) const
const face - vertex circulator cw
ConstFaceHalfedgeCWIter cfh_cwend(FaceHandle _fh) const
const face - halfedge circulator cw
VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
ConstVertexFaceRange vf_range(VertexHandle _vh) const
FaceHalfedgeIter fh_iter(FaceHandle _fh)
face - halfedge circulator
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > HalfedgeLoopCCWIter
ConstFaceFaceCWIter cff_cwbegin(FaceHandle _fh) const
const face - face circulator cw
HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
VertexVertexIter vv_end(VertexHandle _vh)
vertex - vertex circulator
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRange
ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
FaceHalfedgeCWIter fh_cwend(FaceHandle _fh)
face - halfedge circulator cw
ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
const face - halfedge circulator
VertexFaceIter vf_iter(VertexHandle _vh)
vertex - face circulator
VertexVertexCWIter vv_cwiter(VertexHandle _vh)
vertex - vertex circulator cw
ConstVertexRangeSkipping vertices() const
ConstFaceFaceCWIter cff_cwend(FaceHandle _fh) const
const face - face circulator
FaceIter faces_end()
End iterator for faces.
VertexIHalfedgeIter vih_iter(VertexHandle _vh)
vertex - incoming halfedge circulator
FaceEdgeCWIter fe_cwend(FaceHandle _fh)
face - edge circulator cw
ConstFaceHalfedgeCCWIter cfh_ccwend(FaceHandle _fh) const
const face - halfedge circulator ccw
VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
ConstVertexOHalfedgeCCWIter cvoh_ccwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
VertexIHalfedgeCWIter vih_cwiter(VertexHandle _vh)
vertex - incoming halfedge circulator cw
ConstFaceEdgeCCWIter cfe_ccwbegin(FaceHandle _fh) const
const face - edge circulator ccw
VertexOHalfedgeCCWIter voh_ccwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > > ConstVertexVertexRange
VertexOHalfedgeCCWIter voh_ccwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Handle for a vertex entity.
Definition: Handles.hh:120
VertexOHalfedgeCWIter voh_cwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
const vertex circulator
VertexEdgeCCWIter ConstVertexEdgeCCWIter
ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
const face - edge circulator
VertexVertexCWIter vv_cwend(VertexHandle _vh)
vertex - vertex circulator cw
VertexEdgeCWIter ve_cwbegin(VertexHandle _vh)
vertex - edge circulator cw
FaceHalfedgeCCWIter fh_ccwiter(FaceHandle _fh)
face - halfedge circulator ccw
VertexOHalfedgeIter voh_end(VertexHandle _vh)
vertex - outgoing halfedge circulator
VertexIHalfedgeIter ConstVertexIHalfedgeIter
ConstFaceHalfedgeCCWIter cfh_ccwiter(FaceHandle _fh) const
const face - halfedge circulator ccw
VertexVertexCWIter vv_cwbegin(VertexHandle _vh)
vertex - vertex circulator cw
HalfedgeLoopCWIter hl_cwend(HalfedgeHandle _heh)
face - face circulator cw
Iterators::GenericCirculatorT_DEPRECATED< FaceVertexTraits > FaceVertexIter
Iterators::GenericCirculatorT< FaceFaceTraits, true > FaceFaceCCWIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > > ConstVertexRange
ConstHalfedgeLoopCWIter chl_cwbegin(HalfedgeHandle _heh) const
const halfedge circulator cw
ConstFaceVertexCCWIter cfv_ccwbegin(FaceHandle _fh) const
const face - vertex circulator ccw
EdgeIter edges_end()
End iterator for edges.
VertexOHalfedgeCWIter voh_cwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
FaceFaceIter ff_begin(FaceHandle _fh)
face - face circulator
FaceFaceCCWIter ff_ccwiter(FaceHandle _fh)
face - face circulator ccw
Iterators::GenericCirculatorT< VertexFaceTraits, false > VertexFaceCCWIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > > ConstFaceRange
HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
Linear iterator.
ConstFaceVertexIter cfv_end(FaceHandle _fh) const
const face - vertex circulator
ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const
const vertex circulator cw
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
Linear iterator.
ConstFaceFaceCWIter cff_cwiter(FaceHandle _fh) const
const face - face circulator cw
FaceIter faces_sbegin()
Begin iterator for faces.
VertexEdgeCCWIter ve_ccwend(VertexHandle _vh)
vertex - edge circulator ccw
ConstFaceEdgeCWIter cfe_cwbegin(FaceHandle _fh) const
const face - edge circulator cw
VertexIHalfedgeCCWIter vih_ccwiter(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const
const vertex circulator cw
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > HalfedgeLoopCWIter
ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
const face - halfedge circulator
ConstFaceEdgeCCWIter cfe_ccwiter(FaceHandle _fh) const
const face - edge circulator ccw
Iterators::GenericCirculatorT< VertexEdgeTraits, true > VertexEdgeCWIter
ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
const vertex - face circulator
ConstVertexOHalfedgeCWIter cvoh_cwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
ConstVertexEdgeCCWIter cve_ccwiter(VertexHandle _vh) const
const vertex - edge circulator ccw
ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
const vertex - edge circulator
SmartVertexHandle make_smart(VertexHandle _vh, const PolyConnectivity *_mesh)
Creats a SmartVertexHandle from a VertexHandle and a Mesh.
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > HalfedgeLoopIter
ConstEdgeRangeSkipping edges() const
ConstFaceFaceIter cff_iter(FaceHandle _fh) const
const face - face circulator
VertexVertexIter ConstVertexVertexIter
VertexIHalfedgeIter vih_end(VertexHandle _vh)
vertex - incoming halfedge circulator
FaceEdgeCWIter fe_cwbegin(FaceHandle _fh)
face - edge circulator cw
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > > ConstFaceRangeSkipping
Iterators::GenericCirculatorT< VertexHalfedgeTraits, false > VertexOHalfedgeCCWIter
ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const
ConstVertexEdgeCWIter cve_cwend(VertexHandle _vh) const
const vertex - edge circulator cw
VertexIHalfedgeCCWIter vih_ccwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
VertexEdgeCCWIter ve_ccwbegin(VertexHandle _vh)
vertex - edge circulator ccw
ConstVertexEdgeCWIter cve_cwbegin(VertexHandle _vh) const
const vertex - edge circulator cw
Iterators::GenericCirculatorT_DEPRECATED< VertexVertexTraits > VertexVertexIter
ConstVertexOHalfedgeCWIter cvoh_cwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
FaceFaceCWIter ff_cwend(FaceHandle _fh)
face - face circulator cw
ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
const vertex - face circulator
ConstVertexIHalfedgeCWIter cvih_cwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
ConstVertexFaceCCWIter cvf_ccwend(VertexHandle _vh) const
const vertex - face circulator ccw
ConstVertexOHalfedgeCWIter cvoh_cwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
VertexOHalfedgeCCWIter voh_ccwend(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
ConstVertexFaceCCWIter cvf_ccwiter(VertexHandle _vh) const
const vertex - face circulator ccw
FaceVertexCWIter fv_cwend(FaceHandle _fh)
face - vertex circulator cw
Generic class for iterator ranges.
ConstVertexEdgeIter cve_end(VertexHandle _vh) const
const vertex - edge circulator
VertexVertexCCWIter vv_ccwend(VertexHandle _vh)
vertex - vertex circulator ccw
ConstFaceRangeSkipping faces() const
ConstVertexIHalfedgeCCWIter cvih_ccwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
ConstFaceEdgeCWIter cfe_cwiter(FaceHandle _fh) const
const face - edge circulator cw
ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
const face - halfedge circulator
FaceVertexIter fv_begin(FaceHandle _fh)
face - vertex circulator
ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
const face - face circulator
VertexFaceCWIter vf_cwend(VertexHandle _vh)
vertex - face circulator cw
ConstVertexVertexCWIter cvv_cwiter(VertexHandle _vh) const
const vertex circulator cw
VertexOHalfedgeIter voh_iter(VertexHandle _vh)
vertex - outgoing halfedge circulator
FaceFaceCCWIter ff_ccwend(FaceHandle _fh)
face - face circulator ccw
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
ConstVertexEdgeCWIter cve_cwiter(VertexHandle _vh) const
const vertex - edge circulator cw
ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Iterators::GenericCirculatorT_DEPRECATED< VertexFaceTraits > VertexFaceIter
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
Linear iterator.
VertexIHalfedgeCCWIter vih_ccwend(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
Iterators::GenericCirculatorT< FaceVertexTraits, false > FaceVertexCWIter
ConstVertexFaceCWIter cvf_cwbegin(VertexHandle _vh) const
const vertex - face circulator cw
FaceHalfedgeIter fh_end(FaceHandle _fh)
face - halfedge circulator
Iterators::GenericCirculatorT< FaceEdgeTraits, true > FaceEdgeCCWIter
ConstFaceHalfedgeCWIter cfh_cwiter(FaceHandle _fh) const
const face - halfedge circulator cw
VertexHandle new_vertex()
Add a new vertex.
Definition: ArrayKernel.hh:216
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > > ConstVertexIHalfedgeRange
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > FaceHalfedgeIter
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, true > VertexIHalfedgeCWIter
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > FaceHalfedgeCWIter
FaceEdgeCWIter fe_cwiter(FaceHandle _fh)
face - edge circulator cw
ConstFaceEdgeCWIter cfe_cwend(FaceHandle _fh) const
const face - edge circulator cw
FaceIter ConstFaceIter
Linear iterator.
ConstVertexVertexRange vv_range(VertexHandle _vh) const
Generic class for vertex/halfedge/edge/face ranges.
HalfedgeIter ConstHalfedgeIter
Linear iterator.
FaceHalfedgeCCWIter fh_ccwend(FaceHandle _fh)
face - halfedge circulator ccw
ConstVertexVertexCCWIter cvv_ccwbegin(VertexHandle _vh) const
const vertex circulator ccw
ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
const vertex - edge circulator
FaceEdgeCCWIter fe_ccwend(FaceHandle _fh)
face - edge circulator ccw
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > > ConstEdgeRange
VertexFaceCWIter vf_cwiter(VertexHandle _vh)
vertex - face circulator cw
FaceFaceCWIter ff_cwbegin(FaceHandle _fh)
face - face circulator cw
FaceHalfedgeIter fh_begin(FaceHandle _fh)
face - halfedge circulator
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > FaceHalfedgeCCWIter
ConstFaceFaceCCWIter cff_ccwend(FaceHandle _fh) const
const face - face circulator
VertexIter vertices_begin()
Begin iterator for vertices.
VertexIHalfedgeIter vih_begin(VertexHandle _vh)
vertex - incoming halfedge circulator
ConstFaceVertexCCWIter cfv_ccwend(FaceHandle _fh) const
const face - vertex circulator ccw
VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
VertexFaceCWIter vf_cwbegin(VertexHandle _vh)
vertex - face circulator cw
VertexFaceIter vf_end(VertexHandle _vh)
vertex - face circulator
VertexEdgeCCWIter ve_ccwiter(VertexHandle _vh)
vertex - edge circulator ccw
VertexVertexCCWIter ConstVertexVertexCCWIter
ConstFaceVertexCWIter cfv_cwbegin(FaceHandle _fh) const
const face - vertex circulator cw
Iterators::GenericCirculatorT< FaceVertexTraits, true > FaceVertexCCWIter
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
Definition: SmartHandles.hh:84
Iterators::GenericCirculatorT< VertexHalfedgeTraits, true > VertexOHalfedgeCWIter
ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
const halfedge circulator
VertexVertexIter vv_begin(VertexHandle _vh)
vertex - vertex circulator
FaceEdgeIter fe_end(FaceHandle _fh)
face - edge circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > > ConstVertexFaceRange
FaceVertexCWIter ConstFaceVertexCWIter
EdgeIter ConstEdgeIter
Linear iterator.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > > ConstFaceVertexRange
ConstFaceFaceCCWIter cff_ccwbegin(FaceHandle _fh) const
const face - face circulator ccw
VertexFaceCCWIter vf_ccwiter(VertexHandle _vh)
vertex - face circulator ccw
SmartVertexHandle add_vertex()
Add a new vertex.
Iterators::GenericCirculatorT< FaceEdgeTraits, false > FaceEdgeCWIter
ConstFaceFaceIter cff_begin(FaceHandle _fh) const
const face - face circulator
VertexIter vertices_sbegin()
Begin iterator for vertices.
VertexOHalfedgeIter voh_begin(VertexHandle _vh)
vertex - outgoing halfedge circulator
HalfedgeIter halfedges_end()
End iterator for halfedges.
FaceHalfedgeCWIter fh_cwiter(FaceHandle _fh)
face - halfedge circulator cw
FaceVertexCWIter fv_cwiter(FaceHandle _fh)
face - vertex circulator cw
ConstVertexFaceCWIter cvf_cwend(VertexHandle _vh) const
const vertex - face circulator cw
ConstVertexEdgeCCWIter cve_ccwbegin(VertexHandle _vh) const
const vertex - edge circulator ccw
FaceFaceCCWIter ff_ccwbegin(FaceHandle _fh)
face - face circulator ccw
VertexEdgeCWIter ve_cwiter(VertexHandle _vh)
vertex - edge circulator cw
ConstFaceEdgeRange fe_range(FaceHandle _fh) const
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRangeSkipping
VertexOHalfedgeCWIter voh_cwend(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
FaceEdgeCCWIter ConstFaceEdgeCCWIter
Iterators::GenericCirculatorT_DEPRECATED< VertexEdgeTraits > VertexEdgeIter
FaceHalfedgeCCWIter fh_ccwbegin(FaceHandle _fh)
face - halfedge circulator ccw
ConstVertexFaceIter cvf_end(VertexHandle _vh) const
const vertex - face circulator
ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
const vertex - incoming halfedge circulator
VertexFaceCCWIter vf_ccwend(VertexHandle _vh)
vertex - face circulator ccw
VertexVertexCCWIter vv_ccwiter(VertexHandle _vh)
vertex - vertex circulator ccw
VertexFaceCCWIter vf_ccwbegin(VertexHandle _vh)
vertex - face circulator ccw
VertexEdgeCWIter ve_cwend(VertexHandle _vh)
vertex - edge circulator cw
FaceVertexCCWIter ConstFaceVertexCCWIter
VertexFaceCCWIter ConstVertexFaceCCWIter
ConstFaceFaceRange ff_range(FaceHandle _fh) const
Iterators::GenericCirculatorT< FaceFaceTraits, false > FaceFaceCWIter
HalfedgeLoopCCWIter hl_ccwend(HalfedgeHandle _heh)
face - face circulator ccw
VertexIHalfedgeCWIter vih_cwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator cw
ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
const face - edge circulator
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > > ConstEdgeRangeSkipping
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > > ConstVertexOHalfedgeRange
EdgeIter edges_sbegin()
Begin iterator for edges.
FaceVertexCCWIter fv_ccwend(FaceHandle _fh)
face - vertex circulator ccw
ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, false > VertexIHalfedgeCCWIter
Iterators::GenericCirculatorT_DEPRECATED< VertexHalfedgeTraits > VertexOHalfedgeIter
ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
const face - vertex circulator
EdgeIter edges_begin()
Begin iterator for edges.
Iterators::GenericIteratorT< This, This::VertexHandle, ArrayKernel, &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices > VertexIter
Linear iterator.
ConstHalfedgeRangeSkipping halfedges() const
VertexEdgeIter ve_iter(VertexHandle _vh)
vertex - edge circulator
ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const
ConstFaceFaceIter cff_end(FaceHandle _fh) const
const face - face circulator
HalfedgeLoopCCWIter hl_ccwbegin(HalfedgeHandle _heh)
halfedge circulator ccw
ConstVertexVertexCCWIter cvv_ccwend(VertexHandle _vh) const
const vertex circulator ccw
HalfedgeLoopCWIter hl_cwbegin(HalfedgeHandle _heh)
halfedge circulator
ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
ConstVertexIHalfedgeCWIter cvih_cwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
ConstFaceVertexRange fv_range(FaceHandle _fh) const
FaceFaceIter ff_end(FaceHandle _fh)
face - face circulator
ConstVertexEdgeCCWIter cve_ccwend(VertexHandle _vh) const
const vertex - edge circulator ccw
FaceEdgeIter fe_iter(FaceHandle _fh)
face - edge circulator
ConstHalfedgeLoopCWIter chl_cwend(HalfedgeHandle _heh) const
const face - face circulator cw
ConstVertexFaceCCWIter cvf_ccwbegin(VertexHandle _vh) const
const vertex - face circulator ccw
ConstHalfedgeRange all_halfedges() const
FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
FaceVertexCCWIter fv_ccwiter(FaceHandle _fh)
face - vertex circulator ccw
ConstVertexIHalfedgeCWIter cvih_cwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
FaceFaceCWIter ff_cwiter(FaceHandle _fh)
face - face circulator cw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > > ConstFaceHalfedgeRange
Iterators::GenericCirculatorT< VertexVertexTraits, true > VertexVertexCWIter
Iterators::GenericCirculatorT< VertexVertexTraits, false > VertexVertexCCWIter
FaceVertexIter fv_iter(FaceHandle _fh)
face - vertex circulator
ConstVertexIHalfedgeCCWIter cvih_ccwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
FaceVertexCCWIter fv_ccwbegin(FaceHandle _fh)
face - vertex circulator ccw
FaceHalfedgeCWIter fh_cwbegin(FaceHandle _fh)
face - halfedge circulator cw
VertexEdgeCWIter ConstVertexEdgeCWIter
FaceFaceIter ff_iter(FaceHandle _fh)
face - face circulator
ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
const vertex - incoming halfedge circulator