update doc
This commit is contained in:
1 parent
502756c731
commit
b22a844007
1 file changed
+26
-22
@@ -5054,12 +5054,11 @@ Return the number of UTF8 encoded characters in the string.
|
|||||||
|
|
||||||
Return true if the string is a valid UTF8,
|
Return true if the string is a valid UTF8,
|
||||||
false otherwise.
|
false otherwise.
|
||||||
It doesn't check for unique canonical form for UTF8 string,
|
It doesn't check for unique canonical form for UTF8 string.
|
||||||
so it may report 'true' whereas the string is not strictly conforming.
|
|
||||||
|
|
||||||
##### STRING\_CTE(string)
|
##### STRING\_CTE(string)
|
||||||
|
|
||||||
Macro to convert a constant array string into a temporary string\_t variable
|
Macro to convert a constant C string into a temporary string\_t variable
|
||||||
suitable only for being called within a function.
|
suitable only for being called within a function.
|
||||||
|
|
||||||
##### STRING\_OPLIST
|
##### STRING\_OPLIST
|
||||||
@@ -5068,20 +5067,20 @@ The oplist of a string\_t
|
|||||||
|
|
||||||
##### BOUNDED\_STRING\_DEF(name, size)
|
##### BOUNDED\_STRING\_DEF(name, size)
|
||||||
|
|
||||||
aka char[N+1]
|
aka char[size+1]
|
||||||
TODO: Document the API.
|
TODO: Document the API.
|
||||||
|
|
||||||
|
|
||||||
### M-CORE
|
### M-CORE
|
||||||
|
|
||||||
This header is the internal core of M\*LIB, providing a lot of functionality
|
This header is the internal core of M\*LIB, providing a lot of functionality
|
||||||
by extending a lot the preprocessing capability.
|
by extending the preprocessing capability.
|
||||||
Working with these macros is not easy and the developer needs to know
|
Working with these macros is not easy and the developer needs to know
|
||||||
how the macro preprocessing works.
|
how the macro preprocessing works.
|
||||||
It also adds the needed macro for handling the oplist.
|
It also adds the needed macro for handling the oplist.
|
||||||
As a consequence, it is needed by all other header files.
|
As a consequence, it is needed by all other header files.
|
||||||
|
|
||||||
Some macros are using recursion to work.
|
A few macros are using recursion to work.
|
||||||
This is not an easy feat to do as it needs some tricks to work (see
|
This is not an easy feat to do as it needs some tricks to work (see
|
||||||
reference).
|
reference).
|
||||||
This still work well with only one major limitation: it can not be chained.
|
This still work well with only one major limitation: it can not be chained.
|
||||||
@@ -5157,7 +5156,7 @@ at macro processing stage, not at compiler stage).
|
|||||||
##### M\_INV(cond)
|
##### M\_INV(cond)
|
||||||
|
|
||||||
Inverse 0 into 1 and 1 into 0. It is undefined if cond is not 0 or 1
|
Inverse 0 into 1 and 1 into 0. It is undefined if cond is not 0 or 1
|
||||||
(use M\_BOOL to convert).
|
(You could use M\_BOOL to convert).
|
||||||
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
||||||
at macro processing stage, not at compiler stage).
|
at macro processing stage, not at compiler stage).
|
||||||
|
|
||||||
@@ -5165,7 +5164,7 @@ at macro processing stage, not at compiler stage).
|
|||||||
|
|
||||||
Perform a logical 'and' between cond1 and cond2.
|
Perform a logical 'and' between cond1 and cond2.
|
||||||
cond1 and cond2 shall be 0 or 1.
|
cond1 and cond2 shall be 0 or 1.
|
||||||
(You should use M\_bool to convert this parameter otherwise).
|
(You could use M\_bool to convert).
|
||||||
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
||||||
at macro processing stage, not at compiler stage).
|
at macro processing stage, not at compiler stage).
|
||||||
|
|
||||||
@@ -5173,7 +5172,7 @@ at macro processing stage, not at compiler stage).
|
|||||||
|
|
||||||
Perform a logical 'or' between cond1 and cond2.
|
Perform a logical 'or' between cond1 and cond2.
|
||||||
cond1 and cond2 shall be 0 or 1.
|
cond1 and cond2 shall be 0 or 1.
|
||||||
(You should use M\_bool to convert this parameter otherwise).
|
(You could use M\_bool to convert).
|
||||||
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
||||||
at macro processing stage, not at compiler stage).
|
at macro processing stage, not at compiler stage).
|
||||||
|
|
||||||
@@ -5190,22 +5189,22 @@ x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].
|
|||||||
##### M\_LESS\_THAN\_P(x, y)
|
##### M\_LESS\_THAN\_P(x, y)
|
||||||
|
|
||||||
Return 1 if x < y, 0 otherwise (resolution is performed at preprocessing time).
|
Return 1 if x < y, 0 otherwise (resolution is performed at preprocessing time).
|
||||||
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].x
|
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].
|
||||||
|
|
||||||
##### M\_LESS_OR\_EQUAL\_P(x, y)
|
##### M\_LESS_OR\_EQUAL\_P(x, y)
|
||||||
|
|
||||||
Return 1 if x <= y, 0 otherwise (resolution is performed at preprocessing time).
|
Return 1 if x <= y, 0 otherwise (resolution is performed at preprocessing time).
|
||||||
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].x
|
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].
|
||||||
|
|
||||||
##### M\_GREATER_OR\_EQUAL\_P(x, y)
|
##### M\_GREATER_OR\_EQUAL\_P(x, y)
|
||||||
|
|
||||||
Return 1 if x >= y, 0 otherwise (resolution is performed at preprocessing time).
|
Return 1 if x >= y, 0 otherwise (resolution is performed at preprocessing time).
|
||||||
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].x
|
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].
|
||||||
|
|
||||||
##### M\_GREATER_THAN\_P(x, y)
|
##### M\_GREATER_THAN\_P(x, y)
|
||||||
|
|
||||||
Return 1 if x > y, 0 otherwise (resolution is performed at preprocessing time).
|
Return 1 if x > y, 0 otherwise (resolution is performed at preprocessing time).
|
||||||
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].x
|
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].
|
||||||
|
|
||||||
##### M\_COMMA\_P(arglist)
|
##### M\_COMMA\_P(arglist)
|
||||||
|
|
||||||
@@ -5227,7 +5226,7 @@ It also won't work for expression starting with ')'
|
|||||||
|
|
||||||
##### M\_PARENTHESIS\_P(expression)
|
##### M\_PARENTHESIS\_P(expression)
|
||||||
|
|
||||||
Return 1 if the argument 'expression' starts a parenthesis and ends it
|
Return 1 if the argument 'expression' starts with a parenthesis and ends with it
|
||||||
(like '(...)'), 0 otherwise.
|
(like '(...)'), 0 otherwise.
|
||||||
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
Return a pre-processing token corresponding to this value (meaning it is evaluated
|
||||||
at macro processing stage, not at compiler stage).
|
at macro processing stage, not at compiler stage).
|
||||||
@@ -5266,8 +5265,8 @@ Return the pre-processing token 'action\_if\_true' if 'cond' is true,
|
|||||||
action\_if\_false otherwise (meaning it is evaluated
|
action\_if\_false otherwise (meaning it is evaluated
|
||||||
at macro processing stage, not at compiler stage).
|
at macro processing stage, not at compiler stage).
|
||||||
|
|
||||||
cond shall be a 0 or 1 as a preprocessing constant.
|
'cond' shall be a 0 or 1 as a preprocessing constant.
|
||||||
(You should use M\_bool to convert this parameter otherwise).
|
(You could use M\_bool to convert).
|
||||||
|
|
||||||
##### M\_IF\_EMPTY(cond)(action\_if\_true, action\_if\_false)
|
##### M\_IF\_EMPTY(cond)(action\_if\_true, action\_if\_false)
|
||||||
|
|
||||||
@@ -5275,14 +5274,14 @@ Return the pre-processing token 'action\_if\_true' if 'cond' is empty,
|
|||||||
action\_if\_false otherwise (meaning it is evaluated
|
action\_if\_false otherwise (meaning it is evaluated
|
||||||
at macro processing stage, not at compiler stage).
|
at macro processing stage, not at compiler stage).
|
||||||
|
|
||||||
cond shall be a preprocessing constant equal to 0 or 1.
|
'cond' shall be a preprocessing constant equal to 0 or 1.
|
||||||
(You should use M\_bool to convert this parameter otherwise).
|
(You could use M\_bool to convert).
|
||||||
|
|
||||||
##### M\_DELAY1(expr)
|
##### M\_DELAY1(expr)
|
||||||
##### M\_DELAY2(expr)
|
##### M\_DELAY2(expr)
|
||||||
##### M\_DELAY3(expr)
|
##### M\_DELAY3(expr)
|
||||||
##### M\_DELAY4(expr)
|
##### M\_DELAY4(expr)
|
||||||
##### M\_ID
|
##### M\_ID(...)
|
||||||
|
|
||||||
Delay the evaluation by 1, 2, 3 or 4 steps.
|
Delay the evaluation by 1, 2, 3 or 4 steps.
|
||||||
This is necessary to write macros that are recursive.
|
This is necessary to write macros that are recursive.
|
||||||
@@ -5428,6 +5427,8 @@ Can not be chained.
|
|||||||
==>
|
==>
|
||||||
f(a, b) f(c, d)
|
f(a, b) f(c, d)
|
||||||
|
|
||||||
|
OBSOLETE macro
|
||||||
|
|
||||||
##### M\_REDUCE(funcMap, funcReduce, args...)
|
##### M\_REDUCE(funcMap, funcReduce, args...)
|
||||||
|
|
||||||
Map the macro funcMap to all given arguments 'args'
|
Map the macro funcMap to all given arguments 'args'
|
||||||
@@ -5458,7 +5459,7 @@ and reduce all theses computation with the macro 'funcReduce'.
|
|||||||
|
|
||||||
##### M\_SEQ(init, end)
|
##### M\_SEQ(init, end)
|
||||||
|
|
||||||
Generate a sequence of number from 'init' to 'end'
|
Generate a sequence of number from 'init' to 'end' (included)
|
||||||
|
|
||||||
M_SEQ(1, 6)
|
M_SEQ(1, 6)
|
||||||
==>
|
==>
|
||||||
@@ -5655,6 +5656,7 @@ It can be used to generate less predictable hash values at run-time,
|
|||||||
which may protect against
|
which may protect against
|
||||||
[DOS dictionary attacks](https://events.ccc.de/congress/2011/Fahrplan/attachments/2007_28C3_Effective_DoS_on_web_application_platforms.pdf).
|
[DOS dictionary attacks](https://events.ccc.de/congress/2011/Fahrplan/attachments/2007_28C3_Effective_DoS_on_web_application_platforms.pdf).
|
||||||
It shall be unique for a running instance of M\*LIB.
|
It shall be unique for a running instance of M\*LIB.
|
||||||
|
|
||||||
Note that using a random seed is not enough to protect efficiently against
|
Note that using a random seed is not enough to protect efficiently against
|
||||||
such attacks. A cryptography secure hash may be also needed.
|
such attacks. A cryptography secure hash may be also needed.
|
||||||
If it is not defined, the default is to use the value 0,
|
If it is not defined, the default is to use the value 0,
|
||||||
@@ -5690,8 +5692,8 @@ limb can be 0.
|
|||||||
##### size\_t m\_core\_hash (const void *str, size\_t length)
|
##### size\_t m\_core\_hash (const void *str, size\_t length)
|
||||||
|
|
||||||
Compute the hash of the binary representation of the data pointer by 'str'
|
Compute the hash of the binary representation of the data pointer by 'str'
|
||||||
of length 'length'. 'str' shall have the same alignment restriction
|
of length 'length'. 'str' shall have the maximum alignment restriction
|
||||||
than a 'size\_t'.
|
of all types that size is less or equal than 'length'.
|
||||||
|
|
||||||
|
|
||||||
#### OPERATORS Functions
|
#### OPERATORS Functions
|
||||||
@@ -5830,6 +5832,8 @@ it specifies that the first argument of the method shall be a pointer
|
|||||||
to the destination type, rather than the type.
|
to the destination type, rather than the type.
|
||||||
See M\_API\_2 for an equivalent implementation.
|
See M\_API\_2 for an equivalent implementation.
|
||||||
|
|
||||||
|
OBSOLETE MACRO
|
||||||
|
|
||||||
##### M\_DO\_INIT\_MOVE(oplist, dest, src)
|
##### M\_DO\_INIT\_MOVE(oplist, dest, src)
|
||||||
##### M\_DO\_MOVE(oplist, dest, src)
|
##### M\_DO\_MOVE(oplist, dest, src)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user