\begin{ccRefClass}{Triangulation_ds_full_cell<TriangulationDataStructure, TDSFullCellStoragePolicy>}

\ccDefinition

The class \ccRefName\ serves as the default full cell template parameter in the
class \ccc{Triangulation_data_structure<Dimensionality, TriangulationDSVertex,
TriangulationDSFullCell>}.

This class does not provide any geometric capabilities but only combinatorial
(adjacency) information. Thus, if the \ccc{Triangulation_data_structure} is
used as a parameter of an (embedded) \ccc{Triangulation}, then its full cell template
parameter has to fulfill additional geometric requirements, i.e. it has to be
a model of the refined concept \ccc{TriangulationFullCell}.

This class can be used directly or can serve as a base to derive other classes
with some additional attributes tuned for a specific application.

\ccInclude{CGAL/Triangulation_ds_full_cell.h}

\ccParameters

The first template parameter, \ccc{TriangulationDataStructure}, must be a model of the
\ccc{TriangulationDataStructure} concept. 
%It defaults to \ccc{void}, which is used to break some dependency cycles.

The second parameter, \ccc{TDSFullCellStoragePolicy}, indicates whether or not
the full cell should additionally store the mirror indices (the indices
 of the mirror vertices). This improves speed a little, but takes
more space:

The class template \ccRefName\ accepts that no second parameter be specified.
It also accepts the tag \ccc{CGAL::Default} as second parameter. Both cases are
equivalent to setting \ccc{TDSFullCellStoragePolicy} to
\ccc{CGAL::TDS_full_cell_default_storage_policy}.

When the second parameter is specified, its possible ``values''
are:\begin{itemize}

\item \ccc{CGAL::Default}, which is the {default} value. In that case, the
policy \ccc{CGAL::TDS_full_cell_default_storage_policy} is used.

\item \ccc{CGAL::TDS_full_cell_default_storage_policy}. In that case, the mirror
indices are {not stored}.

\item \ccc{CGAL::TDS_full_cell_mirror_storage_policy}. In that case, the mirror
indices are stored.
\end{itemize}
See the user manual for how to choose the second option.

\ccIsModel

\ccc{TriangulationDSFullCell}

\ccCreationVariable{c}

\begin{ccDebug}
\ccHeading{Validity check}

The \ccc{is_valid} method is only minimally defined in the
\ccc{TriangulationDSFullCell} concept, so that we document it more precisely
here, for the model \ccRefName:

\ccMethod{bool is_valid(bool verbose=false) const;}{
Implements the validity checks required by the concept
\ccc{TriangulationDSFullCell}. In addition, it is checked that there is no
\ccc{NULL} handle to vertices in the middle of non-\ccc{NULL} ones, that is,
that the internal memory layout is not corrupted.%
}
\end{ccDebug}

\begin{ccAdvanced}
\ccHeading{Rebind mechanism}
In case of derivation from that class, the nested class
\ccc{Rebind_TDS} need to be provided in  the derived class.
\end{ccAdvanced}


\ccSeeAlso

\ccc{Triangulation_ds_vertex<TriangulationDataStructure>}\\
\ccc{Triangulation_data_structure<Dimensionality, TriangulationDSVertex, TriangulationDSFullCell>>}

\end{ccRefClass}
