CGAL 6.0 - Combinatorial Maps
|
The concept GenericMap
defines a d-dimensional generic map. This concept is defined only to factorize the common notions between CombinatorialMap
and GeneralizedMap
concepts.
DefaultConstructible
A generic map has a set of darts D, and functions \( f_0\), \( \ldots\), \( f_{d}\) that link these darts between them.
CombinatorialMap
GeneralizedMap
Types | |
typedef unspecified_type | Dart |
Dart type. | |
typedef unspecified_type | Dart_descriptor |
Dart descriptor type. | |
typedef unspecified_type | Dart_const_descriptor |
Dart const descriptor type. | |
typedef unspecified_type | Dart_info |
Information associated to each dart. | |
typedef unspecified_type | size_type |
Size type (an unsigned integral type). | |
Types for Attributes | |
typedef unspecified_type | Attributes |
The tuple of cell attributes. | |
template<unsigned int i> | |
using | Attribute_type = unspecified_type |
Attribute_type<i>::type is the type of i-attributes, a model of CellAttribute concept. | |
template<unsigned int i> | |
using | Attribute_descriptor = unspecified_type |
Attribute_descriptor<i>::type is a descriptor to i-attributes. | |
template<unsigned int i> | |
using | Attribute_const_descriptor = unspecified_type |
Attribute_descriptor<i>::type is a const descriptor to i-attributes. | |
Range Types | |
typedef unspecified_type | Dart_range |
Range of all the darts of the generic map. | |
typedef unspecified_type | Dart_const_range |
Const range of all the darts of the generic map. | |
template<unsigned int i> | |
using | Attribute_range = unspecified_type |
Attribute_range<i>::type is the range of all the i-attributes. | |
template<unsigned int i> | |
using | Attribute_const_range = unspecified_type |
Attribute_const_range<i>::type is the const range of all the i-attributes. | |
template<unsigned int... I> | |
using | Dart_of_orbit_range = unspecified_type |
Range of all the darts of the <I...> orbit. | |
template<unsigned int ... I> | |
using | Dart_of_orbit_const_range = unspecified_type |
Const range of all the darts of the <I...> orbit. | |
template<unsigned int i, unsigned int dim = dimension> | |
using | Dart_of_cell_range = unspecified_type |
Range of all the darts of an i-cell. | |
template<unsigned int i, unsigned int dim = dimension> | |
using | Dart_of_cell_const_range = unspecified_type |
Const range of all the darts of the i-cell. | |
template<unsigned int i, unsigned int j, unsigned int dim = dimension> | |
using | One_dart_per_incident_cell_range = unspecified_type |
Range of one dart of each i-cell incident to one j-cell. | |
template<unsigned int i, unsigned int j, unsigned int dim = dimension> | |
using | One_dart_per_incident_cell_const_range = unspecified_type |
Const range of one dart of each i-cell incident to one j-cell. | |
template<unsigned int i, unsigned int dim = dimension> | |
using | One_dart_per_cell_range = unspecified_type |
Range of one dart of each i-cell of the generic map. | |
template<unsigned int i, unsigned int dim = dimension> | |
using | One_dart_per_cell_const_range = unspecified_type |
Const range of one dart of each i-cell of the generic map. | |
Constants | |
static const unsigned int | dimension |
The dimension d of the generic map. | |
static const size_type | NB_MARKS |
The number of available Boolean marks of the generic map. | |
static unspecified_type | null_descriptor |
A null descriptor. | |
Creation | |
template<typename Map > | |
GenericMap (const Map &bmap) | |
Construct a new generic map from another one. | |
Access Member Functions | |
bool | is_empty () const |
Returns true iff the generic map is empty, i.e. it contains no dart. | |
bool | is_without_boundary (unsigned int i) const |
Returns true iff the generic map is without i-boundary. | |
bool | is_without_boundary () const |
Returns true iff the generic map is without boundary in all dimensions. | |
size_type | number_of_darts () const |
Returns the number of darts in the generic map. | |
template<unsigned int i> | |
size_type | number_of_attributes () const |
Returns the number of i-attributes in the generic map. | |
size_type | upper_bound_on_dart_ids () const |
Returns an upper bound of the id of dart descriptors if indices are used or 0 otherwise. | |
template<unsigned int i> | |
size_type | upper_bound_on_attribute_ids () const |
Returns an upper bound of the id of i-attributes descriptors if indices are used or 0 otherwise. | |
bool | is_dart_used (Dart_const_descriptor d) const |
Returns true if d is a descriptor of a used dart (i.e. valid). | |
bool | is_free (Dart_const_descriptor d, unsigned int i) const |
Returns true iff dart d is i-free. | |
template<unsigned int i> | |
bool | is_free (Dart_const_descriptor d) const |
Returns true iff dart d is i-free. | |
int | highest_nonfree_dimension (Dart_const_descriptor d) const |
Returns the highest dimension i such that dart d is not i-free. | |
Dart_descriptor | other_extremity (Dart_descriptor d) |
Returns a descriptor to a dart belonging to the other vertex of the edge containing dart d (but not necessarily to the same edge). | |
Dart_const_descriptor | other_extremity (Dart_const_descriptor d) const |
Returns a const descriptor to a dart belonging to the other vertex of the edge containing dart d , when the dart is const (but not necessarily to the same edge). | |
Dart_descriptor | next (Dart_descriptor d) |
Returns a descriptor to a dart belonging to the next edge after d , that does not belong to the same 0-cell than d and that belongs to the same i-cell than d for each i, 2 \( \leq \) i \( \leq \) dimension . | |
Dart_const_descriptor | next (Dart_const_descriptor d) const |
Returns a const descriptor to a dart belonging to the next edge after d , that does not belong to the same 0-cell than d and that belongs to the same i-cell than d for each i, 2 \( \leq \) i \( \leq \) dimension . | |
Dart_descriptor | previous (Dart_descriptor d) |
Returns a descriptor to a dart belonging to the previous edge before d , that does not belong to the same 0-cell than d and that belongs to the same i-cell than d for each i, 2 \( \leq \) i \( \leq \) dimension . | |
Dart_const_descriptor | previous (Dart_const_descriptor d) const |
Returns a const descriptor to a dart belonging to the previous edge before d , that does not belong to the same 0-cell than d and that belongs to the same i-cell than d for each i, 2 \( \leq \) i \( \leq \) dimension . | |
template<unsigned int i> | |
Dart_descriptor | opposite (Dart_descriptor d) |
Returns a descriptor to a dart belonging to the opposite i-cell than d . | |
template<unsigned int i> | |
Dart_const_descriptor | opposite (Dart_const_descriptor d) const |
Returns a const descriptor to a dart belonging to the opposite i-cell than d . | |
std::ostream & | display_characteristics (std::ostream &os) const |
Displays on os the number of elements of the generic map. | |
Attributes Access Member Functions | |
Dart_info & | info (Dart_descriptor d) |
Returns the information associated to dart d . | |
const Dart_info & | info (Dart_const_descriptor d) const |
Returns the information associated to dart d , when the dart is const. | |
template<unsigned int i> | |
Attribute_descriptor< i >::type | attribute (Dart_descriptor d) |
Returns a descriptor to the i-attribute associated to dart d . | |
template<unsigned int i> | |
Attribute_const_descriptor< i >::type | attribute (Dart_const_descriptor d) const |
Returns a const descriptor to the i-attribute associated to dart d , when the dart is const. | |
template<unsigned int i> | |
Dart_descriptor | dart_of_attribute (typename Attribute_descriptor< i >::type ah) |
Returns one dart of the cell associated to the i-attribute *ah . | |
template<unsigned int i> | |
Dart_const_descriptor | dart_of_attribute (typename Attribute_const_descriptor< i >::type ah) const |
Returns one dart of the cell associated to the const i-attribute *ah . | |
template<unsigned int i> | |
Attribute_type< i >::type::Info & | info_of_attribute (typename Attribute_descriptor< i >::type ah) |
Returns the information of the i-attribute *ah . | |
template<unsigned int i> | |
const Attribute_type< i >::type::Info & | info_of_attribute (typename Attribute_const_descriptor< i >::type ah) const |
Returns the information of the const i-attribute *ah . | |
template<unsigned int i> | |
Attribute_type< i >::type::Info & | info (Dart_descriptor adart) |
A shortcut for info_of_attribute<i> ( attribute<i> (adart)) . | |
template<unsigned int i> | |
const Attribute_type< i >::type::Info & | info (Dart_const_descriptor adart) const |
A shortcut for info_of_attribute<i> ( attribute<i> (adart)) for const descriptor. | |
template<unsigned int i> | |
Dart_descriptor & | dart (Dart_descriptor adart) |
A shortcut for dart_of_attribute<i> ( attribute<i> (adart)) . | |
template<unsigned int i> | |
Dart_const_descriptor | dart (Dart_const_descriptor adart) const |
A shortcut for dart_of_attribute<i> ( attribute<i> (adart)) for const descriptor. | |
template<unsigned int i> | |
bool | is_attribute_used (typename Attribute_const_descriptor< i >::type ah) const |
Returns true if ah points to a used i-attribute (i.e. valid). | |
Transformations Between Descriptors and Instances | |
Dart_descriptor | dart_descriptor (Dart &d) |
Returns the dart descriptors of d . | |
Dart_const_descriptor | dart_descriptor (const Dart &d) const |
Returns the dart const descriptors of d . | |
Range Access Member Functions | |
Dart_range & | darts () |
Returns a range of all the darts in the generic map. | |
Dart_const_range & | darts () const |
Returns a const range of all the darts in the generic map. | |
template<unsigned int i> | |
Attribute_range< i >::type & | attributes () |
Returns a range of all the i-attributes in the generic map. | |
template<unsigned int i> | |
Attribute_const_range< i >::type & | attributes () const |
Returns a const range of all the i-attributes in the generic map. | |
template<unsigned int ... I> | |
Dart_of_orbit_range | darts_of_orbit (Dart_descriptor d) |
Returns a range of all the darts of the orbit <I...>(d) . | |
template<unsigned int ... I> | |
Dart_of_orbit_const_range | darts_of_orbit (Dart_const_descriptor d) const |
Returns a const range of all the darts of the orbit <I...>(d) . | |
template<unsigned int i, unsigned int dim = dimension> | |
Dart_of_cell_range | darts_of_cell (Dart_descriptor d) |
Returns a range of all the darts of the i-cell containing d . | |
template<unsigned int i, unsigned int dim = dimension> | |
Dart_of_cell_const_range | darts_of_cell (Dart_const_descriptor d) const |
Returns a const range of all the darts of the i-cell containing d . | |
template<unsigned int i, unsigned int j, unsigned int dim = dimension> | |
One_dart_per_incident_cell_range | one_dart_per_incident_cell (Dart_descriptor d) |
Returns a range of one dart of each i-cell incident to the j-cell containing d . | |
template<unsigned int i, unsigned int j, unsigned int dim = dimension> | |
One_dart_per_incident_cell_const_range | one_dart_per_incident_cell (Dart_const_descriptor d) const |
Returns a const range of one dart of each i-cell incident to the j-cell containing d . | |
template<unsigned int i, unsigned int dim = dimension> | |
One_dart_per_cell_range | one_dart_per_cell () |
Returns a range of one dart of each i-cell in the generic map. | |
template<unsigned int i, unsigned int dim = dimension> | |
One_dart_per_cell_const_range | one_dart_per_cell () const |
Returns a const range of one dart of each i-cell in the generic map. | |
Modifiers | |
template<typename T1 > | |
Dart_descriptor | create_dart (T1 t1) |
Creates a new dart in the generic map, and returns the corresponding descriptor. | |
void | erase_dart (Dart_descriptor d) |
Removes d from the generic map. | |
template<unsigned int i, typename T1 > | |
Attribute_descriptor< i >::type | create_attribute (T1 t1) |
Creates a new i-attribute in the generic map, and returns the corresponding descriptor. | |
template<unsigned int i> | |
void | erase_attribute (Attribute_descriptor< i >::type ah) |
Removes the i-attribute *ah from the generic map. | |
template<unsigned int i> | |
void | set_attribute (Dart_descriptor d, Attribute_descriptor< i >::type a) |
Associates the i-attribute of all the darts of the i-cell containing d to a . | |
void | clear () |
Deletes all the darts and all the attributes of the generic map. | |
GenericMap & | operator= (const GenericMap &bmap) |
Assignment operator. | |
void | swap (GenericMap &bmap) |
Swap the current generic map with bmap . | |
Attributes management | |
bool | are_attributes_automatically_managed () const |
Returns the status of the management of the attributes of the generic map. | |
void | set_automatic_attributes_management (bool update_attributes) |
Set the status of the management of the attributes of the generic map. | |
void | correct_invalid_attributes () |
Correct the invalid attributes of the generic map. | |
Dynamic On-Merge/On-Split functors | |
template<int i> | |
boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & | onsplit_function () |
Return the current dynamic on-split function associated with i-attributes. | |
template<int i> | |
const boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & | onsplit_function () const |
Return the current dynamic on-split function associated with i-attributes, when *this is const. | |
template<int i> | |
boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & | onmerge_function () |
Return the current dynamic on-merge function associated with i-attributes. | |
template<int i> | |
const boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & | onmerge_function () const |
Return the current dynamic on-merge function associated with i-attributes, when *this is const. | |
Boolean Marks | |
size_type | get_new_mark () const |
Reserves a new mark. | |
bool | is_reserved (size_type m) const |
Returns true iff m is a reserved mark of the generic map. | |
bool | is_marked (Dart_const_descriptor d, size_type m) const |
Returns true iff dart d is marked for m . | |
void | mark (Dart_const_descriptor d, size_type m) const |
Marks dart d for m . | |
void | unmark (Dart_const_descriptor d, size_type m) const |
Unmarks dart d for the mark m . | |
void | negate_mark (size_type m) const |
Inverse the mark m for all the darts of the generic map. | |
void | unmark_all (size_type m) const |
Unmarks all the darts of the generic map for m . | |
size_type | number_of_marked_darts (size_type m) const |
Returns the number of marked darts for m . | |
size_type | number_of_unmarked_darts (size_type m) const |
Return the number of unmarked darts for m . | |
void | free_mark (size_type m) const |
Frees mark m . | |
Constructions | |
Dart_descriptor | make_combinatorial_hexahedron () |
Creates a combinatorial hexahedron (six combinatorial quadrangles 2-sewn together), and adds it in the generic map. | |
Dart_descriptor | make_combinatorial_polygon (unsigned int lg) |
Creates a combinatorial polygon of length lg (a cycle of lg edges), and adds it in the generic map. | |
Dart_descriptor | make_combinatorial_tetrahedron () |
Creates a combinatorial tetrahedron (four combinatorial triangles 2-sewn together), and adds it in the generic map. | |
Dart_descriptor | make_edge () |
Creates an isolated edge (two darts sewn to represent one edge and two vertices) and adds it in the generic map. | |
Operations | |
Dart_descriptor | insert_cell_0_in_cell_1 (Dart_descriptor d) |
Inserts a 0-cell in the 1-cell containing d . | |
Dart_descriptor | insert_cell_0_in_cell_2 (Dart_descriptor d) |
Inserts a 0-cell in the 2-cell containing d . | |
Dart_descriptor | insert_cell_1_in_cell_2 (Dart_descriptor d1, Dart_descriptor d2) |
Inserts a 1-cell in the 2-cell containing d1 and d2 . | |
Dart_descriptor | insert_cell_1_between_two_cells_2 (Dart_descriptor d1, Dart_descriptor d2) |
Inserts a 1-cell between the 2-cell containing d1 and the one containing d2 . | |
Dart_descriptor | insert_cell_1 (Dart_descriptor d1, Dart_descriptor d2) |
Call insert_cell_1_in_cell_2() if is_insertable_cell_1_in_cell_2(d1, d2) , otherwise call insert_cell_1_between_two_cells_2() . | |
template<class InputIterator > | |
Dart_descriptor | insert_cell_2_in_cell_3 (InputIterator afirst, InputIterator alast) |
Inserts a 2-cell along the path of 1-cells containing darts given by the range [afirst,alast) . | |
Dart_descriptor | insert_dangling_cell_1_in_cell_2 (Dart_descriptor d) |
Inserts a 1-cell in a the 2-cell containing d , the 1-cell being attached only by one of its extremity to the 0-cell containing d . | |
bool | is_insertable_cell_1_in_cell_2 (Dart_const_descriptor d1, Dart_const_descriptor d2) |
Returns true iff it is possible to insert a 1-cell in the generic map between d1 and d2 . | |
bool | is_insertable_cell_1_between_two_cells_2 (Dart_const_descriptor d1, Dart_const_descriptor d2) |
Returns true iff it is possible to insert a 1-cell in the generic map between d1 and d2 . | |
template<class InputIterator > | |
bool | is_insertable_cell_2_in_cell_3 (InputIterator afirst, InputIterator alast) |
Returns true iff it is possible to insert a 2-cell in the generic map along the path of darts given by the range [afirst,alast) . | |
template<unsigned int i> | |
bool | is_removable (Dart_const_descriptor d) |
Returns true iff the i-cell containing d can be removed. | |
template<unsigned int i> | |
size_type | remove_cell (Dart_descriptor d) |
Removes the i-cell containing d . | |
using GenericMap::Attribute_const_descriptor = unspecified_type |
Attribute_descriptor<i>::type
is a const descriptor to i-attributes.
dimension
and i-attributes are non void. using GenericMap::Attribute_const_range = unspecified_type |
Attribute_const_range<i>::type
is the const range of all the i-attributes.
Attribute_const_range<i>::type
is a model of ConstRange
concept, its iterator type is bidirectional and its value type is Attribute_type<i>::type
.
dimension
and i-attributes are non void. using GenericMap::Attribute_descriptor = unspecified_type |
Attribute_descriptor<i>::type
is a descriptor to i-attributes.
dimension
and i-attributes are non void. using GenericMap::Attribute_range = unspecified_type |
Attribute_range<i>::type
is the range of all the i-attributes.
Attribute_range<i>::type
is a model of Range
concept, its iterator type is bidirectional and its value type is Attribute_type<i>::type
.
dimension
and i-attributes are non void. using GenericMap::Attribute_type = unspecified_type |
Attribute_type<i>::type
is the type of i-attributes, a model of CellAttribute
concept.
Attribute_type<i>::type::Dart_descriptor
is equal to Dart_descriptor
, and Attribute_type<i>::type::Dart_const_descriptor
is equal to Dart_const_descriptor
.
dimension
and i-attributes are non void
. The tuple of cell attributes.
It contains at most dimension
+1
types (one for each possible cell of the generic map). Each type of the tuple must be either a model of the CellAttribute
concept or void
. The first type corresponds to 0-attributes, the second to 1-attributes and so on. If the i th type in the tuple is void
, (i-1)-attributes are disabled. Otherwise, (i-1)-attributes are enabled and have the given type. If the size of the tuple is k, with k \(
< \) dimension
+1
, \( \forall \) i: k \(
\leq \) i \( \leq \) dimension
, i-attributes are disabled.
Dart const descriptor type.
When using indices, Dart_const_descriptor is equal to Dart_descriptor.
Const range of all the darts of the generic map.
This type is a model of ConstRange
concept, its iterator type is bidirectional and its value type is Dart
.
using GenericMap::Dart_of_cell_const_range = unspecified_type |
Const range of all the darts of the i-cell.
Cells are considered in dim dimension, with 0 \( \leq \) i \( \leq \) dim+1 and 0 \( \leq \) dim \( \leq \) dimension
. If i==dim+1, range of all the darts of a connected component. This type is a model of ConstRange
concept, its iterator type is forward and its value type is Dart
.
using GenericMap::Dart_of_cell_range = unspecified_type |
Range of all the darts of an i-cell.
Cells are considered in dim dimension, with 0 \( \leq \) i \( \leq \) dim+1 and 0 \( \leq \) dim \( \leq \) dimension
. If i==dim+1, range of all the darts of a connected component. This type is a model of Range
concept, its iterator type is forward and its value type is Dart
.
using GenericMap::Dart_of_orbit_const_range = unspecified_type |
Const range of all the darts of the <I...>
orbit.
This type is a model of ConstRange
concept, its iterator type is forward and its value type is Dart
.
using GenericMap::Dart_of_orbit_range = unspecified_type |
using GenericMap::One_dart_per_cell_const_range = unspecified_type |
Const range of one dart of each i-cell of the generic map.
Cells are considered in dim dimension, with 0 \( \leq \) i \( \leq \) dim+1 and 0 \( \leq \) dim \( \leq \) dimension
. If i==dim+1, consider each connected component instead of each i-cell. This type is a model of ConstRange
concept, its iterator type is forward and its value type is Dart
.
using GenericMap::One_dart_per_cell_range = unspecified_type |
Range of one dart of each i-cell of the generic map.
Cells are considered in dim dimension, with 0 \( \leq \) i \( \leq \) dim+1 and 0 \( \leq \) dim \( \leq \) dimension
. If i==dim+1, consider each connected component instead of each i-cell. This type is a model of Range
concept, its iterator type is forward and its value type is Dart
.
using GenericMap::One_dart_per_incident_cell_const_range = unspecified_type |
Const range of one dart of each i-cell incident to one j-cell.
Cells are considered in dim dimension, with 0 \( \leq \) i \( \leq \) dim+1, 0 \( \leq \) j \( \leq \) dim+1 and 0 \( \leq \) dim \( \leq \) dimension
. If i==dim+1, consider each connected component instead of each i-cell. If j==dim+1, consider one connected component instead of one j-cell. This type is a model of ConstRange
concept, its iterator type is forward and its value type is Dart
.
using GenericMap::One_dart_per_incident_cell_range = unspecified_type |
Range of one dart of each i-cell incident to one j-cell.
Cells are considered in dim dimension, with 0 \( \leq \) i \( \leq \) dim+1, 0 \( \leq \) j \( \leq \) dim+1 and 0 \( \leq \) dim \( \leq \) dimension
. If i==dim+1, consider each connected component instead of each i-cell. If j==dim+1, consider one connected component instead of one j-cell. This type is a model of Range
concept, its iterator type is forward and its value type is Dart
.
GenericMap::GenericMap | ( | const Map & | bmap | ) |
Construct a new generic map from another one.
The new generic map is created by copying the darts and the non void attributes of bmap. Map must be a model of GenericMap
concept, which can be defined with a different dimension and/or different attributes than *this
. In this case, only dimensions that are common to bmap
and *this
, and only non void i-attributes of bmap
whose info type is the same to the info of non void i-attributes of *this
, are copied.
bool GenericMap::are_attributes_automatically_managed | ( | ) | const |
Returns the status of the management of the attributes of the generic map.
true
if the high level operations update the non void attributes (default value); false
otherwise.
Attribute_const_descriptor< i >::type GenericMap::attribute | ( | Dart_const_descriptor | d | ) | const |
Returns a const descriptor to the i-attribute associated to dart d
, when the dart is const.
dimension
, and i-attributes are non void
. Attribute_descriptor< i >::type GenericMap::attribute | ( | Dart_descriptor | d | ) |
Returns a descriptor to the i-attribute associated to dart d
.
dimension
, and i-attributes are non void
. Attribute_range< i >::type & GenericMap::attributes | ( | ) |
Returns a range of all the i-attributes in the generic map.
dimension
, and i-attributes are non void. Attribute_const_range< i >::type & GenericMap::attributes | ( | ) | const |
Returns a const range of all the i-attributes in the generic map.
dimension
, and i-attributes are non void. void GenericMap::correct_invalid_attributes | ( | ) |
Correct the invalid attributes of the generic map.
We can have invalid attribute either if we have called set_automatic_attributes_management(false)
before to use some modification operations or if we have modified the generic map by using low level operations.
\( \forall i \), 0 \( \leq \) i \( \leq \) dimension
such that the i-attributes are non void, \( \forall \) d \( \in \) darts()
:
d2
in the same i-cell than d
with a different i-attribute, then the i-attribute of d2
is set to the i-attribute of d
;d2
in a different i-cell than d
with the same i-attribute, then the i-attribute of all the darts in i-cell(d
) is set to a new i-attribute (copy of the original attribute);dart_of_attribute(d)
\( \in \) i-cell(d
). Attribute_descriptor< i >::type GenericMap::create_attribute | ( | T1 | t1 | ) |
Creates a new i-attribute in the generic map, and returns the corresponding descriptor.
Calls the constructor of i-attribute having T1
as parameter. Overloads of this member function are defined that take from zero to nine arguments. With zero argument, create_attribute<i>()
creates a new i-attribute by using the default constructor.
dimension
, and i-attributes are non void. Dart_descriptor GenericMap::create_dart | ( | T1 | t1 | ) |
Creates a new dart in the generic map, and returns the corresponding descriptor.
Calls the constructor of dart having T1
as parameter. A new dart is initialized to be i-free, \( \forall \) i: 0 \( \leq \) i \( \leq \) dimension
, and to have no associated attribute for each non void attribute. Overloads of this member function are defined that take from zero to nine arguments. With zero argument, create_dart()
creates a new dart by using the default constructor.
Dart_const_descriptor GenericMap::dart | ( | Dart_const_descriptor | adart | ) | const |
A shortcut for dart_of_attribute<i>
(
attribute<i>
(adart))
for const descriptor.
attribute<i>(adart)!=nullptr
. Dart_descriptor & GenericMap::dart | ( | Dart_descriptor | adart | ) |
A shortcut for dart_of_attribute<i>
(
attribute<i>
(adart))
.
attribute<i>(adart)!=nullptr
. Dart_const_descriptor GenericMap::dart_descriptor | ( | const Dart & | d | ) | const |
Returns the dart const descriptors of d
.
d
\( \in \) darts()
. Dart_descriptor GenericMap::dart_descriptor | ( | Dart & | d | ) |
Returns the dart descriptors of d
.
d
\( \in \) darts()
. Dart_const_descriptor GenericMap::dart_of_attribute | ( | typename Attribute_const_descriptor< i >::type | ah | ) | const |
Returns one dart of the cell associated to the const i-attribute *ah
.
nullptr
if Supports_cell_dart
of i-attributes is equal to Tag_false
.
dimension
, i-attributes are non void
and ah
!=nullptr. Dart_descriptor GenericMap::dart_of_attribute | ( | typename Attribute_descriptor< i >::type | ah | ) |
Returns one dart of the cell associated to the i-attribute *ah
.
nullptr
if Supports_cell_dart
of i-attributes is equal to Tag_false
.
dimension
, i-attributes are non void
and ah
!=nullptr. Dart_of_cell_const_range GenericMap::darts_of_cell | ( | Dart_const_descriptor | d | ) | const |
Returns a const range of all the darts of the i-cell containing d
.
The first element in the range points onto d
. i-cells are considered in dim dimension. If i==dim+1, const range of all the darts of the connected component containing d
.
Dart_of_cell_range GenericMap::darts_of_cell | ( | Dart_descriptor | d | ) |
Returns a range of all the darts of the i-cell containing d
.
The first element in the range points onto d
. i-cells are considered in dim dimension. If i==dim+1, range of all the darts of the connected component containing d
.
Dart_of_orbit_const_range GenericMap::darts_of_orbit | ( | Dart_const_descriptor | d | ) | const |
Returns a const range of all the darts of the orbit <I...>(d)
.
The first element in the range points onto d
.
Dart_of_orbit_range GenericMap::darts_of_orbit | ( | Dart_descriptor | d | ) |
Returns a range of all the darts of the orbit <I...>(d)
.
The first element in the range points onto d
.
std::ostream & GenericMap::display_characteristics | ( | std::ostream & | os | ) | const |
Displays on os
the number of elements of the generic map.
Its number of darts, its number of i-cells, for each i, 0 \( \leq \) i \( \leq \) dimension
, and its number of connected components.
Example of output for a 3D combinatorial map containing two disjoint combinatorial tetrahedra:
#Darts=24, #0-cells=8, #1-cells=12, #2-cells=8, #3-cells=2, #ccs=2
void GenericMap::erase_attribute | ( | Attribute_descriptor< i >::type | ah | ) |
Removes the i-attribute *ah
from the generic map.
dimension
, i-attributes are non void, and *ah
\( \in \) attributes<i>()
. void GenericMap::erase_dart | ( | Dart_descriptor | d | ) |
Removes d
from the generic map.
d
\( \in \) darts()
. void GenericMap::free_mark | ( | size_type | m | ) | const |
Frees mark m
.
is_reserved(m)
. size_type GenericMap::get_new_mark | ( | ) | const |
Reserves a new mark.
Returns its index. If there is no more available free mark, throw the exception Exception_no_more_available_mark.
int GenericMap::highest_nonfree_dimension | ( | Dart_const_descriptor | d | ) | const |
Returns the highest dimension i such that dart d
is not i-free.
-1 if d
is free for any dimension.
const Attribute_type< i >::type::Info & GenericMap::info | ( | Dart_const_descriptor | adart | ) | const |
A shortcut for info_of_attribute<i>
(
attribute<i>
(adart))
for const descriptor.
attribute<i>
(adart)!=nullptr
. const Dart_info & GenericMap::info | ( | Dart_const_descriptor | d | ) | const |
Returns the information associated to dart d
, when the dart is const.
Dart_info
is not void
. Attribute_type< i >::type::Info & GenericMap::info | ( | Dart_descriptor | adart | ) |
A shortcut for info_of_attribute<i>
(
attribute<i>
(adart))
.
attribute<i>
(adart)!=nullptr
. Dart_info & GenericMap::info | ( | Dart_descriptor | d | ) |
Returns the information associated to dart d
.
Dart_info
is not void
. const Attribute_type< i >::type::Info & GenericMap::info_of_attribute | ( | typename Attribute_const_descriptor< i >::type | ah | ) | const |
Attribute_type< i >::type::Info & GenericMap::info_of_attribute | ( | typename Attribute_descriptor< i >::type | ah | ) |
Dart_descriptor GenericMap::insert_cell_0_in_cell_1 | ( | Dart_descriptor | d | ) |
Inserts a 0-cell in the 1-cell containing d
.
Returns next(d)
, a descriptor on one dart belonging to the new 0-cell.
See examples for combinatorial map in Figure 29.11 and for generalized map in Figure 30.13.
If are_attributes_automatically_managed()
==true
, if 1-attributes are non void
, Attribute_type<1>::type::On_split
(a,a') is called, with a the original 1-attribute associated with d and a' the new 1-attribute created during the operation. If set, the dynamic on-split function of 1-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the generic map can be no more valid after this operation.
Dart_descriptor GenericMap::insert_cell_0_in_cell_2 | ( | Dart_descriptor | d | ) |
Inserts a 0-cell in the 2-cell containing d
.
The 2-cell is split in triangles, one for each initial edge of the facet. Returns a descriptor on one dart belonging to the new 0-cell.
See examples for combinatorial map in Figure 29.12 and for generalized map in Figure 30.14.
If are_attributes_automatically_managed()
==true
, if 2-attributes are non void
, Attribute_type<2>::type::On_split
(a,a') is called, with a the original 2-attribute associated with d
and a' each new 2-attribute created during the operation. If set, the dynamic on-split function of 2-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the generic map can be no more valid after this operation.
Dart_descriptor GenericMap::insert_cell_1 | ( | Dart_descriptor | d1, |
Dart_descriptor | d2 | ||
) |
Call insert_cell_1_in_cell_2()
if is_insertable_cell_1_in_cell_2(d1, d2)
, otherwise call insert_cell_1_between_two_cells_2()
.
Dart_descriptor GenericMap::insert_cell_1_between_two_cells_2 | ( | Dart_descriptor | d1, |
Dart_descriptor | d2 | ||
) |
Inserts a 1-cell between the 2-cell containing d1
and the one containing d2
.
Returns previous(d1)
, a descriptor on one dart belonging to the new 1-cell.
is_insertable_cell_1_between_two_cells_2(d1,d2)
.If are_attributes_automatically_managed()
==true
, call Attribute_type<i>::type::On_merge
(a,a') is called for all enabled i-attributes, for i>=2, with a the original 2-attribute associated with d1
and a' the original 2-attribute associated with d2
. If set, the dynamic on-merge function of i-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the generic map can be no more valid after this operation.
Dart_descriptor GenericMap::insert_cell_1_in_cell_2 | ( | Dart_descriptor | d1, |
Dart_descriptor | d2 | ||
) |
Inserts a 1-cell in the 2-cell containing d1
and d2
.
Returns previous(d1)
, a descriptor on one dart belonging to the new 1-cell.
is_insertable_cell_1_in_cell_2(d1,d2)
.See examples for combinatorial map in Figure 29.13 and for generalized map in Figure 30.15.
If are_attributes_automatically_managed()
==true
, if 2-attributes are non void
, Attribute_type<2>::type::On_split
(a,a') is called, with a the original 2-attribute associated with d1
and a' the new 2-attribute created during the operation. If set, the dynamic on-split function of 2-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the generic map can be no more valid after this operation.
Dart_descriptor GenericMap::insert_cell_2_in_cell_3 | ( | InputIterator | afirst, |
InputIterator | alast | ||
) |
Inserts a 2-cell along the path of 1-cells containing darts given by the range [afirst,alast)
.
Returns opposite<2>(*afirst)
, a descriptor on one dart belonging to the new 2-cell.
is_insertable_cell_2_in_cell_3(afirst,alast)
.See examples for combinatorial map in Figure 29.14 and for generalized map in Figure 30.16.
If are_attributes_automatically_managed()
==true
, if 3-attributes are non void
, Attribute_type<3>::type::On_split
(a,a') is called, with a the original 3-attribute associated with d
and a' the new 3-attribute created during the operation. If set, the dynamic on-split function of 3-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the generic map can be no more valid after this operation.
Dart_descriptor GenericMap::insert_dangling_cell_1_in_cell_2 | ( | Dart_descriptor | d | ) |
Inserts a 1-cell in a the 2-cell containing d
, the 1-cell being attached only by one of its extremity to the 0-cell containing d
.
Returns previous(d)
, a descriptor on the dart belonging to the new 1-cell and to the new 0-cell.
See examples for combinatorial map in Figure 29.13 and for generalized map in Figure 30.15.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the generic map can be no more valid after this operation.
bool GenericMap::is_attribute_used | ( | typename Attribute_const_descriptor< i >::type | ah | ) | const |
Returns true
if ah points to a used i-attribute (i.e. valid).
dimension
, and i-attributes are non void
. bool GenericMap::is_free | ( | Dart_const_descriptor | d | ) | const |
Returns true
iff dart d
is i-free.
dimension
. bool GenericMap::is_free | ( | Dart_const_descriptor | d, |
unsigned int | i | ||
) | const |
Returns true
iff dart d
is i-free.
dimension
. bool GenericMap::is_insertable_cell_1_between_two_cells_2 | ( | Dart_const_descriptor | d1, |
Dart_const_descriptor | d2 | ||
) |
Returns true
iff it is possible to insert a 1-cell in the generic map between d1
and d2
.
This is possible if d1
\( \neq \) d2
and d1
can not be reached from d2
by using some previous
and next
calls.
bool GenericMap::is_insertable_cell_1_in_cell_2 | ( | Dart_const_descriptor | d1, |
Dart_const_descriptor | d2 | ||
) |
Returns true
iff it is possible to insert a 1-cell in the generic map between d1
and d2
.
This is possible if d1
\( \neq \) d2
and d1
can be reached from d2
by using some previous
and next
calls.
bool GenericMap::is_insertable_cell_2_in_cell_3 | ( | InputIterator | afirst, |
InputIterator | alast | ||
) |
Returns true
iff it is possible to insert a 2-cell in the generic map along the path of darts given by the range [afirst,alast)
.
The 2-cell can be inserted iff the ordered list of darts form a closed path of edges inside a same volume.
dimension
\( \geq\) 3.bool GenericMap::is_marked | ( | Dart_const_descriptor | d, |
size_type | m | ||
) | const |
Returns true
iff dart d
is marked for m
.
is_reserved(m)
and d
\( \in \) darts()
. bool GenericMap::is_removable | ( | Dart_const_descriptor | d | ) |
Returns true
iff the i-cell containing d
can be removed.
An i-cell can be removed if i
==dimension
or if i
==dimension
-1 or if i
\( < \) dimension
-1 and the i-cell containing d
is incident to at most two (i+1)-cells.
remove_cell<i>()
bool GenericMap::is_reserved | ( | size_type | m | ) | const |
Returns true
iff m
is a reserved mark of the generic map.
NB_MARKS
. bool GenericMap::is_without_boundary | ( | unsigned int | i | ) | const |
Returns true
iff the generic map is without i-boundary.
The map is without i-boundary if there is no i
-free dart.
dimension
. Dart_descriptor GenericMap::make_combinatorial_hexahedron | ( | ) |
Creates a combinatorial hexahedron (six combinatorial quadrangles 2-sewn together), and adds it in the generic map.
Returns a descriptor on one dart of this combinatorial hexahedron.
dimension
\(\geq\) 2.Dart_descriptor GenericMap::make_combinatorial_polygon | ( | unsigned int | lg | ) |
Creates a combinatorial polygon of length lg
(a cycle of lg
edges), and adds it in the generic map.
Returns a descriptor on one dart of this combinatorial polygon.
dimension
\( \geq\) 1 and lg
\( >\) 0.Dart_descriptor GenericMap::make_combinatorial_tetrahedron | ( | ) |
Creates a combinatorial tetrahedron (four combinatorial triangles 2-sewn together), and adds it in the generic map.
Returns a descriptor on one dart of this combinatorial tetrahedron.
dimension
\( \geq\) 2.Dart_descriptor GenericMap::make_edge | ( | ) |
Creates an isolated edge (two darts sewn to represent one edge and two vertices) and adds it in the generic map.
Returns a descriptor on one dart of this edge.
dimension
\( \geq\) 2.void GenericMap::mark | ( | Dart_const_descriptor | d, |
size_type | m | ||
) | const |
Marks dart d
for m
.
is_reserved(m)
and d
\( \in \) darts()
. void GenericMap::negate_mark | ( | size_type | m | ) | const |
Inverse the mark m
for all the darts of the generic map.
All the marked darts become unmarked and all the unmarked darts become marked.
is_reserved(m)
. size_type GenericMap::number_of_attributes | ( | ) | const |
Returns the number of i-attributes in the generic map.
dimension
, and i-attributes are non void. Returns the number of marked darts for m
.
is_reserved(m)
. Return the number of unmarked darts for m
.
is_reserved(m)
. One_dart_per_cell_range GenericMap::one_dart_per_cell | ( | ) |
Returns a range of one dart of each i-cell in the generic map.
Cells are considered in dim dimension. If i==dim+1, range of one dart of each connected component in the generic map.
dimension
. One_dart_per_cell_const_range GenericMap::one_dart_per_cell | ( | ) | const |
Returns a const range of one dart of each i-cell in the generic map.
Cells are considered in dim dimension. If i==dim+1, const range of one dart of each connected component in the generic map.
One_dart_per_incident_cell_const_range GenericMap::one_dart_per_incident_cell | ( | Dart_const_descriptor | d | ) | const |
Returns a const range of one dart of each i-cell incident to the j-cell containing d
.
The first element in the range points onto d
. Cells are considered in dim dimension. If i==dim+1, consider each connected component instead of each i-cell. If j==dim+1, consider the connected component containing d
instead of the j-cell.
One_dart_per_incident_cell_range GenericMap::one_dart_per_incident_cell | ( | Dart_descriptor | d | ) |
Returns a range of one dart of each i-cell incident to the j-cell containing d
.
The first element in the range points onto d
. Cells are considered in dim dimension. If i==dim+1, consider each connected component instead of each i-cell. If j==dim+1, consider the connected component containing d
instead of the j-cell.
boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & GenericMap::onmerge_function | ( | ) |
Return the current dynamic on-merge function associated with i-attributes.
This is a boost::function returning void and having two references to Attribute_type<i>::type
as parameters. The on-merge function is returned by reference so that we can modify it.
const boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & GenericMap::onmerge_function | ( | ) | const |
Return the current dynamic on-merge function associated with i-attributes, when *this is const.
This is a boost::function returning void and having two references to Attribute_type<i>::type
as parameters.
boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & GenericMap::onsplit_function | ( | ) |
Return the current dynamic on-split function associated with i-attributes.
This is a boost::function returning void and having two references to Attribute_type<i>::type
as parameters. The on-split function is returned by reference so that we can modify it.
const boost::function< void(typename Attribute_type< i >::type &, typename Attribute_type< i >::type &)> & GenericMap::onsplit_function | ( | ) | const |
Return the current dynamic on-split function associated with i-attributes, when *this is const.
This is a boost::function returning void and having two references to Attribute_type<i>::type
as parameters.
GenericMap & GenericMap::operator= | ( | const GenericMap & | bmap | ) |
Assignment operator.
All darts and attributes are duplicated, and the former generic map is deleted.
Dart_const_descriptor GenericMap::opposite | ( | Dart_const_descriptor | d | ) | const |
Returns a const descriptor to a dart belonging to the opposite i-cell than d
.
This dart does not belong to the same 0-cell than d
, nor to the same i-cell, but belongs to the same i-cell than d
for each j, 2 \( \leq \) j \( \leq \) dimension
, j \( \neq \) i.
dimension
. Dart_descriptor GenericMap::opposite | ( | Dart_descriptor | d | ) |
Dart_const_descriptor GenericMap::other_extremity | ( | Dart_const_descriptor | d | ) | const |
Returns a const descriptor to a dart belonging to the other vertex of the edge containing dart d
, when the dart is const (but not necessarily to the same edge).
null_descriptor
if such a dart does not exist.
Dart_descriptor GenericMap::other_extremity | ( | Dart_descriptor | d | ) |
Returns a descriptor to a dart belonging to the other vertex of the edge containing dart d
(but not necessarily to the same edge).
null_descriptor
if such a dart does not exist.
size_type GenericMap::remove_cell | ( | Dart_descriptor | d | ) |
Removes the i-cell containing d
.
Returns the number of darts removed from the generic map.
is_removable<i>(d)
.See examples in Figure 29.11, Figure 29.13 and Figure 29.14.
If are_attributes_automatically_managed()
==true
, if i
\( < \) dimension
, and i+1-attributes are non void
, and if there are two distinct (i+1)-cells around dart d
, Attribute_type<i+1>::type::On_merge
(a1,a2) is called, with a1 the (i+1)-attribute associated to d
, and a2 the (i+1)-attribute associated to \( \beta_{i+1}\)(d). If set, the dynamic on-merge function of i+1-attributes is also called on a1 and a2.
If are_attributes_automatically_managed()
==true
, if a j-cell is disconnected in two j-cells during the operation, and if j-attributes are non void, Attribute_type<j>::type::On_split
(a,a') is called with a the original j-attribute and a' the new j-attribute created due to the disconnection. If set, the dynamic on-split function of j-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the generic map can be no more valid after this operation.
void GenericMap::set_attribute | ( | Dart_descriptor | d, |
Attribute_descriptor< i >::type | a | ||
) |
Associates the i-attribute of all the darts of the i-cell containing d
to a
.
d
\( \in \) darts()
, 0 \( \leq \) i \( \leq \) dimension
, i-attributes are non void, and *ah
\( \in \) attributes<i>()
. void GenericMap::set_automatic_attributes_management | ( | bool | update_attributes | ) |
Set the status of the management of the attributes of the generic map.
After calling set_automatic_attributes_management(false)
, all high level operations will not update non void attributes, until the call of set_automatic_attributes_management(true)
. The call of set_automatic_attributes_management(true)
call the correct_invalid_attributes()
function.
void GenericMap::swap | ( | GenericMap & | bmap | ) |
Swap the current generic map with bmap
.
There is no copy of darts and attributes thus this method runs in constant time.
void GenericMap::unmark | ( | Dart_const_descriptor | d, |
size_type | m | ||
) | const |
Unmarks dart d
for the mark m
.
is_reserved(m)
and d
\( \in \) darts()
. void GenericMap::unmark_all | ( | size_type | m | ) | const |
Unmarks all the darts of the generic map for m
.
is_reserved(m)
.
|
static |
A null descriptor.
This descriptor is not valid and should not be used to access a dart or an attribute.