Loading [MathJax]/extensions/TeX/AMSmath.js
 
CGAL 6.0 - dD Triangulations
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
Loading...
Searching...
No Matches
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.
 
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.
 

Creation

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

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 (void *p)
 

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.