CombinatorialMap::Attributes
|
|
The tuple of attributes, containing at most
dimension+1 types (one for each possible cell of the combinatorial
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 ith 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, ∀i: k≤i≤dimension,
i-attributes are disabled.
|
|
template<unsigned int i>
|
CombinatorialMap:: Attribute_type<i>::type
|
|
Type of i-attributes, a model of CellAttribute concept.
Attribute_type<i>::type::Dart_handle is equal to Dart_handle, and
Attribute_type<i>::type::Dart_const_handle is equal to Dart_const_handle.
Precondition: | 0≤i≤dimension and i-attributes are non void. |
|
template<unsigned int i>
|
CombinatorialMap:: Attribute_handle<i>::type
|
|
Handle to i-attributes, equal to Dart::Attribute_handle<i>::type.
Precondition: | 0≤i≤dimension and i-attributes are non void. |
|
template<unsigned int i>
|
CombinatorialMap:: Attribute_const_handle<i>::type
|
|
Const handle to i-attributes, equal to Dart::Attribute_const_handle<i>::type.
Precondition: | 0≤i≤dimension and i-attributes are non void. |
|
CombinatorialMap::Dart_range
|
|
Range of all the darts of cm.
This type is a model of Range concept, its iterator type is bidirectional and its value type is Dart.
|
CombinatorialMap::Dart_const_range
|
|
Const range of all the darts of cm.
This type is a model of ConstRange concept, its iterator type is bidirectional and its value type is Dart.
|
|
template<unsigned int i>
|
CombinatorialMap:: Attribute_range<i>::type
|
|
Range of all the i-attributes (which must be non void), with 0≤i≤dimension.
This type is a model of Range concept, its iterator type is bidirectional and its value type is Attribute_type<i>::type.
|
template<unsigned int i>
|
CombinatorialMap:: Attribute_const_range<i>::type
|
|
Const range of all the i-attributes (which must be non void), with 0≤i≤dimension.
This type is a model of ConstRange concept, its iterator type is bidirectional and its value type is Attribute_type<i>::type.
|
|
template<unsigned int ... Beta>
|
CombinatorialMap:: Dart_of_orbit_range
|
|
Range of all the darts of the <Beta...> orbit.
This type is a model of Range concept, its iterator type is forward and its value type is Dart.
|
template<unsigned int ... Beta>
|
CombinatorialMap:: Dart_of_orbit_const_range
|
|
Const range of all the darts of the <Beta...> orbit.
This type is a model of ConstRange concept, its iterator type is forward and its value type is Dart.
|
|
template<unsigned int i,unsigned int dim=dimension>
|
CombinatorialMap:: Dart_of_cell_range
|
|
Range of all the darts of an i-cell in dim dimension
(with 0≤i≤dim+1 and 0≤dim≤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.
|
template<unsigned int i,unsigned int dim=dimension>
|
CombinatorialMap:: Dart_of_cell_const_range
|
|
Const range of all the darts of the i-cell in dim dimension
(with 0≤i≤dim+1 and 0≤dim≤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.
|
|
template<unsigned int i,unsigned int j,unsigned int dim=dimension>
|
CombinatorialMap:: One_dart_per_incident_cell_range
|
|
Range of one dart of each i-cell incident to one j-cell.
Cells are considered in dim dimension
(with 0≤i≤dim+1, 0≤j≤dim+1 and
0≤dim≤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.
|
template<unsigned int i,unsigned int j,unsigned int dim=dimension>
|
CombinatorialMap:: One_dart_per_incident_cell_const_range
|
|
Const range of one dart of each i-cell incident to one j-cell.
Cells are considered in dim dimension
(with 0≤i≤dim+1, 0≤j≤dim+1 and
0≤dim≤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.
|
|
template<unsigned int i,unsigned int dim=dimension>
|
CombinatorialMap:: One_dart_per_cell_range
|
|
Range of one dart of each i-cell of cm.
Cells are considered in dim dimension
(with 0≤i≤dim+1 and 0≤dim≤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.
|
template<unsigned int i,unsigned int dim=dimension>
|
CombinatorialMap:: One_dart_per_cell_const_range
|
|
Const range of one dart of each i-cell of cm.
Cells are considered in dim dimension
(with 0≤i≤dim+1 and 0≤dim≤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.
|
bool
|
cm.is_without_boundary ( unsigned int i) const
|
| |
Returns true iff cm is wihout i-boundary
(i.e. there is no i-free dart).
Precondition: | 1≤i≤dimension. |
|
|
bool
|
cm.is_without_boundary () const
|
Returns true iff cm is without boundary in all dimensions.
|
|
size_type
|
cm.number_of_darts () const
|
Returns the number of darts in cm.
|
|
Dart_handle
|
cm.dart_handle ( Dart& adart)
|
Returns the dart handle of adart.
|
Dart_const_handle
|
cm.dart_handle ( Dart adart) const
|
| |
Returns the dart const handle of adart.
|
|
template <unsigned int i>
|
size_type
|
cm.number_of_attributes () const
|
Returns the number of i-attributes in cm.
Precondition: | 0≤i≤dimension, and i-attributes are non void. |
|
|
template <unsigned int i>
|
bool
|
cm.is_sewable ( Dart_const_handle dh1, Dart_const_handle dh2) const
|
| |
Returns true iff dh1 can be i-sewn with dh2 by
keeping cm valid, i.e. if there is
a bijection f between all the darts of the orbit
D1=〈β1,…,βi-2,βi+2,…,βd〉(dh1) and
D2=〈β1,…,βi-2,βi+2,…,βd〉(dh2)
satisfying: f(dh1)=dh2, and for all e∈D1, for all j∈{1,…,i-2,i+2,…,d},
f(βj(e))=βj-1(f(e)).
Precondition: | 0≤i≤dimension, *dh1∈cm.darts(),
and *dh2∈cm.darts(). |
|
|
std::ostream&
|
cm.display_characteristics ( std::ostream & os) const
|
| |
Displays on os the characteristics of cm: its number of darts,
its number of i-cells, for each i, 0≤i≤CMap::dimension,
and its number of connected components.
|
Example of output for a 3D combinatorial map containing two disjoint
combinatorial tetrahedra:
Dart_range&
|
cm.darts ()
|
Returns a range of all the darts in cm.
|
Dart_const_range&
|
cm.darts () const
|
Returns a const range of all the darts in cm.
|
|
template<unsigned int i>
|
Attribute_range<i>::type &
|
cm.attributes ()
|
Returns a range of all the i-attributes in cm.
Precondition: | 0≤i≤dimension, and i-attributes are non void. |
|
template<unsigned int i>
|
Attribute_const_range<i>::type &
|
cm.attributes () const
|
Returns a const range of all the i-attributes in cm.
Precondition: | 0≤i≤dimension, and i-attributes are non void. |
|
|
template<unsigned int ... Beta>
|
Dart_of_orbit_range
|
cm.darts_of_orbit ( Dart_handle dh)
|
| |
Returns a range of all the darts of the orbit <Beta...>(dh).
Precondition: | *dh∈cm.darts() and Beta... is a
sequence of integers i1,…,ik, such that
0≤i1<i2<…<ik≤dimension, and (i1≠0 or i2≠1). |
|
template<unsigned int ... Beta>
|
Dart_of_orbit_const_range
|
cm.darts_of_orbit ( Dart_const_handle dh) const
|
| |
Returns a const range of all the darts of the orbit <Beta...>(dh).
Precondition: | Same as for the non const version. |
|
|
template<unsigned int i,unsigned int dim=dimension>
|
Dart_of_cell_range
|
cm.darts_of_cell ( Dart_handle dh)
|
| |
Returns a range of all the darts of the i-cell containing dh.
i-cells are considered in dim dimension. If i==dim+1,
range of all the darts of the connected component containing dh.
Precondition: | *dh∈cm.darts(),
0≤i≤dim+1 and 0≤dim≤dimension. |
|
template<unsigned int i,unsigned int dim=dimension>
|
Dart_of_cell_const_range
|
cm.darts_of_cell ( Dart_const_handle dh) const
|
| |
Returns a const range of all the darts of the i-cell containing dh.
i-cells are considered in dim dimension. If i==dim+1,
const range of all the darts of the connected component containing dh.
Precondition: | Same as for the non const version. |
|
|
template<unsigned int i,unsigned int j,unsigned int dim=dimension>
|
One_dart_per_incident_cell_range
|
cm.one_dart_per_incident_cell ( Dart_handle dh)
|
| |
Returns a range of one dart of each i-cell incident to the j-cell
containing dh. 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 dh instead of the j-cell.
Precondition: | *dh∈cm.darts(), 0≤i≤dim+1,
0≤j≤dim+1 and 0≤dim≤dimension. |
|
template<unsigned int i,unsigned int j,unsigned int dim=dimension>
|
One_dart_per_incident_cell_const_range
|
|
cm.one_dart_per_incident_cell ( Dart_const_handle dh) const
|
| |
Returns a const range of one dart of each i-cell incident to the j-cell
containing dh. 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 dh instead of the j-cell.
Precondition: | Same as for the non const version. |
|
|
template<unsigned int i,unsigned int dim=dimension>
|
One_dart_per_cell_range
|
cm.one_dart_per_cell ()
|
Returns a range of one dart of each i-cell in cm.
Cells are considered in dim dimension. If i==dim+1,
range of one dart of each connected component in cm.
Precondition: | 0≤i≤dim+1 and 0≤dim≤dimension. |
|
template<unsigned int i,unsigned int dim=dimension>
|
One_dart_per_cell_const_range
|
cm.one_dart_per_cell () const
|
Returns a const range of one dart of each i-cell in cm.
Cells are considered in dim dimension. If i==dim+1,
const range of one dart of each connected component in cm.
Precondition: | Same as for the non const version. |
|
Dart_handle
|
cm.create_dart ()
|
Creates a new dart in cm, and returns the corresponding handle.
A new dart is initialized to be i-free,
∀i: 0≤i≤dimension, and to have no associated
attribute for each non void attribute.
|
|
void
|
cm.erase_dart ( Dart_handle dh)
|
Removes *dh from cm.
|
|
template<unsigned int i>
|
Attribute_handle<i>::type
|
cm.create_attribute ()
|
Creates a new i-attribute in cm, and returns the corresponding handle.
Precondition: | 0≤i≤dimension, and i-attributes are non void. |
|
|
template<unsigned int i,class A>
|
Attribute_handle<i>::type
|
cm.create_attribute ( A a)
|
Creates a new i-attribute in cm initialized
by the constructor A(a), and returns the corresponding handle. A must be
a type compatible with the information contained in the i-attributes
(compatible means that there is a constructor for the information type
taking an A as parameter).
Precondition: | 0≤i≤dimension, and i-attributes are non void. |
|
|
template <unsigned int i>
|
void
|
cm.erase_attribute ( Attribute_handle<i>::type ah)
|
| |
Removes the i-attribute *ah from cm.
Precondition: | 0≤i≤dimension, i-attributes are non void,
and *ah∈cm.attributes<i>(). |
|
|
template <unsigned int i>
|
void
|
cm.set_attribute ( Dart_handle dh, Attribute_handle<i>::type ah)
|
| |
Associates the i-attribute of all the darts of the i-cell
containing dh to ah.
Precondition: | *dh∈cm.darts(), 0≤i≤dimension,
i-attributes are non void, and *ah∈cm.attributes<i>(). |
|
|
void
|
cm.clear ()
|
Deletes all the darts and all the attributes of cm.
|
template <unsigned int i>
|
void
|
cm.sew ( Dart_handle dh1, Dart_handle dh2, bool update_attributes=true)
|
| |
Links by βi
two by two all the darts of the orbit
D1=〈β1,…,βi-2,βi+2,…,βd〉(dh1) and
D2=〈β0,β2,…,βi-2,βi+2,…,βd〉 (dh2)
such that d2=f(d1), f being the bijection between D1 and D2
satisfying: f(dh1)=dh2, and for all e∈D1, for all
j∈{1,…,i-2,i+2,…,d},
f(βj(e))=βj-1(f(e)).
If update_attributes is true, when necessary, non void
attributes are updated to ensure the validity of cm: for each
j-cells c1 and c2 which are merged into one j-cell during
the sew, the two associated attributes attr1 and attr2 are
considered. If one attribute is
NULL and the other not, the non NULL attribute is associated to all
the darts of the resulting cell. When the two attributes are non
NULL, functor Attribute_type<i>::type::On_merge is called on
the two attributes attr1 and attr2. Then, the attribute
attr1 is associated to all darts of the resulting
j-cell. Finally, attribute attr2 is removed from cm.
Precondition: | cm.is_sewable<i>(dh1,dh2).
If update_attributes is false, non void attributes are
not updated; thus cm can be no more valid after this
modification.
|
|
|
template <unsigned int i>
|
void
|
cm.unsew ( Dart_handle dh, bool update_attributes=true)
|
| |
Unlinks by βi all the darts in the
orbit
〈β1,…,βi-2,βi+2,…,βd〉(dh). If
update_attributes is true, when necessary, non void
attributes are updated to ensure the validity of cm: for each
j-cell c split in two j-cells c1 and c2 by the
operation, if c is associated to a j-attribute attr1, then
this attribute is duplicated into attr2, and all the darts
belonging to c2 are associated with this new attribute. Finally,
the functor Attribute_type<i>::type::On_split is called on the
two attributes attr1 and attr2.
Precondition: | 0≤i≤dimension, *dh∈cm.darts() and
dh is not i-free.
If update_attributes is false, non void attributes are
not updated thus cm can be no more valid after this
modification.
|
|