\( \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.14.3 - dD Triangulations
TriangulationDSVertex Concept Reference

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<TriangulationDataStructure_>

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

◆ Rebind_TDS

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.

◆ 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::TriangulationDSVertex ( Full_cell_handle  c)

Sets the incident full cell to c.

Precondition
c must not be the default-constructed Full_cell_handle.