The concept HalfedgeDSItems wraps the three item types - vertex, halfedge, and face - for a halfedge data structure. A HalfedgeDSItems contains three member class templates named Vertex_wrapper, Halfedge_wrapper, and Face_wrapper, each with two template parameters, Refs and Traits. Refs requires an instantiated halfedge data structure HalfedgeDS as argument, Traits is a geometric traits class supplied by the class that uses the halfedge data structure as internal representation. Traits is not used by the halfedge data structure itself. These three member class templates provide a local type named Vertex, Halfedge, and Face respectively. The requirements on these types are described on page \icon, page \icon, and page \icon respectively.
| |
model of HalfedgeDSVertex.
| |
| |
model of HalfedgeDSHalfedge.
| |
| |
model of HalfedgeDSFace.
|
CGAL::HalfedgeDS_min_items
CGAL::HalfedgeDS_items_2
CGAL::Polyhedron_items_3
HalfedgeDS<Traits,Items,Alloc>
HalfedgeDSVertex
HalfedgeDSHalfedge
HalfedgeDSFace
PolyhedronItems_3
CGAL::HalfedgeDS_vertex_base<Refs>
CGAL::HalfedgeDS_halfedge_base<Refs>
CGAL::HalfedgeDS_face_base<Refs>
The following example shows the canonical implementation of the CGAL::HalfedgeDS_min_items class. It uses the base classes for the item types that are provided in the library.
struct HalfedgeDS_min_items { template < class Refs, class Traits> struct Vertex_wrapper { typedef CGAL::HalfedgeDS_vertex_min_base< Refs> Vertex; }; template < class Refs, class Traits> struct Halfedge_wrapper { typedef CGAL::HalfedgeDS_halfedge_min_base< Refs> Halfedge; }; template < class Refs, class Traits> struct Face_wrapper { typedef CGAL::HalfedgeDS_face_min_base< Refs> Face; }; };
See page \icon for an example implementation of the CGAL::HalfedgeDS_items_2 class.