Update doc
This commit is contained in:
1 parent
4ab2615a1c
commit
e1a4d359a2
1 file changed
+4
-2
@@ -379,7 +379,9 @@ int main(void) {
|
|||||||
As the `mpz_t` type needs proper initialization, copy and destroy functions
|
As the `mpz_t` type needs proper initialization, copy and destroy functions
|
||||||
we need to tell to the container how to handle such a type.
|
we need to tell to the container how to handle such a type.
|
||||||
This is done by giving it the oplist associated to the type.
|
This is done by giving it the oplist associated to the type.
|
||||||
An oplist is an associative array where the operators are associated to methods.
|
An oplist is an associative array where an operator is associated to its associated method.
|
||||||
|
This associative array only exists in the preprocessing step of the compilation,
|
||||||
|
resulting in no runtime cost and strict aliasing check.
|
||||||
|
|
||||||
In the example, we tell to the container to use
|
In the example, we tell to the container to use
|
||||||
the `mpz_init` function for the `INIT` operator of the type (aka constructor),
|
the `mpz_init` function for the `INIT` operator of the type (aka constructor),
|
||||||
@@ -448,7 +450,7 @@ int main(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
There are two ways a container can known what is the oplist of a type:
|
There are two ways a container can known which oplist is to be used for the type:
|
||||||
|
|
||||||
* either the oplist is passed explicitly for each definition of container and for the `M_LET` and `M_EACH` macros,
|
* either the oplist is passed explicitly for each definition of container and for the `M_LET` and `M_EACH` macros,
|
||||||
* or the oplist is registered globally by defining a new macro starting with the prefix `M_OPL_` and finishing with the name of type (don't forget the parenthesis and the suffix _t if needed). The macros performing the definition of container and the `M_LET` and `M_EACH` will test if such macro is defined. If it is defined, it will be used. Otherwise, default methods are used.
|
* or the oplist is registered globally by defining a new macro starting with the prefix `M_OPL_` and finishing with the name of type (don't forget the parenthesis and the suffix _t if needed). The macros performing the definition of container and the `M_LET` and `M_EACH` will test if such macro is defined. If it is defined, it will be used. Otherwise, default methods are used.
|
||||||
|
|||||||
Reference in new issue
Block a user