Clarify should usage in the documentation.

This commit is contained in:
Patrick Pelissier committed 2020-10-17 13:07:41 +02:00
1 parent 22f595c015
commit 1a46c0cd3f
1 file changed
+8 -5
+8 -5
View File
@@ -77,6 +77,7 @@ but rather read the examples or the tests.
In this documentation, 'shall' will be used to indicate a user constraint that is In this documentation, 'shall' will be used to indicate a user constraint that is
mandatory to follow under penalty of undefined behavior. mandatory to follow under penalty of undefined behavior.
'should' will be used to indicate a recommendation to the user.
Components Components
---------- ----------
@@ -666,8 +667,8 @@ handling non-trivial memory errors can be hard,
testing them is even harder but still mandatory to avoid security holes. testing them is even harder but still mandatory to avoid security holes.
So the default behavior is rather conservative. So the default behavior is rather conservative.
Moreover a good program design should handle a process entire failure (using for examples multiple Indeed, a good design should handle a process entire failure (using for examples multiple
processes for doing the job) so even if a process stops, it should be recovered. processes for doing the job) so that even if a process stops, it should be recovered.
See [here](http://joeduffyblog.com/2016/02/07/the-error-model/) for more See [here](http://joeduffyblog.com/2016/02/07/the-error-model/) for more
information about why abandonment is good software practice. information about why abandonment is good software practice.
@@ -705,6 +706,7 @@ The list of errors it can generate:
You should focus mainly on the first reported error/warning You should focus mainly on the first reported error/warning
even if the link between what the compiler report and what the error is even if the link between what the compiler report and what the error is
is not immediate. The error is always in one of the **oplist definition**. is not immediate. The error is always in one of the **oplist definition**.
Examples of typical errors: Examples of typical errors:
* lack of inclusion of an header, * lack of inclusion of an header,
@@ -728,7 +730,7 @@ and check what's wrong in the preprocessed file:
If there is a warning reported by the compiler in the generated code, If there is a warning reported by the compiler in the generated code,
then there is definitely an **error** you should fix (except if it reports then there is definitely an **error** you should fix (except if it reports
shadowed variables). shadowed variables), in particular cast evolving pointers.
@@ -2658,7 +2660,7 @@ Define the binary ordered tree 'name##\_t' and its associated methods as "static
A binary tree is a tree data structure in which each node has at most two children, which are referred to as the left child and the right child. A binary tree is a tree data structure in which each node has at most two children, which are referred to as the left child and the right child.
In this kind of tree, all elements of the tree are totally ordered. In this kind of tree, all elements of the tree are totally ordered.
The current implementation is [RED-BLACK TREE](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree). The current implementation is [RED-BLACK TREE](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree).
It should not be confused with a [B-TREE](https://en.wikipedia.org/wiki/B-tree). It has not to be confused with a [B-TREE](https://en.wikipedia.org/wiki/B-tree).
'name' shall be a C identifier that will be used to identify the container. 'name' shall be a C identifier that will be used to identify the container.
The CMP operator is used to perform the total ordering of the elements. The CMP operator is used to perform the total ordering of the elements.
@@ -3519,7 +3521,8 @@ An additional policy can be applied to the buffer by performing a logical or of
This container is designed to be used for easy synchronization inter-threads This container is designed to be used for easy synchronization inter-threads
in a context of very fast communication (the variable should be a global shared one). in a context of very fast communication (the variable should be a global shared one).
There should not have more threads using this queue than they are available hardware cores There should not have more threads using this queue than they are available hardware cores
due to the only partial protection on Context-switch Immunity of this structure. due to the only partial protection on Context-switch Immunity of this structure
(This can happen only if you abuse **massively** the number of threads vs the number of cores).
It shall be done once per type and per compilation unit. It shall be done once per type and per compilation unit.