\begin{ccRefClass}{Triangulation_data_structure<Dimensionality, TriangulationDSVertex, TriangulationDSFullCell>}

\ccDefinition 
This class is used for storing the combinatorial information of a triangulation
of dimension $k\leq d$.

\ccInclude{CGAL/Triangulation_data_structure.h}

\ccParameters

\ccc{Dimensionality} can be either \begin{itemize}

\item \ccPureGlobalScope\ccc{Dimension_tag<d>} for some integer \ccc{d}. This
indicates that the triangulation data structure can store simplices (full cells) of dimension at most
\ccc{d}. The maximum dimension \ccc{d} is known by the compiler, which
triggers some optimizations. Or

\item \ccPureGlobalScope\ccc{Dynamic_dimension_tag}. In this case, the maximum
dimension of the simplices (full cells) is passed as an integer argument to an instance
constructor (see \ccc{TriangulationDataStructure}).\end{itemize}

\ccc{TriangulationDSVertex} is the class to be used as the base \ccc{Vertex} type in the
triangulation data structure. It must be a model of the concept
\ccc{TriangulationDSVertex}. The class template \ccRefName\ can be
defined by specifying 
 only the first parameter. It also accepts the tag \ccc{CGAL::Default} as
second parameter. In both cases, \ccc{TriangulationDSVertex} defaults to
\ccc{CGAL::Triangulation_ds_vertex<>}.


\ccc{TriangulationDSFullCell} is the class to be used as the base \ccc{Full_cell} type in
the triangulation data structure. It must be a model of the concept
\ccc{TriangulationDSFullCell}. 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{TriangulationDSFullCell} defaults to
\ccc{CGAL::Triangulation_ds_full_cell<>}.

\ccIsModel

\ccc{TriangulationDataStructure}.

In addition, the class \ccRefName\ provides the following types and methods:

\ccCreation
\ccCreationVariable{t}

\ccConstructor{XXXXXXX(const Triangulation_data_structure & t2);}
{The copy constructor. Creates a copy of the \ccRefName\ \ccc{t2} passed as
    argument. All vertices and full cells are duplicated.}

\begin{ccDebug}
\ccHeading{Validity check} % - - - - - - - - - - - - - - - - - - - - VALIDITY

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

\ccMethod{bool is_valid(bool verbose = true) const;}{%
Implements the validity checks required by the concept
\ccc{TriangulationDataStructure}.%

Note that passing all these tests does not guaranty that we have a
triangulation (abstract pure simplicial complex).%
}

\end{ccDebug}

\begin{ccAdvanced}

\ccTypes

\ccNestedType{Full_cell_data}
{A data member of type \ccc{Full_cell_data} is stored in every full cell (models
of the concept \ccc{TriangulationDSFullCell}).  It is used to mark
some 
full cells, during modifications of the triangulation data structure.}

\ccHeading{Vertex insertion} % - - - - - - - - - - - - - - - - - - INSERTIONS

\ccMethod{template< OutputIterator > Full_cell_handle insert_in_tagged_hole(
        Vertex_handle v, Facet f, OutputIterator new_full_cells);}
{A set \ccc{C} of full cells satisfying the same condition as in method
\ccRefName\ccc{::insert_in_hole()} is assumed to be marked. This
method creates new full cells from vertex \ccc{v} to the boundary of \ccc{C}.
The boundary is recognized by checking the mark of the full cells.
This method is used by \ccRefName\ccc{::insert_in_hole()}.
\ccPrecond same as \ccRefName\ccc{::insert_in_hole()} 
}

\end{ccAdvanced}

\ccSeeAlso

\ccc{Triangulation_ds_vertex}\\
\ccc{Triangulation_ds_full_cell}\\
\ccc{Triangulation}

\end{ccRefClass}
