CGAL 4.7 - dD Triangulations: TriangulationDSVertex Concept Reference

\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.7 - dD Triangulations

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
TriangulationDSVertex Concept Reference
Concepts

Inherited by CGAL::Triangulation_vertex< TriangulationTraits, Data, TriangulationDSVertex >.

## Definition

The concept `TriangulationDSVertex` describes the requirements for the vertex base class of a `CGAL::Triangulation_data_structure`. It refines the concept `TriangulationDataStructure::Vertex`.

Since the `CGAL::Triangulation_data_structure` is the class which defines the handle types, the vertex base class has to be somehow parameterized by the triangulation data structure. But since the `CGAL::Triangulation_data_structure` itself is parameterized by the cell and vertex base classes, there is a cycle in the definition of these classes. In order to break the cycle, the base classes for cells and vertices which are plugged in to instantiate a `Triangulation_data_structure` use a `void` as triangulation data structure parameter. Then, the `CGAL::Triangulation_data_structure` uses a rebind mechanism (similar to the one specified in `std::allocator`) in order to plug itself as parameter in the full cell and vertex base classes. This mechanism requires that the base class provides a templated nested class `Rebind_TDS` that itself provides the subtype `Rebind_TDS::Other` which is the rebound version of the base class. This rebound base class is the class that the `CGAL::Triangulation_data_structure` actually uses as a base class for the class of `CGAL::Triangulation_data_structure::Vertex`.

Refines:
  `TriangulationDataStructure::Vertex`

Has Models:

  CGAL::Triangulation_ds_vertex<Tds>

  CGAL::Triangulation_vertex<TriangulationTraits, Data, TriangulationDSVertex>

See Also
  `TriangulationDSFullCell`
  `TriangulationDSFace`
  `TriangulationDataStructure`
  `TriangulationDataStructure::Vertex`

## Types

typedef unspecified_type | Triangulation_data_structure
| The `Triangulation_data_structure` in which the vertex is defined/used. More...
template<typename TDS2 >
using | Rebind_TDS = unspecified_type
| This nested template class has to define a type `Rebind_TDS<TDS2>::Other` which is the rebound vertex, that is, the one that will be actually used by `Triangulation_data_structure`. More...

## Creation

| TriangulationDSVertex ()
| The default constructor (no incident full cell is set).
| TriangulationDSVertex (Full_cell_handle c)
| Sets the incident full cell to `c`. More...

## Memory management

These member functions are required by `Triangulation_data_structure` because it uses `CGAL::Compact_container` to store its cells. See the documentation of `CGAL::Compact_container` for the exact requirements.
void * | for_compact_container () const
void *& | for_compact_container ()

## Member Typedef Documentation

template<typename TDS2 >

using TriangulationDSVertex::Rebind_TDS = unspecified_type

This nested template class has to define a type `Rebind_TDS<TDS2>::Other` which is the rebound vertex, that is, the one that will be actually used by `Triangulation_data_structure`.

The `Rebind_TDS<TDS2>::Other` type will be the real base class of `Triangulation_data_structure::Vertex`.

Note
  It can be implemented using a nested template class.

typedef unspecified_type TriangulationDSVertex::Triangulation_data_structure

The `Triangulation_data_structure` in which the vertex is defined/used.

Must be a model of the `TriangulationDataStructure` concept.

## Constructor & Destructor Documentation

TriangulationDSVertex::TriangulationDSVertex | ( | Full_cell_handle | c) |  |

Sets the incident full cell to `c`.

Precondition
  `c` must not be the default-constructed `Full_cell_handle`.