% +------------------------------------------------------------------------+
% | Reference manual page: HalfedgeDS_vertex_base.tex
% +------------------------------------------------------------------------+
% | 22.03.1999   Lutz Kettner
% | Package: HalfedgeDS
% | 
\RCSdef{\RCSHalfedgeDSvertexbaseRev}{$Id$}
\RCSdefDate{\RCSHalfedgeDSvertexbaseDate}{$Date$}
% +------------------------------------------------------------------------+

\ccRefPageBegin

%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+


\begin{ccRefClass}{HalfedgeDS_vertex_base<Refs>}

\ccDefinition
  
The class \ccRefName\ is a model of the \ccc{HalfedgeDSVertex}
concept. \ccc{Refs} is an instantiation of a \ccc{HalfedgeDS}.  The
template declaration of \ccRefName\ has three parameters with some
defaults that allow to select various flavors of vertices. The
declaration is best explained with the two following declarations,
essentially hiding an implementation dependent default setting:

~~~~~~\ccc{template <class Refs, class T = CGAL::Tag_true>}\\
\mbox{}~~~~~~\ccc{class HalfedgeDS_vertex_base;}

~~~~~~\ccc{template <class Refs, class T, class Point>}\\
\mbox{}~~~~~~\ccc{class HalfedgeDS_vertex_base;}

\ccRefName\ defines a vertex including a reference to an incident halfedge.

\ccc{CGAL::HalfedgeDS_vertex_base<Refs,CGAL::Tag_false>} is a vertex
without a reference to an incident halfedge. It is empty besides the
required type definitions. It can be used for deriving own vertex
implementations. See also \ccc{CGAL::HalfedgeDS_vertex_min_base<Refs>}.

\ccc{CGAL::HalfedgeDS_vertex_base<Refs,CGAL::Tag_true,Point>} is a vertex
with a reference to an incident halfedge and it stores a point of type
\ccc{Point}.  It can be used as a vertex for a model of the
\ccc{PolyhedronItems_3} concept.

\ccc{CGAL::HalfedgeDS_vertex_base<Refs,CGAL::Tag_false,Point>} is a vertex
without a reference to an incident halfedge and it stores a point of
type \ccc{Point}.  It can be used as a vertex for a model of the
\ccc{PolyhedronItems_3} concept.

\ccInclude{CGAL/HalfedgeDS_vertex_base.h}

\ccIsModel

\ccRefConceptPage{HalfedgeDSVertex}

\ccTypes
\ccThree{const Point&;;}{point() const;MMMMMMMMMMMM}{}
\ccThreeToTwo

\ccNestedType{Point}{point type for three argument version.}

\ccCreation
\ccCreationVariable{v}

\ccConstructor{HalfedgeDS_vertex_base();}{default constructor.}
\ccGlue
\ccConstructor{HalfedgeDS_vertex_base( const Point& p);}
    {initialized with point $p$.}

\ccOperations

\ccTagFullDeclarations
\ccMethod{Point&                point();}{}
\ccGlue
\ccMethod{const Point&          point() const;}{}
\ccTagDefaults

\ccSeeAlso

\ccRefConceptPage{HalfedgeDS<Traits,Items,Alloc>}\\
\ccRefConceptPage{HalfedgeDSItems}\\
\ccRefConceptPage{PolyhedronItems_3}\\
\ccRefIdfierPage{CGAL::HalfedgeDS_items_2}\\
\ccRefIdfierPage{CGAL::HalfedgeDS_halfedge_base<Refs>}\\
\ccRefIdfierPage{CGAL::HalfedgeDS_face_base<Refs>}\\
\ccRefIdfierPage{CGAL::HalfedgeDS_vertex_min_base<Refs>}

\end{ccRefClass} %
