mirror of https://github.com/CGAL/cgal
Remove macro used for the reviewing step.
This commit is contained in:
parent
447728692d
commit
233f757148
|
|
@ -6,9 +6,7 @@ namespace CGAL {
|
|||
|
||||
The class `Combinatorial_map` represents a <I>d</I>D combinatorial map.
|
||||
|
||||
\cgalModifBegin
|
||||
Two versions exist: one where Darts and non void attributes are stored in memory using `Compact_container`, using `Alloc` as allocator, and use handles as descriptors; a second one where Darts and non void attributes are stored in an internal std::vector like data-structure, and use indices as descriptors. The choice between the two versions is done through the item class.
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalModels `CombinatorialMap`
|
||||
|
||||
|
|
|
|||
|
|
@ -168,12 +168,8 @@ Considering these different advantages and drawbacks, you can choose to use gene
|
|||
|
||||
The diagram in \cgalFigureRef{fig_cmap_diagramme_class} shows the different classes of the package. `Combinatorial_map` is the main class (see Section \ref sseccombinatorialmap "Combinatorial Maps"). It allows to manage darts and attributes (see Section \ref ssecattributes "Cell Attributes"). Users can customize a combinatorial map thanks to an items class (see Section \ref ssecitem "Combinatorial Map Items"), which defines the information associated with darts and the attribute types. These types may be different for different dimensions, and they may also be void (note that the main concepts of `GenericMap`, `GenericMapItems` and `CellAttribute` are shared between combinatorial maps and generalized maps).
|
||||
|
||||
\cgalModifBegin
|
||||
|
||||
The darts and attributes are accessed through <I>descriptors</I> (either Indices or Handles). A handle is a model of the `Handle` concept, thus supporting the two dereference operators `operator*` and `operator->`. All handles are model of `LessThanComparable` and `Hashable`, that is they can be used as keys in containers such as `std::map` and `std::unordered_map`. An index is a model of the `Index` concept, which is mainly an integer which is convertible from and to std::size_t. Indices can be used as index into vectors which store properties (cf. one example in Section \ref ssecexample3DCMWI "3D Combinatorial Map using Indices").
|
||||
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalFigureBegin{fig_cmap_diagramme_class,cmap_diagramme_class.svg}
|
||||
UML diagram of the main classes of the package. k is the number of non void attributes.
|
||||
\cgalFigureEnd
|
||||
|
|
@ -232,8 +228,6 @@ typedef CGAL::Combinatorial_map<3, Example_items_3> Example_custom_cmap3;
|
|||
|
||||
\endcode
|
||||
|
||||
\cgalModifBegin
|
||||
|
||||
\subsection ssecCMapIndicesHandles Indices or Handles
|
||||
|
||||
By default, descriptors used to access darts and attributes are handles, and the darts and attributes are stored in a `Compact_container`. To use the index version, you should define the type `Use_index` to `CGAL::Tag_true` in the item class like in the code below. You can also define the type `Index_type` used to store indices (`std::uint32_t` by default when this type is not defined).
|
||||
|
|
@ -257,11 +251,9 @@ typedef CGAL::Combinatorial_map<3, Items_with_indices> Cmap3_with_index;
|
|||
|
||||
The two main interests of the index version comparing to the handle ones are: (1) it has a lower memory footprint than a 64-bit pointer based version; (2) indices are contiguous, they can be used as index into vectors which store properties. The main interest of the handle version is the fact that handles can be dereferenced, which can simplify some code.
|
||||
|
||||
\cgalModifEnd
|
||||
|
||||
\section Combinatorial_mapIteration Iteration and Creation Operations
|
||||
|
||||
An important operation in combinatorial maps consists in iterating over specific subsets of darts or over attributes. For that, several <I>ranges</I> are offered (see Section \ref ssecrange "Iterating over Orbits, Cells, and Attributes"). A range is a model of the `Range` concept, thus supporting the two methods `begin()` and `end()` allowing to iterate over all the elements in the range. Several functions allow to create specific configurations of darts into a combinatorial map (see Section \ref ssecconstruction "Construction Operations"). Darts can be marked during operations, for example when performing a breadth-first search traversal, thanks to Boolean marks (see Sections \ref ssecadvmarks "Boolean Marks"). \tred{In the following, we denote by `d0`, `d1`, `d2` for dart descriptors, and identify in explanations the descriptor and the object it describes.}
|
||||
An important operation in combinatorial maps consists in iterating over specific subsets of darts or over attributes. For that, several <I>ranges</I> are offered (see Section \ref ssecrange "Iterating over Orbits, Cells, and Attributes"). A range is a model of the `Range` concept, thus supporting the two methods `begin()` and `end()` allowing to iterate over all the elements in the range. Several functions allow to create specific configurations of darts into a combinatorial map (see Section \ref ssecconstruction "Construction Operations"). Darts can be marked during operations, for example when performing a breadth-first search traversal, thanks to Boolean marks (see Sections \ref ssecadvmarks "Boolean Marks"). In the following, we denote by `d0`, `d1`, `d2` for dart descriptors, and identify in explanations the descriptor and the object it describes.
|
||||
|
||||
\subsection ssecrange Iterating over Orbits, Cells, and Attributes
|
||||
|
||||
|
|
@ -510,16 +502,12 @@ Lastly we remove the dynamic onmerge functor (step 7). This is done by initializ
|
|||
|
||||
\cgalExample{Combinatorial_map/map_3_dynamic_onmerge.cpp}
|
||||
|
||||
\cgalModifBegin
|
||||
|
||||
\subsection ssecexample3DCMWI 3D Combinatorial Map using Indices
|
||||
|
||||
In this example, a 3-dimensional combinatorial map is used, but using indices instead of handles. Two vectors are created to store some external information associated with darts and 3-attributes. Since descriptors are indices, they can directly be used to access elements of the vector.
|
||||
|
||||
\cgalExample{Combinatorial_map/map_3_index.cpp}
|
||||
|
||||
\cgalModifEnd
|
||||
|
||||
\section sec_definition Mathematical Definitions
|
||||
|
||||
The initial definition of combinatorial map in any dimension is given in \cgalCite{cgal:l-tmbrc-91}, \cgalCite{l-ndgcm-94}. But it allows only to represent objects without boundaries. This definition was extended \cgalCite{cgal:pabl-cco-07}, \cgalCite{cgal:d-ccccg-10} in order to allow to represent objects with boundaries, based on the notions of partial permutations and partial involutions. See also the book \cgalCite{cgal:dl-cmeds-14} which regroups many definitions, operations and algorithms about combinatorial and generalized maps.
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ typedef unspecified_type Dart;
|
|||
typedef unspecified_type Dart_descriptor;
|
||||
|
||||
/*!
|
||||
%Dart const descriptor type. \tred{When using indices, Dart_const_descriptor is equal to Dart_descriptor.}
|
||||
%Dart const descriptor type. When using indices, Dart_const_descriptor is equal to Dart_descriptor.
|
||||
*/
|
||||
typedef unspecified_type Dart_const_descriptor;
|
||||
|
||||
|
|
@ -74,15 +74,11 @@ The number of available Boolean marks of the generic map.
|
|||
*/
|
||||
static const size_type NB_MARKS;
|
||||
|
||||
\cgalModifBegin
|
||||
|
||||
/*!
|
||||
A null descriptor. This descriptor is not valid and should not be used to access a dart or an attribute.
|
||||
*/
|
||||
static unspecified_type null_descriptor;
|
||||
|
||||
\cgalModifEnd
|
||||
|
||||
/// @}
|
||||
|
||||
/// \name Types for Attributes
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
\ingroup PkgCombinatorialMapsConcepts
|
||||
\cgalConcept
|
||||
|
||||
The concept `GenericMapItems` allows to customize a <I>d</I>D generic map by choosing the information associated with darts, by enabling and disabling some attributes, \tred{and by choosing to use indices or handles}. For that, it defines an inner class template named \link GenericMapItems::Dart_wrapper `Dart_wrapper`\endlink, with one template parameter, `Map`, a model of the `GenericMap` concept. This inner class can define the two types `%Dart_info` and `%Attributes`.
|
||||
The concept `GenericMapItems` allows to customize a <I>d</I>D generic map by choosing the information associated with darts, by enabling and disabling some attributes, and by choosing to use indices or handles. For that, it defines an inner class template named \link GenericMapItems::Dart_wrapper `Dart_wrapper`\endlink, with one template parameter, `Map`, a model of the `GenericMap` concept. This inner class can define the two types `%Dart_info` and `%Attributes`.
|
||||
|
||||
\cgalHasModel \link CGAL::Generic_map_min_items `CGAL::Generic_map_min_items`\endlink
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ The concept `GenericMapItems` allows to customize a <I>d</I>D generic map by cho
|
|||
|
||||
\cgalHeading{Example}
|
||||
|
||||
The following examples show two possible models of the `GenericMapItems` concept: the first one for a generic map without dart information, nor enabled attributes, the second one for a generic map \tred{that uses std::uint16_t as indices,} with a `double` associated with each dart, and edge attributes enabled, and associated with a \link CGAL::Cell_attribute `Cell_attribute`\endlink containing an `int`.
|
||||
The following examples show two possible models of the `GenericMapItems` concept: the first one for a generic map without dart information, nor enabled attributes, the second one for a generic map that uses std::uint16_t as indices, with a `double` associated with each dart, and edge attributes enabled, and associated with a \link CGAL::Cell_attribute `Cell_attribute`\endlink containing an `int`.
|
||||
|
||||
\code{.cpp}
|
||||
struct Exemple_Item_1
|
||||
|
|
@ -37,16 +37,12 @@ The following examples show two possible models of the `GenericMapItems` concept
|
|||
class GenericMapItems {
|
||||
public:
|
||||
/*!
|
||||
\cgalModifBegin
|
||||
If `Use_index` is `CGAL::Tag_true`, uses indices as descriptors. Otherwise (if this type is not defined or different from `CGAL::Tag_true`), use handles.
|
||||
\cgalModifEnd
|
||||
*/
|
||||
typedef unspecified_type Use_index;
|
||||
|
||||
/*!
|
||||
\cgalModifBegin
|
||||
Number type used for indices when Use_index is CGAL::Tag_true. By default, use std::uint32_t.
|
||||
\cgalModifEnd
|
||||
*/
|
||||
typedef unspecified_type Index_type;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,9 +6,7 @@ namespace CGAL {
|
|||
|
||||
The class `Generalized_map` represents a <I>d</I>D generalized map.
|
||||
|
||||
\cgalModifBegin
|
||||
Two versions exist: one where darts and non void attributes are stored in memory using `Compact_container`, using `Alloc` as allocator, and use handles as descriptors; a second one where darts and non void attributes are stored in an internal `std::vector` like data-structure, and use indices as descriptors. The choice between the two versions is done through the item class.
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalModels `GeneralizedMap`
|
||||
|
||||
|
|
|
|||
|
|
@ -167,12 +167,8 @@ Considering these different advantages and drawbacks, you can choose to use gene
|
|||
|
||||
The diagram in \cgalFigureRef{fig_gmap_diagramme_class} shows the different classes of the package. `Generalized_map` is the main class (see Section \ref ssecgeneralizedmap "Generalized Maps"). It allows to manage darts and attributes (see Section \ref ssecattributesgmap "Cell Attributes"). Users can customize a generalized map thanks to an items class (see Section \ref ssecitemgmap "Generalized Map Items"), which defines the information associated with darts and the attribute types. These types may be different for different dimensions, and they may also be void (note that the main concepts of `GenericMap`, `GenericMapItems` and `CellAttribute` are shared between combinatorial maps and generalized maps).
|
||||
|
||||
\cgalModifBegin
|
||||
|
||||
The darts and attributes are accessed through <I>descriptors</I> (either Indices or Handles). A handle is a model of the `Handle` concept, thus supporting the two dereference operators `operator*` and `operator->`. All handles are model of `LessThanComparable` and `Hashable`, that is they can be used as keys in containers such as `std::map` and `std::unordered_map`. An index is a model of the `Index` concept, which is mainly an integer which is convertible from and to `std::size_t`. Indices can be used as index into vectors which store properties (cf. one example in Section \ref ssecexample3DGMWI "3D Generalized Map using Indices").
|
||||
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalFigureBegin{fig_gmap_diagramme_class,gmap_diagramme_class.svg}
|
||||
UML diagram of the main classes of the package. k is the number of non void attributes.
|
||||
\cgalFigureEnd
|
||||
|
|
@ -231,8 +227,6 @@ typedef CGAL::Generalized_map<3, Example_items_3> Example_custom_gmap3;
|
|||
|
||||
\endcode
|
||||
|
||||
\cgalModifBegin
|
||||
|
||||
\subsection ssecGMapIndicesHandles Indices or Handles
|
||||
|
||||
By default, descriptors used to access darts and attributes are handles, and the darts and attributes are stored in a `Compact_container`. To use the index version, you should define the type `Use_index` equal to `CGAL::Tag_true` in the item class like in the code below. You can also define the type `Index_type` used to store indices (std::uint32_t by default when this type is not defined).
|
||||
|
|
@ -256,11 +250,9 @@ typedef CGAL::Generalized_map<3, Items_with_indices> Gmap3_with_index;
|
|||
|
||||
The two main interests of the index version comparing to the handle ones are: (1) it has a lower memory footprint than a 64-bit pointer based version; (2) indices are contiguous, they can be used as index into vectors which store properties. The main interest of the handle version is the fact that handles can be dereferenced, which can simplify some code.
|
||||
|
||||
\cgalModifEnd
|
||||
|
||||
\section Generalized_mapIteration Iteration and Creation Operations
|
||||
|
||||
An important operation in generalized maps consists in iterating over specific subsets of darts or over attributes. For that, several <I>ranges</I> are offered (see Section \ref ssecrange "Iterating over Orbits, Cells, and Attributes"). A range is a model of the `Range` concept, thus supporting the two methods `begin()` and `end()` allowing to iterate over all the elements in the range. Several functions allow to create specific configurations of darts into a generalized map (see Section \ref ssecconstructiongmap "Construction Operations"). Darts can be marked during operations, for example when performing a breadth-first search traversal, thanks to Boolean marks (see Sections \ref ssecadvmarksgmap "Boolean Marks"). \tred{In the following, we denote by `d0`, `d1`, `d2` for dart descriptors, and identify in the explanations the descriptor and the object it describes.}
|
||||
An important operation in generalized maps consists in iterating over specific subsets of darts or over attributes. For that, several <I>ranges</I> are offered (see Section \ref ssecrange "Iterating over Orbits, Cells, and Attributes"). A range is a model of the `Range` concept, thus supporting the two methods `begin()` and `end()` allowing to iterate over all the elements in the range. Several functions allow to create specific configurations of darts into a generalized map (see Section \ref ssecconstructiongmap "Construction Operations"). Darts can be marked during operations, for example when performing a breadth-first search traversal, thanks to Boolean marks (see Sections \ref ssecadvmarksgmap "Boolean Marks"). In the following, we denote by `d0`, `d1`, `d2` for dart descriptors, and identify in the explanations the descriptor and the object it describes.
|
||||
|
||||
\subsection ssecrangegmap Iterating over Orbits, Cells, and Attributes
|
||||
|
||||
|
|
@ -532,17 +524,12 @@ Lastly we remove the dynamic onmerge functor (step 7). This is done by initializ
|
|||
|
||||
\cgalExample{Generalized_map/gmap_3_dynamic_onmerge.cpp}
|
||||
|
||||
\cgalModifBegin
|
||||
|
||||
\subsection ssecexample3DGMWI 3D Generalized Map using Indices
|
||||
|
||||
In this example, a 3-dimensional generalized map is used, but using indices instead of handles. Two vectors are created to store some external information associated with darts and 3-attributes. Since descriptors are indices, they can directly be used to access elements of the vector.
|
||||
|
||||
\cgalExample{Generalized_map/gmap_3_index.cpp}
|
||||
|
||||
\cgalModifEnd
|
||||
|
||||
|
||||
\section sec_definition_gmap Mathematical Definitions
|
||||
|
||||
The definition of generalized map in any dimension is given in \cgalCite{cgal:l-tmbrc-91}, \cgalCite{l-ndgcm-94}. See also the book \cgalCite{cgal:dl-cmeds-14} which regroups many definitions, operations and algorithms about combinatorial and generalized maps.
|
||||
|
|
|
|||
|
|
@ -5,9 +5,7 @@ namespace CGAL {
|
|||
\ingroup PkgLinearCellComplexClasses
|
||||
|
||||
The class `Linear_cell_complex_for_combinatorial_map` represents a linear cell complex in dimension `d`, in an ambient space of dimension `d2`, using a combinatorial map as underlying combinatorial data-structure.
|
||||
\cgalModifBegin
|
||||
Like for `Combinatorial_map`, two versions exist: one where Darts and non void attributes are stored in memory using `Compact_container`, using `Alloc` as allocator, and use handles as descriptors; a second one where Darts and non void attributes are stored in an internal std::vector like data-structure, and use indices as descriptors. The choice between the two versions is done through the item class.
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalModels `LinearCellComplex`
|
||||
\cgalModels `CombinatorialMap`
|
||||
|
|
|
|||
|
|
@ -5,9 +5,7 @@ namespace CGAL {
|
|||
\ingroup PkgLinearCellComplexClasses
|
||||
|
||||
The class `Linear_cell_complex_for_generalized_map` represents a linear cell complex in dimension `d`, in an ambient space of dimension `d2`, using a generalized map as underlying combinatorial data-structure.
|
||||
\cgalModifBegin
|
||||
Like for `GeneralizedMap`, two versions exist: one where Darts and non void attributes are stored in memory using `Compact_container`, using `Alloc` as allocator, and use handles as descriptors; a second one where Darts and non void attributes are stored in an internal std::vector like data-structure, and use indices as descriptors. The choice between the two versions is done through the item class.
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalModels `LinearCellComplex`
|
||||
\cgalModels `GeneralizedMap`
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ The class `Linear_cell_complex_traits<d,K>` is a model of `LinearCellComplexTrai
|
|||
\subsection Linear_cell_complexLinearCellComplexItems Linear Cell Complex Items
|
||||
\anchor sseclccitem
|
||||
|
||||
The `LinearCellComplexItems` concept refines the `GenericMapItems` concept by adding the requirement that 0-attributes are enabled, and associated with a type of attribute being a model of the `CellAttributeWithPoint` concept. \cgalModifBegin Like for combinatorial and generalized maps, it is possible to use indices instead of handles as descriptors, by defining CGAL::Tag_true for Use_index type in the item class. \cgalModifEnd
|
||||
The `LinearCellComplexItems` concept refines the `GenericMapItems` concept by adding the requirement that 0-attributes are enabled, and associated with a type of attribute being a model of the `CellAttributeWithPoint` concept. Like for combinatorial and generalized maps, it is possible to use indices instead of handles as descriptors, by defining CGAL::Tag_true for Use_index type in the item class.
|
||||
|
||||
The class `Linear_cell_complex_min_items<d>` is a model of `LinearCellComplexItems`. It defines `void` as information associated to darts, and instances of `Cell_attribute_with_point` (which contain no information) associated to each vertex. All other attributes are `void`.
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ Lastly, the function \link ::import_from_plane_graph `import_from_plane_graph(lc
|
|||
\subsection Linear_cell_complexModificationOperations Modification Operations
|
||||
\anchor ssecmodifop
|
||||
|
||||
Some methods are defined in `LinearCellComplex` to modify a linear cell complex and update the vertex attributes. \tred{In the following, we denote by `d0`, `d1`, `d2` for three dart descriptors.}
|
||||
Some methods are defined in `LinearCellComplex` to modify a linear cell complex and update the vertex attributes. In the following, we denote by `d0`, `d1`, `d2` for three dart descriptors.
|
||||
|
||||
\cgalFigureBegin{fig_lcc_insert_vertex,lcc_insert_vertex.svg}
|
||||
Example of \link LinearCellComplex::insert_barycenter_in_cell `insert_barycenter_in_cell<1>`\endlink and `remove_cell<0>` operations. <B>Left</B>: Initial linear cell complex. <B>Right</B>: After the insertion of a point in the barycenter of the 1-cell containing dart <I>d1</I>. Now if we remove the 0-cell containing dart <I>d2</I>, we obtain a linear cell complex isomorphic to the initial one.
|
||||
|
|
|
|||
Loading…
Reference in New Issue