Update the doc to deprecate all global operations.

This commit is contained in:
Guillaume Damiand 2016-03-10 16:37:00 +01:00
parent 37e95ca593
commit 2367827151
3 changed files with 230 additions and 197 deletions

View File

@ -3,15 +3,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsConstructions
Creates a combinatorial hexahedron (six combinatorial quadrangles linked
together by \f$ \beta_2\f$), and adds it in `cm`.
Returns a handle on one dart of this combinatorial hexahedron.
\pre `CMap::dimension` \f$\geq\f$ 2.
\sa `CGAL::make_edge<CMap>`
\sa `CGAL::make_combinatorial_polygon<CMap>`
\sa `CGAL::make_combinatorial_tetrahedron<CMap>`
\deprecated Creates a combinatorial hexahedron. Deprecated. Use `cm.make_combinatorial_hexahedron()` instead.
*/
template < class CMap >
typename CMap::Dart_handle make_combinatorial_hexahedron(CMap& cm);
@ -23,15 +15,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsConstructions
Creates a combinatorial polygon of length `lg` (`lg` darts
linked by \f$ \beta_1\f$), and adds it in `cm`.
Returns a handle on one dart of this combinatorial polygon.
\pre `CMap::dimension`\f$ \geq\f$ 1 and `lg`\f$ >\f$ 0.
\sa `CGAL::make_edge<CMap>`
\sa `CGAL::make_combinatorial_tetrahedron<CMap>`
\sa `CGAL::make_combinatorial_hexahedron<CMap>`
\deprecated Creates a combinatorial polygon of length `lg`. Deprecated. Use `cm.make_combinatorial_polygon()` instead.
*/
template < class CMap > typename CMap::Dart_handle
make_combinatorial_polygon(CMap& cm, unsigned int lg);
@ -43,14 +27,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsConstructions
Creates a combinatorial tetrahedron (four combinatorial triangles linked
together by \f$ \beta_2\f$), and adds it in `cm`.
Returns a handle on one dart of this combinatorial tetrahedron.
\pre `CMap::dimension`\f$ \geq\f$ 2.
\sa `CGAL::make_edge<CMap>`
\sa `CGAL::make_combinatorial_polygon<CMap>`
\sa `CGAL::make_combinatorial_hexahedron<CMap>`
\deprecated Creates a combinatorial tetrahedron. Deprecated. Use `cm.make_combinatorial_tetrahedron()` instead.
*/
template < class CMap >
typename CMap::Dart_handle make_combinatorial_tetrahedron(CMap& cm);
@ -62,13 +39,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsConstructions
Creates an isolated edge (two darts linked by \f$ \beta_2\f$) and adds it in `cm`.
Returns a handle on one dart of this edge.
\pre `CMap::dimension`\f$ \geq\f$ 2.
\sa `CGAL::make_combinatorial_polygon<CMap>`
\sa `CGAL::make_combinatorial_tetrahedron<CMap>`
\sa `CGAL::make_combinatorial_hexahedron<CMap>`
\deprecated Creates an isolated edge. Deprecated. Use `cm.make_edge()` instead.
*/
template < class CMap >
typename CMap::Dart_handle make_edge(CMap& cm);

View File

@ -3,28 +3,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Inserts a 0-cell in the 1-cell containing `dh`.
Returns a handle on one dart belonging to the new 0-cell.
\pre \ref CombinatorialMap::dimension "CMap::dimension"\f$ \geq\f$ 1 and
`*dh`\f$ \in\f$\ref CombinatorialMap::darts "cm.darts()".
See example in \cgalFigureRef{figinsertvertex}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`,
if 1-attributes are non `void`,
\ref CellAttribute::On_split "Attribute_type<1>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 1-attribute associated with <I>dh</I> and <I>a'</I> the new 1-attribute created during the operation. If set, the dynamic onsplit function of 1-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are
not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `CGAL::insert_cell_0_in_cell_2<CMap>`
\sa `CGAL::insert_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_dangling_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>`
\sa `CGAL::remove_cell<CMap,i>`
\deprecated Inserts a 0-cell in the 1-cell containing `dh`. Deprecated. Use `cm.insert_cell_0_in_cell_1()` instead.
*/
template < class CMap >
typename CMap::Dart_handle insert_cell_0_in_cell_1(CMap& cm,
@ -37,30 +16,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Inserts a 0-cell in the 2-cell containing `dh`.
The 2-cell is split in triangles, one for each initial edge of the facet.
Returns a handle on one dart belonging to the new 0-cell.
\pre \ref CombinatorialMap::dimension "CMap::dimension"\f$ \geq\f$ 2 and
`*dh`\f$ \in\f$\ref CombinatorialMap::darts "cm.darts()".
See example in \cgalFigureRef{figtriangulate}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`,
if 2-attributes are non `void`,
\ref CellAttribute::On_split "Attribute_type<2>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 2-attribute associated with `dh` and <I>a'</I> each new 2-attribute created during the operation. If set, the dynamic onsplit function of 2-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are
not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `CGAL::insert_cell_0_in_cell_2<CMap>`
\sa `CGAL::insert_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_dangling_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>`
\sa `CGAL::remove_cell<CMap,i>`
\deprecated Inserts a 0-cell in the 2-cell containing `dh`. Deprecated. Use `cm.insert_cell_0_in_cell_2()` instead.
*/
template <class CMap>
typename CMap::Dart_handle insert_cell_0_in_cell_2(CMap & cm,
@ -73,28 +29,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Inserts a 1-cell in the 2-cell containing `dh1` and `dh2`.
Returns \f$ \beta_0\f$(`dh1`), a handle on one dart belonging to the new 1-cell.
\pre `::is_insertable_cell_1_in_cell_2<Map>(cm,dh1,dh2)`.
See example in \cgalFigureRef{figinsertedge}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`,
if 2-attributes are non `void`, \ref CellAttribute::On_split "Attribute_type<2>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 2-attribute associated with `dh` and <I>a'</I> the new 2-attribute created during the operation. If set, the dynamic onsplit function of 2-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are
not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `CGAL::is_insertable_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_cell_0_in_cell_1<CMap>`
\sa `CGAL::insert_cell_0_in_cell_2<CMap>`
\sa `CGAL::insert_dangling_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>`
\sa `CGAL::remove_cell<CMap,i>`
\deprecated Inserts a 1-cell in the 2-cell containing `dh1` and `dh2`. Deprecated. Use `cm.insert_cell_1_in_cell_2()` instead.
*/
template < class CMap >
typename CMap::Dart_handle insert_cell_1_in_cell_2(CMap& cm,
@ -107,29 +42,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Inserts a 2-cell along the path of 1-cells containing darts given
by the range `[afirst,alast)`.
Returns a handle on one dart belonging to the new 2-cell.
\pre `::is_insertable_cell_2_in_cell_3<Map>(cm,afirst,alast)`.
See example in \cgalFigureRef{figinsertface}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`,
if 3-attributes are non `void`, \ref CellAttribute::On_split "Attribute_type<3>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 3-attribute associated with `dh` and <I>a'</I> the new 3-attribute created during the operation. If set, the dynamic onsplit function of 3-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are
not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `CGAL::is_insertable_cell_2_in_cell_3<CMap,InputIterator>`
\sa `CGAL::insert_cell_0_in_cell_1<CMap>`
\sa `CGAL::insert_cell_0_in_cell_2<CMap>`
\sa `CGAL::insert_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_dangling_cell_1_in_cell_2<CMap>`
\sa `CGAL::remove_cell<CMap,i>`
\deprecated Inserts a 2-cell along the path of 1-cells containing darts given by the range `[afirst,alast)`. Deprecated. Use `cm.insert_cell_2_in_cell_3()` instead.
*/
template <class CMap, class InputIterator>
typename CMap::Dart_handle insert_cell_2_in_cell_3(CMap & cm,
@ -142,25 +55,8 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Inserts a 1-cell in a the 2-cell containing `dh`, the 1-cell
being attached only by one of its extremity to the 0-cell containing `dh`.
Returns a handle on the dart belonging to the new 1-cell and to the new 0-cell.
\pre \ref CombinatorialMap::dimension "CMap::dimension"\f$ \geq\f$ 2 and
`*dh`\f$ \in\f$\ref CombinatorialMap::darts "cm.darts()".
See example in \cgalFigureRef{figinsertedge}.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are
not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `CGAL::insert_cell_0_in_cell_1<CMap>`
\sa `CGAL::insert_cell_0_in_cell_2<CMap>`
\sa `CGAL::insert_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>`
\sa `CGAL::remove_cell<CMap,i>`
\deprecated Inserts a 1-cell in a the 2-cell containing `dh`, the 1-cell
being attached only by one of its extremity to the 0-cell containing `dh`. Deprecated. Use `cm.insert_dangling_cell_1_in_cell_2()` instead.
*/
template < class CMap >
typename CMap::Dart_handle insert_dangling_cell_1_in_cell_2(CMap& cm,
@ -173,17 +69,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Returns true iff it is possible to insert a 1-cell in `cm`
between `dh1` and `dh2`.
This is possible if `dh1`\f$ \neq\f$`dh2` and `dh1`\f$ \in\f$\f$ \langle{}\f$\f$ \beta_1\f$\f$ \rangle{}\f$(`dh2`).
\pre \ref CombinatorialMap::dimension "CMap::dimension"\f$ \geq\f$ 2,
`*dh1`\f$ \in\f$\ref CombinatorialMap::darts "cm.darts()", and
`*dh2`\f$ \in\f$\ref CombinatorialMap::darts "cm.darts()".
\sa `CGAL::insert_cell_1_in_cell_2<CMap>`
\sa `CGAL::is_insertable_cell_2_in_cell_3<CMap,InputIterator>`
\deprecated Returns true iff it is possible to insert a 1-cell in `cm` between `dh1` and `dh2`. Deprecated. Use `cm.is_insertable_cell_1_in_cell_2()` instead.
*/
template < class CMap >
bool is_insertable_cell_1_in_cell_2(const CMap & cm,
@ -197,15 +83,8 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Returns true iff it is possible to insert a 2-cell in `cm` along the path
of darts given by the range `[afirst,alast)`. The 2-cell can be inserted
iff each couple of consecutive darts of the path <I>a1</I> and <I>a2</I> belong to the
same vertex and the same volume, and if the path is closed.
\pre \ref CombinatorialMap::dimension "CMap::dimension"\f$ \geq\f$ 3.
\sa `CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>`
\sa `CGAL::is_insertable_cell_1_in_cell_2<CMap>`
\deprecated Returns true iff it is possible to insert a 2-cell in `cm` along the path
of darts given by the range `[afirst,alast)`. Deprecated. Use `cm.is_insertable_cell_2_in_cell_3()` instead.
*/
template <class CMap, class InputIterator>
bool is_insertable_cell_2_in_cell_3(const CMap & cm,
@ -218,17 +97,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Returns true iff the <I>i</I>-cell containing `dh` can be removed.
An <I>i</I>-cell can be removed if `i`==\ref CombinatorialMap::dimension "CMap::dimension"
or if `i`==\ref CombinatorialMap::dimension "CMap::dimension"-1 or
if `i`\f$ <\f$\ref CombinatorialMap::dimension "CMap::dimension"-1 and the <I>i</I>-cell containing `dh`
is incident to at most two (<I>i+1</I>)-cells.
\pre 0\f$ \leq\f$`i`\f$ \leq\f$\ref CombinatorialMap::dimension "CMap::dimension"
and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "cm.darts()".
\sa `CGAL::remove_cell<CMap,i>`
\deprecated Returns true iff the <I>i</I>-cell containing `dh` can be removed. Deprecated. Use `cm.is_removable()` instead.
*/
template <class CMap, unsigned int i>
bool is_removable(const CMap& cm, typename CMap::Dart_const_handle dh);
@ -240,29 +109,7 @@ namespace CGAL {
/*!
\ingroup PkgCombinatorialMapsOperations
Removes the <I>i</I>-cell containing `dh`.
Returns the number of darts removed from `cm`.
\pre `::is_removable<CMap,i>(cm,dh)`.
See examples in \cgalFigureRef{figinsertvertex}, \cgalFigureRef{figinsertedge} and \cgalFigureRef{figinsertface}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`,
if `i`\f$ <\f$\ref CombinatorialMap::dimension "CMap::dimension", and <I>i+1</I>-attributes are non `void`, and if there are two distinct (<I>i+1</I>)-cells around dart `dh`, \ref CellAttribute::On_merge "Attribute_type<i+1>::type::On_merge"(<I>a1</I>,<I>a2</I>) is called, with <I>a1</I> the (<I>i+1</I>)-attribute associated to `dh`, and <I>a2</I> the (<I>i+1</I>)-attribute associated to \f$ \beta_{i+1}\f$(<I>dh</I>). If set, the dynamic onmerge function of <I>i+1</I>-attributes is also called on <I>a1</I> and <I>a2</I>.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`,
if a <I>j</I>-cell is disconnected in two <I>j</I>-cells during the operation, and if <I>j</I>-attributes are non void, \ref CellAttribute::On_split "Attribute_type<j>::type::On_split"(<I>a</I>,<I>a'</I>) is called with <I>a</I> the original <I>j</I>-attribute and <I>a'</I> the new <I>j</I>-attribute created due to the disconnection. If set, the dynamic onsplit function of <i>j</i>-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are
not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `CGAL::is_removable<CMap,i>`
\sa `CGAL::insert_cell_0_in_cell_1<CMap>`
\sa `CGAL::insert_cell_0_in_cell_2<CMap>`
\sa `CGAL::insert_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_dangling_cell_1_in_cell_2<CMap>`
\sa `CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>`
\deprecated Removes the <I>i</I>-cell containing `dh`. Deprecated. Use `cm.remove_cell()` instead.
*/
template <class CMap, unsigned int i>
typename CMap::size_type remove_cell(CMap& cm, typename CMap::Dart_handle dh);

View File

@ -954,6 +954,221 @@ Frees mark `m`.
void free_mark(size_type m) const;
/// @}
/// \name Constructions
/// @{
/*!
Creates a combinatorial hexahedron (six combinatorial quadrangles linked together by \f$ \beta_2\f$), and adds it in the combinatorial map. Returns a handle on one dart of this combinatorial hexahedron.
\pre `dimension` \f$\geq\f$ 2.
\sa `make_edge`
\sa `make_combinatorial_polygon`
\sa `make_combinatorial_tetrahedron`
*/
Dart_handle make_combinatorial_hexahedron();
/*!
Creates a combinatorial polygon of length `lg` (`lg` darts linked by \f$ \beta_1\f$), and adds it in the combinatorial map. Returns a handle on one dart of this combinatorial polygon.
\pre `dimension`\f$ \geq\f$ 1 and `lg`\f$ >\f$ 0.
\sa `make_edge`
\sa `make_combinatorial_tetrahedron`
\sa `make_combinatorial_hexahedron`
*/
Dart_handle make_combinatorial_polygon(unsigned int lg);
/*!
Creates a combinatorial tetrahedron (four combinatorial triangles linked together by \f$ \beta_2\f$), and adds it in the combinatorial map. Returns a handle on one dart of this combinatorial tetrahedron.
\pre `dimension`\f$ \geq\f$ 2.
\sa `make_edge`
\sa `make_combinatorial_polygon`
\sa `make_combinatorial_hexahedron`
*/
Dart_handle make_combinatorial_tetrahedron();
/*!
Creates an isolated edge (two darts linked by \f$ \beta_2\f$) and adds it in the combinatorial map. Returns a handle on one dart of this edge.
\pre `dimension`\f$ \geq\f$ 2.
\sa `make_combinatorial_polygon`
\sa `make_combinatorial_tetrahedron`
\sa `make_combinatorial_hexahedron`
*/
Dart_handle make_edge();
/// @}
/// \name Operations
/// @{
/*!
Inserts a 0-cell in the 1-cell containing `dh`. Returns a handle on one dart belonging to the new 0-cell.
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 1 and
`*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
See example in \cgalFigureRef{figinsertvertex}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if 1-attributes are non `void`, \ref CellAttribute::On_split "Attribute_type<1>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 1-attribute associated with <I>dh</I> and <I>a'</I> the new 1-attribute created during the operation. If set, the dynamic onsplit function of 1-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `insert_cell_0_in_cell_2`
\sa `insert_cell_1_in_cell_2`
\sa `insert_dangling_cell_1_in_cell_2`
\sa `insert_cell_2_in_cell_3<InputIterator>`
\sa `remove_cell<i>`
*/
Dart_handle insert_cell_0_in_cell_1(Dart_handle dh);
/*!
Inserts a 0-cell in the 2-cell containing `dh`. The 2-cell is split in triangles, one for each initial edge of the facet. Returns a handle on one dart belonging to the new 0-cell.
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 2 and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
See example in \cgalFigureRef{figtriangulate}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if 2-attributes are non `void`, \ref CellAttribute::On_split "Attribute_type<2>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 2-attribute associated with `dh` and <I>a'</I> each new 2-attribute created during the operation. If set, the dynamic onsplit function of 2-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `insert_cell_0_in_cell_2`
\sa `insert_cell_1_in_cell_2`
\sa `insert_dangling_cell_1_in_cell_2`
\sa `insert_cell_2_in_cell_3<InputIterator>`
\sa `remove_cell<i>`
*/
Dart_handle insert_cell_0_in_cell_2(Dart_handle dh);
/*!
Inserts a 1-cell in the 2-cell containing `dh1` and `dh2`. Returns \f$ \beta_0\f$(`dh1`), a handle on one dart belonging to the new 1-cell.
\pre `is_insertable_cell_1_in_cell_2(dh1,dh2)`.
See example in \cgalFigureRef{figinsertedge}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if 2-attributes are non `void`, \ref CellAttribute::On_split "Attribute_type<2>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 2-attribute associated with `dh` and <I>a'</I> the new 2-attribute created during the operation. If set, the dynamic onsplit function of 2-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `is_insertable_cell_1_in_cell_2`
\sa `insert_cell_0_in_cell_1`
\sa `insert_cell_0_in_cell_2`
\sa `insert_dangling_cell_1_in_cell_2`
\sa `insert_cell_2_in_cell_3<InputIterator>`
\sa `remove_cell<i>`
*/
Dart_handle insert_cell_1_in_cell_2(Dart_handle dh1, Dart_handle dh2);
/*!
Inserts a 2-cell along the path of 1-cells containing darts given by the range `[afirst,alast)`. Returns a handle on one dart belonging to the new 2-cell.
\pre `is_insertable_cell_2_in_cell_3(afirst,alast)`.
See example in \cgalFigureRef{figinsertface}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if 3-attributes are non `void`, \ref CellAttribute::On_split "Attribute_type<3>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original 3-attribute associated with `dh` and <I>a'</I> the new 3-attribute created during the operation. If set, the dynamic onsplit function of 3-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `is_insertable_cell_2_in_cell_3<InputIterator>`
\sa `insert_cell_0_in_cell_1`
\sa `insert_cell_0_in_cell_2`
\sa `insert_cell_1_in_cell_2`
\sa `insert_dangling_cell_1_in_cell_2`
\sa `remove_cell<i>`
*/
template <class InputIterator>
Dart_handle insert_cell_2_in_cell_3(InputIterator afirst, InputIterator alast);
/*!
Inserts a 1-cell in a the 2-cell containing `dh`, the 1-cell being attached only by one of its extremity to the 0-cell containing `dh`. Returns a handle on the dart belonging to the new 1-cell and to the new 0-cell.
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 2 and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
See example in \cgalFigureRef{figinsertedge}.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `insert_cell_0_in_cell_1`
\sa `insert_cell_0_in_cell_2`
\sa `insert_cell_1_in_cell_2`
\sa `insert_cell_2_in_cell_3<InputIterator>`
\sa `remove_cell<i>`
*/
Dart_handle insert_dangling_cell_1_in_cell_2(Dart_handle dh);
/*!
Returns true iff it is possible to insert a 1-cell in the combinatorial map between `dh1` and `dh2`.
This is possible if `dh1`\f$ \neq\f$`dh2` and `dh1`\f$ \in\f$\f$ \langle{}\f$\f$ \beta_1\f$\f$ \rangle{}\f$(`dh2`).
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 2, `*dh1`\f$ \in\f$\ref CombinatorialMap::darts "darts()", and `*dh2`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
\sa `insert_cell_1_in_cell_2`
\sa `is_insertable_cell_2_in_cell_3<InputIterator>`
*/
bool is_insertable_cell_1_in_cell_2(Dart_const_handle dh1, Dart_const_handle dh2);
/*!
Returns true iff it is possible to insert a 2-cell in the combinatorial map along the path of darts given by the range `[afirst,alast)`. The 2-cell can be inserted iff each couple of consecutive darts of the path <I>a1</I> and <I>a2</I> belong to the same vertex and the same volume, and if the path is closed.
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 3.
\sa `insert_cell_2_in_cell_3<InputIterator>`
\sa `is_insertable_cell_1_in_cell_2`
*/
template <class InputIterator>
bool is_insertable_cell_2_in_cell_3(InputIterator afirst, InputIterator alast);
/*!
Returns true iff the <I>i</I>-cell containing `dh` can be removed.
An <I>i</I>-cell can be removed if `i`==\ref CombinatorialMap::dimension "dimension" or if `i`==\ref CombinatorialMap::dimension "dimension"-1 or if `i`\f$ <\f$\ref CombinatorialMap::dimension "dimension"-1 and the <I>i</I>-cell containing `dh` is incident to at most two (<I>i+1</I>)-cells.
\pre 0\f$ \leq\f$`i`\f$ \leq\f$\ref CombinatorialMap::dimension "dimension" and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
\sa `CGAL::remove_cell<i>`
*/
template <unsigned int i>
bool is_removable(Dart_const_handle dh);
/*!
Removes the <I>i</I>-cell containing `dh`. Returns the number of darts removed from the combinatorial map.
\pre `::is_removable<i>(dh)`.
See examples in \cgalFigureRef{figinsertvertex}, \cgalFigureRef{figinsertedge} and \cgalFigureRef{figinsertface}.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if `i`\f$ <\f$\ref CombinatorialMap::dimension "dimension", and <I>i+1</I>-attributes are non `void`, and if there are two distinct (<I>i+1</I>)-cells around dart `dh`, \ref CellAttribute::On_merge "Attribute_type<i+1>::type::On_merge"(<I>a1</I>,<I>a2</I>) is called, with <I>a1</I> the (<I>i+1</I>)-attribute associated to `dh`, and <I>a2</I> the (<I>i+1</I>)-attribute associated to \f$ \beta_{i+1}\f$(<I>dh</I>). If set, the dynamic onmerge function of <I>i+1</I>-attributes is also called on <I>a1</I> and <I>a2</I>.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if a <I>j</I>-cell is disconnected in two <I>j</I>-cells during the operation, and if <I>j</I>-attributes are non void, \ref CellAttribute::On_split "Attribute_type<j>::type::On_split"(<I>a</I>,<I>a'</I>) is called with <I>a</I> the original <I>j</I>-attribute and <I>a'</I> the new <I>j</I>-attribute created due to the disconnection. If set, the dynamic onsplit function of <i>j</i>-attributes is also called on <I>a</I> and <I>a'</I>.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
\cgalAdvancedEnd
\sa `is_removable<i>`
\sa `insert_cell_0_in_cell_1`
\sa `insert_cell_0_in_cell_2`
\sa `insert_cell_1_in_cell_2`
\sa `insert_dangling_cell_1_in_cell_2`
\sa `insert_cell_2_in_cell_3<InputIterator>`
*/
template <unsigned int i>
size_type remove_cell(Dart_handle dh);
} /* namespace CGAL */
/// @}
}; /* end CombinatorialMap */
//@}