Update doc of Named Parameters for PMP

This commit is contained in:
Simon Giraudot 2017-12-11 12:08:27 +01:00
parent 65a696adbb
commit 4354c5b0e8
1 changed files with 5 additions and 46 deletions

View File

@ -1,51 +1,8 @@
/*!
\defgroup namedparameters Named Parameters
\defgroup namedparameterspmp Named Parameters for Polygon Mesh Processing
\ingroup PkgPolygonMeshProcessing
\cgalHeading{How to use BGL Optional Named Parameters}
The notion of named parameters was introduced in the BGL.
You can read about it in the following site: http://www.boost.org/libs/graph/doc/bgl_named_params.html.
Named parameters allow the user to specify only those parameters which are really needed, by name, making the parameter ordering unimportant.
Say there is a function `f()` that takes 3 parameters called name, age and gender, and you have variables `n`, `a` and `g` to pass as parameters to that function. Without named parameters, you would call it like this: `f(n,a,g)`, whereas with named parameters, you call it like this: `f(name(n).age(a).gender(g))`.
That is, you give each parameter a name by wrapping it into a function whose name matches that of the parameter. The entire list of named parameters is really a composition of function calls separated by a dot ( .). Thus, if the function takes a mix of mandatory and named parameters, you use a comma to separate the last non-named parameter from the first named parameters, like this:
`f(non_named_par0, non_named_par1, name(n).age(a).gender(g))`
When you use named parameters, the ordering is irrelevant, so `f(name(n).age(a).gender(g))` is equivalent to `f(age(a).gender(g).name(n))`, and you can just omit any named parameter that has a default value.
The sequence of named parameters should start with `CGAL::Polygon_mesh_processing::parameters::`.
`#CGAL::Polygon_mesh_processing::parameters::all_default()` can be used to indicate
that default values of optional named parameters must be used.
\cgalHeading{Example}
See below a sample call of a function that uses the optional BGL named parameters.
\code
// pmesh : polygon mesh with patches to be refined
// faces : the range of faces defining the patches to refine
// faces_out : output iterator into which descriptors of new faces are put
// vertices_out : output iterator into which descriptors of new vertices are put
// vertex_point_map : the property map with the points associated to the vertices of `pmesh`
// density_control_factor : factor to control density of the output mesh
refine(pmesh
, faces
, faces_out
, vertices_out
, CGAL::Polygon_mesh_processing::parameters::vertex_point_map(vpmap)
.density_control_factor(d));
\endcode
\cgalHeading{List of Available Named Parameters}
In this package, all functions optional parameters are implemented as BGL optional named parameters.
In this package, all functions optional parameters are implemented as BGL optional named parameters (see \ref BGLNamedParameters for more information on how to use them).
Since the parameters of the various polygon mesh processing functions defined in this
package are redundant, their long descriptions are centralized below.
@ -58,6 +15,8 @@ In the following, we assume that the following types are provided as template pa
<li>`GeomTraits` a geometric traits class in which constructions are performed and predicates evaluated. Everywhere in this package, a \cgal `Kernel` fulfills the requirements.
</ul>
`#CGAL::Polygon_mesh_processing::parameters::all_default()` can be used to indicate
that default values of optional named parameters must be used.
Here is the list of the named parameters available in this package: