44#ifndef OPENMESH_POLYCONNECTIVITY_HH
45#define OPENMESH_POLYCONNECTIVITY_HH
47#include <OpenMesh/Core/Mesh/ArrayKernel.hh>
48#include <OpenMesh/Core/Mesh/SmartRange.hh>
55 template <
class Mesh,
class ValueHandle,
class MemberOwner,
bool (MemberOwner::*PrimitiveStatusMember)() const,
size_t (MemberOwner::*PrimitiveCountMember)() const>
56 class GenericIteratorT;
59 class GenericCirculatorBaseT;
61 template<
typename Traits>
62 class GenericCirculatorT_DEPRECATED;
64 template<
typename Traits,
bool CW>
65 class GenericCirculatorT;
68template <
typename RangeTraitT>
74 ITER_T (CONTAINER_T::*begin_fn)()
const,
75 ITER_T (CONTAINER_T::*end_fn)()
const>
78 using CONTAINER_TYPE = CONTAINER_T;
79 using ITER_TYPE = ITER_T;
80 static ITER_TYPE begin(
const CONTAINER_TYPE& _container) {
return (_container.*begin_fn)(); }
81 static ITER_TYPE end(
const CONTAINER_TYPE& _container) {
return (_container.*end_fn)(); }
85template <
typename CirculatorRangeTraitT>
91 typename CENTER_ENTITY_T,
93 ITER_T (CONTAINER_T::*begin_fn)(CENTER_ENTITY_T)
const,
94 ITER_T (CONTAINER_T::*end_fn)(CENTER_ENTITY_T)
const>
97 using CONTAINER_TYPE = CONTAINER_T;
98 using ITER_TYPE = ITER_T;
99 using CENTER_ENTITY_TYPE = CENTER_ENTITY_T;
100 using TO_ENTITYE_TYPE = TO_ENTITY_T;
101 static ITER_TYPE begin(
const CONTAINER_TYPE& _container, CENTER_ENTITY_TYPE _ce) {
return (_container.*begin_fn)(_ce); }
102 static ITER_TYPE begin(
const CONTAINER_TYPE& _container,
HalfedgeHandle _heh,
int) {
return ITER_TYPE(_container, _heh); }
103 static ITER_TYPE end(
const CONTAINER_TYPE& _container, CENTER_ENTITY_TYPE _ce) {
return (_container.*end_fn)(_ce); }
104 static ITER_TYPE end(
const CONTAINER_TYPE& _container,
HalfedgeHandle _heh,
int) {
return ITER_TYPE(_container, _heh,
true); }
557 SmartFaceHandle add_face(
const std::vector<SmartVertexHandle>& _vhandles);
610 void delete_vertex(
VertexHandle _vh,
bool _delete_isolated_vertices =
true);
620 void delete_edge(
EdgeHandle _eh,
bool _delete_isolated_vertices=
true);
632 void delete_face(
FaceHandle _fh,
bool _delete_isolated_vertices=
true);
641 using ArrayKernel::next_halfedge_handle;
642 using ArrayKernel::prev_halfedge_handle;
643 using ArrayKernel::opposite_halfedge_handle;
644 using ArrayKernel::ccw_rotated_halfedge_handle;
645 using ArrayKernel::cw_rotated_halfedge_handle;
653 using ArrayKernel::s_halfedge_handle;
654 using ArrayKernel::s_edge_handle;
659 using ArrayKernel::halfedge_handle;
660 using ArrayKernel::edge_handle;
661 using ArrayKernel::face_handle;
679 VertexIter vertices_begin();
681 ConstVertexIter vertices_begin()
const;
683 VertexIter vertices_end();
685 ConstVertexIter vertices_end()
const;
688 HalfedgeIter halfedges_begin();
690 ConstHalfedgeIter halfedges_begin()
const;
692 HalfedgeIter halfedges_end();
694 ConstHalfedgeIter halfedges_end()
const;
697 EdgeIter edges_begin();
699 ConstEdgeIter edges_begin()
const;
701 EdgeIter edges_end();
703 ConstEdgeIter edges_end()
const;
706 FaceIter faces_begin();
708 ConstFaceIter faces_begin()
const;
710 FaceIter faces_end();
712 ConstFaceIter faces_end()
const;
721 VertexIter vertices_sbegin();
723 ConstVertexIter vertices_sbegin()
const;
726 HalfedgeIter halfedges_sbegin();
728 ConstHalfedgeIter halfedges_sbegin()
const;
731 EdgeIter edges_sbegin();
733 ConstEdgeIter edges_sbegin()
const;
736 FaceIter faces_sbegin();
738 ConstFaceIter faces_sbegin()
const;
782 ConstVertexVertexCWIter cvv_cwiter(
VertexHandle _vh)
const;
784 ConstVertexVertexCCWIter cvv_ccwiter(
VertexHandle _vh)
const;
786 ConstVertexIHalfedgeIter cvih_iter(
VertexHandle _vh)
const;
788 ConstVertexIHalfedgeCWIter cvih_cwiter(
VertexHandle _vh)
const;
790 ConstVertexIHalfedgeCCWIter cvih_ccwiter(
VertexHandle _vh)
const;
792 ConstVertexOHalfedgeIter cvoh_iter(
VertexHandle _vh)
const;
794 ConstVertexOHalfedgeCWIter cvoh_cwiter(
VertexHandle _vh)
const;
796 ConstVertexOHalfedgeCCWIter cvoh_ccwiter(
VertexHandle _vh)
const;
800 ConstVertexEdgeCWIter cve_cwiter(
VertexHandle _vh)
const;
802 ConstVertexEdgeCCWIter cve_ccwiter(
VertexHandle _vh)
const;
806 ConstVertexFaceCWIter cvf_cwiter(
VertexHandle _vh)
const;
808 ConstVertexFaceCCWIter cvf_ccwiter(
VertexHandle _vh)
const;
821 FaceHalfedgeCCWIter fh_ccwiter(
FaceHandle _fh);
836 ConstFaceVertexIter cfv_iter(
FaceHandle _fh)
const;
838 ConstFaceVertexCWIter cfv_cwiter(
FaceHandle _fh)
const;
840 ConstFaceVertexCCWIter cfv_ccwiter(
FaceHandle _fh)
const;
842 ConstFaceHalfedgeIter cfh_iter(
FaceHandle _fh)
const;
844 ConstFaceHalfedgeCWIter cfh_cwiter(
FaceHandle _fh)
const;
846 ConstFaceHalfedgeCCWIter cfh_ccwiter(
FaceHandle _fh)
const;
848 ConstFaceEdgeIter cfe_iter(
FaceHandle _fh)
const;
850 ConstFaceEdgeCWIter cfe_cwiter(
FaceHandle _fh)
const;
852 ConstFaceEdgeCCWIter cfe_ccwiter(
FaceHandle _fh)
const;
854 ConstFaceFaceIter cff_iter(
FaceHandle _fh)
const;
856 ConstFaceFaceCWIter cff_cwiter(
FaceHandle _fh)
const;
858 ConstFaceFaceCCWIter cff_ccwiter(
FaceHandle _fh)
const;
868 ConstEdgeVertexIter cev_iter(
EdgeHandle _eh)
const;
870 ConstEdgeHalfedgeIter ceh_iter(
EdgeHandle _eh)
const;
872 ConstEdgeFaceIter cef_iter(
EdgeHandle _eh)
const;
909 ConstVertexVertexIter cvv_begin(
VertexHandle _vh)
const;
911 ConstVertexVertexCWIter cvv_cwbegin(
VertexHandle _vh)
const;
913 ConstVertexVertexCCWIter cvv_ccwbegin(
VertexHandle _vh)
const;
915 ConstVertexIHalfedgeIter cvih_begin(
VertexHandle _vh)
const;
917 ConstVertexIHalfedgeCWIter cvih_cwbegin(
VertexHandle _vh)
const;
919 ConstVertexIHalfedgeCCWIter cvih_ccwbegin(
VertexHandle _vh)
const;
921 ConstVertexOHalfedgeIter cvoh_begin(
VertexHandle _vh)
const;
923 ConstVertexOHalfedgeCWIter cvoh_cwbegin(
VertexHandle _vh)
const;
925 ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(
VertexHandle _vh)
const;
929 ConstVertexEdgeCWIter cve_cwbegin(
VertexHandle _vh)
const;
931 ConstVertexEdgeCCWIter cve_ccwbegin(
VertexHandle _vh)
const;
935 ConstVertexFaceCWIter cvf_cwbegin(
VertexHandle _vh)
const;
937 ConstVertexFaceCCWIter cvf_ccwbegin(
VertexHandle _vh)
const;
944 FaceVertexCCWIter fv_ccwbegin(
FaceHandle _fh);
948 FaceHalfedgeCWIter fh_cwbegin(
FaceHandle _fh);
950 FaceHalfedgeCCWIter fh_ccwbegin(
FaceHandle _fh);
971 ConstFaceVertexIter cfv_begin(
FaceHandle _fh)
const;
973 ConstFaceVertexCWIter cfv_cwbegin(
FaceHandle _fh)
const;
975 ConstFaceVertexCCWIter cfv_ccwbegin(
FaceHandle _fh)
const;
977 ConstFaceHalfedgeIter cfh_begin(
FaceHandle _fh)
const;
979 ConstFaceHalfedgeCWIter cfh_cwbegin(
FaceHandle _fh)
const;
981 ConstFaceHalfedgeCCWIter cfh_ccwbegin(
FaceHandle _fh)
const;
983 ConstFaceEdgeIter cfe_begin(
FaceHandle _fh)
const;
985 ConstFaceEdgeCWIter cfe_cwbegin(
FaceHandle _fh)
const;
987 ConstFaceEdgeCCWIter cfe_ccwbegin(
FaceHandle _fh)
const;
989 ConstFaceFaceIter cff_begin(
FaceHandle _fh)
const;
991 ConstFaceFaceCWIter cff_cwbegin(
FaceHandle _fh)
const;
993 ConstFaceFaceCCWIter cff_ccwbegin(
FaceHandle _fh)
const;
1009 ConstEdgeVertexIter cev_begin(
EdgeHandle _eh)
const;
1011 ConstEdgeHalfedgeIter ceh_begin(
EdgeHandle _eh)
const;
1013 ConstEdgeFaceIter cef_begin(
EdgeHandle _eh)
const;
1051 ConstVertexVertexCWIter cvv_cwend(
VertexHandle _vh)
const;
1053 ConstVertexVertexCCWIter cvv_ccwend(
VertexHandle _vh)
const;
1055 ConstVertexIHalfedgeIter cvih_end(
VertexHandle _vh)
const;
1057 ConstVertexIHalfedgeCWIter cvih_cwend(
VertexHandle _vh)
const;
1059 ConstVertexIHalfedgeCCWIter cvih_ccwend(
VertexHandle _vh)
const;
1061 ConstVertexOHalfedgeIter cvoh_end(
VertexHandle _vh)
const;
1063 ConstVertexOHalfedgeCWIter cvoh_cwend(
VertexHandle _vh)
const;
1065 ConstVertexOHalfedgeCCWIter cvoh_ccwend(
VertexHandle _vh)
const;
1069 ConstVertexEdgeCWIter cve_cwend(
VertexHandle _vh)
const;
1071 ConstVertexEdgeCCWIter cve_ccwend(
VertexHandle _vh)
const;
1075 ConstVertexFaceCWIter cvf_cwend(
VertexHandle _vh)
const;
1077 ConstVertexFaceCCWIter cvf_ccwend(
VertexHandle _vh)
const;
1090 FaceHalfedgeCCWIter fh_ccwend(
FaceHandle _fh);
1111 ConstFaceVertexIter cfv_end(
FaceHandle _fh)
const;
1113 ConstFaceVertexCWIter cfv_cwend(
FaceHandle _fh)
const;
1115 ConstFaceVertexCCWIter cfv_ccwend(
FaceHandle _fh)
const;
1117 ConstFaceHalfedgeIter cfh_end(
FaceHandle _fh)
const;
1119 ConstFaceHalfedgeCWIter cfh_cwend(
FaceHandle _fh)
const;
1121 ConstFaceHalfedgeCCWIter cfh_ccwend(
FaceHandle _fh)
const;
1123 ConstFaceEdgeIter cfe_end(
FaceHandle _fh)
const;
1125 ConstFaceEdgeCWIter cfe_cwend(
FaceHandle _fh)
const;
1127 ConstFaceEdgeCCWIter cfe_ccwend(
FaceHandle _fh)
const;
1129 ConstFaceFaceIter cff_end(
FaceHandle _fh)
const;
1131 ConstFaceFaceCWIter cff_cwend(
FaceHandle _fh)
const;
1133 ConstFaceFaceCCWIter cff_ccwend(
FaceHandle _fh)
const;
1149 ConstEdgeVertexIter cev_end(
EdgeHandle _eh)
const;
1151 ConstEdgeHalfedgeIter ceh_end(
EdgeHandle _eh)
const;
1153 ConstEdgeFaceIter cef_end(
EdgeHandle _eh)
const;
1202 template <
typename HandleType>
1257 template <
typename HandleType>
1264 template <
typename HandleType>
1581 return (is_boundary(halfedge_handle(_eh, 0)) ||
1582 is_boundary(halfedge_handle(_eh, 1)));
1599 return (!(heh.is_valid() && face_handle(heh).is_valid()));
1611 bool is_boundary(
FaceHandle _fh,
bool _check_vertex=
false)
const;
1667 bool is_simply_connected(
FaceHandle _fh)
const;
1836#define OPENMESH_POLYCONNECTIVITY_INTERFACE_INCLUDE
1837#include <OpenMesh/Core/Mesh/SmartHandles.hh>
1838#include <OpenMesh/Core/Mesh/PolyConnectivity_inline_impl.hh>
1839#undef OPENMESH_POLYCONNECTIVITY_INTERFACE_INCLUDE
bool is_boundary(HalfedgeHandle _heh) const
Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
void assign_connectivity(const ArrayKernel &_other)
Generic class for iterator ranges.
Generic class for vertex/halfedge/edge/face ranges.
Connectivity Class for polygonal meshes.
const Halfedge & deref(HalfedgeHandle _h) const
Get item from handle.
VertexVertexCWIter VVCWIter
Alias typedef.
ConstVertexVertexIter CVVIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_begin, &PolyConnectivity::cvv_end > > ConstVertexVertexRange
EdgeIter edges_end()
End iterator for edges.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > > ConstFaceVertexRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeCWIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_cwbegin, &PolyConnectivity::cfh_cwend > > ConstFaceHalfedgeCWRange
EdgeIter ConstEdgeIter
Linear iterator.
EdgeIter EIter
Alias typedef.
VertexVertexIter VVIter
Alias typedef.
Iterators::GenericCirculatorT< VertexEdgeTraits, false > VertexEdgeCCWIter
VertexVertexCCWIter VVCCWIter
Alias typedef.
ConstVertexIHalfedgeCCWIter CVIHCCWIter
Alias typedef.
HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceCWIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_cwbegin, &PolyConnectivity::cff_cwend > > ConstFaceFaceCWRange
Edge & deref(EdgeHandle _h)
Get item from handle.
HalfedgeIter halfedges_end()
End iterator for halfedges.
ConstFaceHalfedgeCCWIter CFHCCWIter
Alias typedef.
VertexHandle VHandle
Alias typedef.
ConstFaceVertexCCWIter CFVCCWIter
Alias typedef.
PolyConnectivity This
Invalid handle.
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
Linear iterator.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeCCWIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_ccwbegin, &PolyConnectivity::cfh_ccwend > > ConstFaceHalfedgeCCWRange
ConstVertexFaceCCWIter CVFCCWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_ccwbegin, &PolyConnectivity::cvv_ccwend > > ConstVertexVertexCCWRange
VertexIHalfedgeIter ConstVertexIHalfedgeIter
VertexFaceCCWIter VFCCWIter
Alias typedef.
FaceFaceIter ConstFaceFaceIter
FaceEdgeCWIter FECWIter
Alias typedef.
Iterators::GenericCirculatorT< VertexVertexTraits, false > VertexVertexCCWIter
VertexIter vertices_sbegin()
Begin iterator for vertices.
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
FaceVertexCCWIter FVCCWIter
Alias typedef.
ConstVertexIter CVIter
Alias typedef.
ConstHalfedgeIter CHIter
Alias typedef.
Iterators::GenericCirculatorT< FaceVertexTraits, false > FaceVertexCWIter
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
static const HalfedgeHandle InvalidHalfedgeHandle
Invalid handle.
SmartHalfedgeHandle opposite_halfedge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
FaceFaceCWIter ConstFaceFaceCWIter
FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
EdgeIter edges_sbegin()
Begin iterator for edges.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > > ConstVertexVertexCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeCCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_ccwbegin, &PolyConnectivity::cvoh_ccwend > > ConstVertexOHalfedgeCCWRange
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > > ConstEdgeRangeSkipping
EdgeIter edges_begin()
Begin iterator for edges.
ConstFaceEdgeCCWIter CFECCWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopCCWIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_ccwbegin, &PolyConnectivity::chl_ccwend > > ConstHalfedgeLoopCCWRange
ConstEdgeIter CEIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexCWIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_cwbegin, &PolyConnectivity::cfv_cwend > > ConstFaceVertexCWRange
ElementRange< HandleType >::Range all_elements() const
ConstFaceVertexIter CFVIter
Alias typedef.
VertexVertexCCWIter ConstVertexVertexCCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > > ConstVertexIHalfedgeRange
ConstVertexOHalfedgeIter CVOHIter
Alias typedef.
Iterators::GenericIteratorT< This, This::VertexHandle, ArrayKernel, &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices > VertexIter
Linear iterator.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > > ConstFaceRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceCCWIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_ccwbegin, &PolyConnectivity::cff_ccwend > > ConstFaceFaceCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_cwbegin, &PolyConnectivity::cvih_cwend > > ConstVertexIHalfedgeCWRange
Iterators::GenericCirculatorT_DEPRECATED< VertexOppositeHalfedgeTraits > VertexIHalfedgeIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > > ConstVertexRange
FaceFaceCCWIter ConstFaceFaceCCWIter
ConstFaceEdgeIter CFEIter
Alias typedef.
PolyConnectivity()
Alias typedef.
VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
FaceEdgeCWIter ConstFaceEdgeCWIter
ConstVertexIHalfedgeCWIter CVIHCWIter
Alias typedef.
ConstFaceHalfedgeIter CFHIter
Alias typedef.
ConstFaceVertexCWIter CFVCWIter
Alias typedef.
VertexFaceIter VFIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< VertexVertexTraits > VertexVertexIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_cwbegin, &PolyConnectivity::cvoh_cwend > > ConstVertexOHalfedgeCWRange
HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
ConstVertexOHalfedgeCCWIter CVOHCCWIter
Alias typedef.
HalfedgeIter HIter
Alias typedef.
VertexEdgeIter ConstVertexEdgeIter
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > FaceHalfedgeIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > > ConstFaceEdgeRange
Iterators::GenericCirculatorT_DEPRECATED< VertexHalfedgeTraits > VertexOHalfedgeIter
HalfedgeLoopIter ConstHalfedgeLoopIter
HalfedgeHandle HHandle
Alias typedef.
static bool is_triangles()
Alias typedef.
ConstFaceFaceCWIter CFFCWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_begin, &PolyConnectivity::chl_end > > ConstHalfedgeLoopRange
VertexIHalfedgeIter VIHIter
Alias typedef.
EdgeVertexIter ConstEdgeVertexIter
VertexFaceIter ConstVertexFaceIter
VertexIter VIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeCWIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_cwbegin, &PolyConnectivity::cve_cwend > > ConstVertexEdgeCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeCCWIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_ccwbegin, &PolyConnectivity::cve_ccwend > > ConstVertexEdgeCCWRange
VertexIter ConstVertexIter
Linear iterator.
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
Linear iterator.
Iterators::GenericCirculatorT_DEPRECATED< VertexEdgeTraits > VertexEdgeIter
FaceVertexIter ConstFaceVertexIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeCWIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_cwbegin, &PolyConnectivity::cfe_cwend > > ConstFaceEdgeCWRange
VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
ConstVertexEdgeCWIter CVECWIter
Alias typedef.
VertexFaceCWIter ConstVertexFaceCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > > ConstVertexEdgeRange
ConstEdgeVertexIter CEVIter
Alias typedef.
EdgeFaceIter ConstEdgeFaceIter
FaceEdgeCCWIter FECWWIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< EdgeHalfedgeTraits > EdgeHalfedgeIter
FaceHalfedgeIter FHIter
Alias typedef.
EdgeHalfedgeIter EHIter
Alias typedef.
ElementRange< HandleType >::RangeSkipping elements() const
bool is_boundary(EdgeHandle _eh) const
Is the edge a boundary edge?
const Edge & deref(EdgeHandle _h) const
Get item from handle.
FaceIter faces_sbegin()
Begin iterator for faces.
virtual ~PolyConnectivity()
Alias typedef.
Iterators::GenericCirculatorT< VertexHalfedgeTraits, false > VertexOHalfedgeCCWIter
Iterators::GenericCirculatorT_DEPRECATED< VertexFaceTraits > VertexFaceIter
VertexEdgeCWIter VECWIter
Alias typedef.
static const FaceHandle InvalidFaceHandle
Invalid handle.
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
Linear iterator.
ConstVertexEdgeCCWIter CVECCWIter
Alias typedef.
EdgeHalfedgeIter ConstEdgeHalfedgeIter
EdgeVertexIter EVIter
Alias typedef.
ConstVertexVertexCCWIter CVVCCWIter
Alias typedef.
FaceHalfedgeCCWIter FHCWWIter
Alias typedef.
bool is_boundary(VertexHandle _vh) const
Is vertex _vh a boundary vertex ?
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > HalfedgeLoopCCWIter
Iterators::GenericCirculatorT< FaceFaceTraits, true > FaceFaceCCWIter
FaceEdgeCCWIter ConstFaceEdgeCCWIter
ConstVertexVertexCWIter CVVCWIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > HalfedgeLoopIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > > ConstEdgeRange
ConstEdgeFaceIter CEFIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeCCWIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_ccwbegin, &PolyConnectivity::cfe_ccwend > > ConstFaceEdgeCCWRange
VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRangeSkipping
std::vector< std::pair< HalfedgeHandle, HalfedgeHandle > > next_cache_
Get item from handle.
ConstVertexOHalfedgeCWIter CVOHCWIter
Alias typedef.
FaceHalfedgeIter ConstFaceHalfedgeIter
VertexOHalfedgeCWIter VOHCWIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< FaceVertexTraits > FaceVertexIter
FaceVertexCWIter FVCWIter
Alias typedef.
Face & deref(FaceHandle _h)
Get item from handle.
EdgeFaceIter EFIter
Alias typedef.
static const VertexHandle InvalidVertexHandle
Invalid handle.
VertexIter vertices_begin()
Begin iterator for vertices.
ConstFaceIter CFIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceCWIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_cwbegin, &PolyConnectivity::cvf_cwend > > ConstVertexFaceCWRange
Iterators::GenericCirculatorT< VertexFaceTraits, true > VertexFaceCWIter
HalfedgeIter ConstHalfedgeIter
Linear iterator.
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, false > VertexIHalfedgeCCWIter
FaceVertexCCWIter ConstFaceVertexCCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > > ConstVertexOHalfedgeRange
static const EdgeHandle InvalidEdgeHandle
Invalid handle.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstEdgeHalfedgeIter, EdgeHandle, HalfedgeHandle, &PolyConnectivity::ceh_begin, &PolyConnectivity::ceh_end > > ConstEdgeHalfedgeRange
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > > ConstVertexRangeSkipping
Halfedge & deref(HalfedgeHandle _h)
Get item from handle.
Iterators::GenericCirculatorT< VertexEdgeTraits, true > VertexEdgeCWIter
FaceEdgeIter FEIter
Alias typedef.
FaceEdgeIter ConstFaceEdgeIter
ConstVertexEdgeIter CVEIter
Alias typedef.
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > FaceHalfedgeCCWIter
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, true > VertexIHalfedgeCWIter
FaceIter faces_end()
End iterator for faces.
void assign_connectivity(const PolyConnectivity &_other)
VertexOHalfedgeCCWIter VOHCCWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > > ConstVertexFaceRange
EdgeHandle EHandle
Alias typedef.
FaceHandle FHandle
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeCCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_ccwbegin, &PolyConnectivity::cvih_ccwend > > ConstVertexIHalfedgeCCWRange
Iterators::GenericCirculatorT< FaceVertexTraits, true > FaceVertexCCWIter
ConstFaceEdgeCWIter CFECWIter
Alias typedef.
ConstFaceFaceIter CFFIter
Alias typedef.
VertexFaceCCWIter ConstVertexFaceCCWIter
ConstEdgeHalfedgeIter CEHIter
Alias typedef.
VertexOHalfedgeIter ConstVertexOHalfedgeIter
VertexIHalfedgeCWIter VIHICWter
Alias typedef.
VertexEdgeIter VEIter
Alias typedef.
FaceIter ConstFaceIter
Linear iterator.
VertexOHalfedgeIter VOHIter
Alias typedef.
VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
VertexEdgeCWIter ConstVertexEdgeCWIter
Iterators::GenericCirculatorT< VertexVertexTraits, true > VertexVertexCWIter
ConstVertexFaceCWIter CVFCWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstEdgeFaceIter, EdgeHandle, FaceHandle, &PolyConnectivity::cef_begin, &PolyConnectivity::cef_end > > ConstEdgeFaceRange
bool is_boundary(HalfedgeHandle _heh) const
Check if the halfedge is at the boundary.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRange
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > FaceHalfedgeCWIter
VertexVertexCWIter ConstVertexVertexCWIter
VertexEdgeCCWIter ConstVertexEdgeCCWIter
VertexVertexIter ConstVertexVertexIter
VertexFaceCWIter VFCWIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< FaceFaceTraits > FaceFaceIter
FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > > ConstFaceHalfedgeRange
Iterators::GenericCirculatorT_DEPRECATED< EdgeFaceTraits > EdgeFaceIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstEdgeVertexIter, EdgeHandle, VertexHandle, &PolyConnectivity::cev_begin, &PolyConnectivity::cev_end > > ConstEdgeVertexRange
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > HalfedgeLoopCWIter
const Vertex & deref(VertexHandle _h) const
Get item from handle.
Iterators::GenericCirculatorT< FaceFaceTraits, false > FaceFaceCWIter
Iterators::GenericCirculatorT_DEPRECATED< FaceEdgeTraits > FaceEdgeIter
VertexIter vertices_end()
End iterator for vertices.
Iterators::GenericCirculatorT< FaceEdgeTraits, false > FaceEdgeCWIter
Vertex & deref(VertexHandle _h)
Get item from handle.
Iterators::GenericCirculatorT_DEPRECATED< EdgeVertexTraits > EdgeVertexIter
Iterators::GenericCirculatorT< VertexFaceTraits, false > VertexFaceCCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > > ConstFaceFaceRange
ConstFaceHalfedgeCWIter CFHCWIter
Alias typedef.
const Face & deref(FaceHandle _h) const
Get item from handle.
FaceIter faces_begin()
Begin iterator for faces.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopCWIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_cwbegin, &PolyConnectivity::chl_cwend > > ConstHalfedgeLoopCWRange
FaceVertexIter FVIter
Alias typedef.
FaceFaceIter FFIter
Alias typedef.
FaceHalfedgeCWIter FHCWIter
Alias typedef.
Iterators::GenericCirculatorT< FaceEdgeTraits, true > FaceEdgeCCWIter
ConstFaceFaceCCWIter CFFCCWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceCCWIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_ccwbegin, &PolyConnectivity::cvf_ccwend > > ConstVertexFaceCCWRange
VertexIHalfedgeCCWIter VIHICCWter
Alias typedef.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > > ConstFaceRangeSkipping
ConstVertexIHalfedgeIter CVIHIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexCCWIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_ccwbegin, &PolyConnectivity::cfv_ccwend > > ConstFaceVertexCCWRange
VertexEdgeCCWIter VECCWIter
Alias typedef.
FaceVertexCWIter ConstFaceVertexCWIter
FaceIter FIter
Alias typedef.
std::vector< AddFaceEdgeInfo > edgeData_
Get item from handle.
Iterators::GenericCirculatorT< VertexHalfedgeTraits, true > VertexOHalfedgeCWIter
ConstVertexFaceIter CVFIter
Alias typedef.
Handle for a edge entity.
Handle for a face entity.
Handle for a halfedge entity.
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
Handle for a vertex entity.