## CGAL::HalfedgeDS_items_2

### Definition

The class HalfedgeDS_items_2 is a model of the HalfedgeDSItems concept. It uses the default types for vertices, halfedges, and faces that declare all incidences supported by a HalfedgeDS. The vertex also contains a point of type Traits::Point_2, where Traits is the template argument of the corresponding HalfedgeDS.

#include <CGAL/HalfedgeDS_items_2.h>

### Is Model for the Concept

HalfedgeDSItems

### See Also

CGAL::HalfedgeDS_min_items
CGAL::Polyhedron_items_3
HalfedgeDS<Traits,Items,Alloc>
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 HalfedgeDS_items_2 class. It uses the base classes for the item types that are provided in the library.

    struct HalfedgeDS_items_2 {
        template < class Refs, class Traits>
        struct Vertex_wrapper {
            typedef typename Traits::Point_2 Point;
            typedef CGAL::HalfedgeDS_vertex_base< Refs, Tag_true, Point> Vertex;
        };
        template < class Refs, class Traits>
        struct Halfedge_wrapper {
            typedef CGAL::HalfedgeDS_halfedge_base< Refs> Halfedge;
        };
        template < class Refs, class Traits>
        struct Face_wrapper {
            typedef CGAL::HalfedgeDS_face_base< Refs> Face;
        };
    };

The following example shows a class definition for a new items class derived from the HalfedgeDS_items_2 class. It replaces the Face_wrapper with a new definition of a face that contains a member variable for color. The new face makes use of the face base class provided in the library.

    // A face type with a color member variable.
    template <class Refs>
    struct My_face : public CGAL::HalfedgeDS_face_base<Refs> {
        CGAL::Color color;
        My_face() {}
        My_face( CGAL::Color c) : color(c) {}
    };

    // An items type using my face.
    struct My_items : public CGAL::HalfedgeDS_items_2 {
        template <class Refs, class Traits>
        struct Face_wrapper {
            typedef My_face<Refs> Face;
        };
    };