\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - Halfedge Data Structures

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
HalfedgeDSItems Concept Reference
Concepts

## Definition

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 the manual pages of the concepts `HalfedgeDSVertex`, `HalfedgeDSHalfedge`, and `HalfedgeDSFace` respectively.

Has Models:

  CGAL::HalfedgeDS_min_items

  CGAL::HalfedgeDS_items_2

  CGAL::Polyhedron_items_3

See Also
  `HalfedgeDS<Traits,Items,Alloc>`
  `HalfedgeDSVertex`
  `HalfedgeDSHalfedge`
  `HalfedgeDSFace`
  `PolyhedronItems_3`
  `CGAL::HalfedgeDS_vertex_base<Refs>`
  `CGAL::HalfedgeDS_halfedge_base<Refs>`
  `CGAL::HalfedgeDS_face_base<Refs>`

Example

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 `CGAL::HalfedgeDS_items_2` for an example implementation.

## Types
typedef Vertex_wrapper< Refs, Traits >::Vertex | Vertex
| model of `HalfedgeDSVertex`.
typedef Halfedge_wrapper< Refs, Traits >::Halfedge | Halfedge
| model of `HalfedgeDSHalfedge`.
typedef Face_wrapper< Refs, Traits >::Face | Face
| model of `HalfedgeDSFace`.