\begin{ccRefClass}{Triangulation_vertex<TriangulationTraits, Data, TriangulationDSVertex>}

\ccDefinition

The class \ccRefName\ is a model of the concept \ccc{TriangulationVertex}. It is
used by default for representing vertices in the class
\ccc{Triangulation<TriangulationTraits, TriangulationDataStructure>}.

A \ccRefName\ stores a point and an incident full cell.

\ccInclude{CGAL/Triangulation_vertex.h}

\ccParameters

\ccc{TriangulationTraits} must be a model of the concept \ccc{TriangulationTraits}. It
provides geometric types and predicates for use in the
\ccc{Triangulation<TriangulationTraits, TriangulationDataStructure>} class. It is of interest here for its
declaration of the \ccc{Point} type.

\ccc{Data} is an optional type of data to be stored in the vertex class. The
class template \ccRefName\ accepts that no second parameter be specified. In
this case, \ccc{Data} defaults to \ccc{CGAL::No_vertex_data}.
\ccc{CGAL::No_vertex_data} can be explicitely specified to allow to access the
third parameter.

Parameter 
\ccc{TriangulationDSVertex} must be a model of the concept \ccc{TriangulationDSVertex}. The
class template \ccRefName\ accepts that no third parameter be specified. It
also accepts the tag \ccc{CGAL::Default} as third parameter. In both cases,
\ccc{TriangulationDSVertex} defaults to \ccc{CGAL::Triangulation_ds_vertex<>}.

\ccInheritsFrom

\ccc{TriangulationDSVertex} (the third template parameter)

\ccIsModel

\ccc{TriangulationVertex}

Additionally, the class \ccRefName\ also provides the following type,
constructors and methods:

\ccTypes

\ccTypedef{typedef Data Data;}{The type of the additional data stored in the
vertex. If you read a \ccRefName\ from a stream (a file) or write a \ccRefName
to a stream, then streaming operators \ccc{<<} and \ccc{>>} must be provided for this
type.}

\ccCreation
\ccCreationVariable{v}

\ccConstructor{template< typename T>
  Triangulation_vertex(Full_cell_handle c,
const Point & p, const T & t);}{Constructs a vertex with incident full cell
\ccc{c}. The vertex is embedded at point \ccc{p} and the parameter \ccc{t} is
passed to the \ccc{Data} constructor.}

\ccGlue\ccConstructor{template< typename T> Triangulation_vertex(const Point
& p, const T & t);}{Same as above, but without incident full cell.}

\ccGlue\ccConstructor{Triangulation_vertex();}%
{Same as above, but with default-constructed \ccc{Point} and \ccc{Data}.}

\ccHeading{Data access}

\ccMethod{const Data & data() const;}{Returns a const reference to the stored data.}
\ccGlue\ccMethod{Data & data();}{Returns a non-const reference to the stored data.}
 
\ccHeading{Input/Output}

\ccFunction{istream & operator>>(istream & is, Triangulation_vertex & v);}%
{Inputs the non-combinatorial information given by the vertex, {i.e.},
the point and other possible information. The data of type \ccc{Data} is
{also} read.}

\ccFunction{ostream & operator<<(ostream & os, const Triangulation_vertex & v);}%
{Outputs the non-combinatorial information given by the vertex, {i.e.},
the point and other possible information. The data of type \ccc{Data} is
{also} written.}

\ccSeeAlso

\ccc{Triangulation_full_cell<TriangulationTraits, Data, TriangulationDSFullCell>}\\
\ccc{Triangulation_data_structure<Dimensionality, TriangulationDSVertex, TriangulationDSFullCell>}\\
\ccc{Triangulation<TriangulationTraits,TriangulationDataStructure>}\\
\ccc{Delaunay_triangulation<DelaunayTriangulationTraits, TriangulationDataStructure>}

\end{ccRefClass}
