## HalfedgeDSFace

### Definition

The concept HalfedgeDSFace defines the requirements for the local Face type in the HalfedgeDS concept. It is also required in the Face_wrapper<Refs,Traits> member class template of an items class, see the HalfedgeDSItems concept.

A face optionally stores a reference to an incident halfedge that points to the face. A type tag indicates whether the related member functions are supported. Figure depicts the relationship between a halfedge and its incident halfedges, vertices, and faces.

For the protection of the integrity of the data structure classes such as CGAL::Polyhedron_3 are allowed to redefine the modifying member functions to be private. In order to make them accessible for the halfedge data structure they must be derived from a base class Base where the modifying member functions are still public. (The protection can be bypassed by the user, but not by accident.)

### Types

HalfedgeDSFace::HalfedgeDS
| instantiated HalfedgeDS ( Refs).
HalfedgeDSFace::Base
| base class that allows modifications.
HalfedgeDSFace::Vertex
| model of HalfedgeDSVertex.
HalfedgeDSFace::Halfedge
| model of HalfedgeDSHalfedge.
HalfedgeDSFace::Vertex_handle
| handle to vertex.
HalfedgeDSFace::Halfedge_handle
| handle to halfedge.
HalfedgeDSFace::Face_handle
| handle to face.
HalfedgeDSFace::Vertex_const_handle

HalfedgeDSFace::Halfedge_const_handle

HalfedgeDSFace::Face_const_handle

HalfedgeDSFace::Supports_face_halfedge
| CGAL::Tag_true or CGAL::Tag_false.

### Creation

HalfedgeDSFace f;
| default constructor.

### Operations available if Supports_face_halfedge CGAL::Tag_true

Halfedge_handle | f.halfedge ()
Halfedge_const_handle
| f.halfedge () const
|  | incident halfedge that points to f.
void | f.set_halfedge ( Halfedge_handle h)
|  | sets incident halfedge to h.

### Has Models

CGAL::HalfedgeDS_face_base<Refs>
CGAL::HalfedgeDS_face_min_base<Refs>

### See Also

HalfedgeDS<Traits,Items,Alloc>
HalfedgeDSItems
HalfedgeDSVertex
HalfedgeDSHalfedge