Update documentation
This commit is contained in:
1 parent
70fa621745
commit
aae14de62b
1 file changed
+33
-35
@@ -2087,13 +2087,15 @@ For even larger object, DICT\_STOREHASH\_DEF2 may be better.
|
|||||||
|
|
||||||
|
|
||||||
#### DICT\_DEF2(name, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
#### DICT\_DEF2(name, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
||||||
|
#### DICT\_DEF2\_AS(name, name\_t, name\_it\_t, name\_itref\_t, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
||||||
|
|
||||||
Define the dictionary 'name##\_t' and its associated methods as "static inline" functions.
|
DICT\_DEF2 defines the dictionary 'name##\_t' and its associated methods as "static inline" functions.
|
||||||
'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.
|
||||||
Current implementation uses chained Hash-Table and as such, elements in the dictionary are **unordered**.
|
Current implementation uses chained Hash-Table and as such, elements in the dictionary are **unordered**.
|
||||||
|
|
||||||
It shall be done once per type and per compilation unit.
|
It shall be done once per type and per compilation unit.
|
||||||
It also define the iterator name##\_it\_t and its associated methods as "static inline" functions.
|
It also define the iterator type name##\_it\_t and its associated methods as "static inline" functions
|
||||||
|
and the iterated object type name##\_itref\_t that is a pair of key\_type and value\_type.
|
||||||
|
|
||||||
The object oplist is expected to have at least the following operators (INIT, INIT\_SET, SET and CLEAR),
|
The object oplist is expected to have at least the following operators (INIT, INIT\_SET, SET and CLEAR),
|
||||||
otherwise default operators are used. If there is no given oplist, the default oplist for standard C type is used
|
otherwise default operators are used. If there is no given oplist, the default oplist for standard C type is used
|
||||||
@@ -2110,26 +2112,35 @@ Example:
|
|||||||
dict_str_set_at (my_dict, key, value);
|
dict_str_set_at (my_dict, key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DICT\_DEF2\_AS is the same as DICT\_DEF2 except the name of the types name\_t, name\_it\_t, name\_itref\_t,
|
||||||
|
are provided.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### DICT\_STOREHASH\_DEF2(name, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
#### DICT\_STOREHASH\_DEF2(name, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
||||||
|
#### DICT\_STOREHASH\_DEF2\_AS(name, name\_t, name\_it\_t, name\_itref\_t, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
||||||
|
|
||||||
Define the dictionary 'name##\_t' and its associated methods as "static inline" functions
|
DICT\_STOREHASH\_DEF2 defines the dictionary 'name##\_t' and its associated methods as "static inline" functions
|
||||||
just like DICT\_DEF2.
|
just like DICT\_DEF2.
|
||||||
|
|
||||||
The only difference is that it stores the hash of each key alongside the key in the dictionary.
|
The only difference is that it stores the hash of each key alongside the key in the dictionary.
|
||||||
This enable the container to avoid recomputing it in some occasions resulting in faster
|
This enables the container to avoid recomputing it in some occasions resulting in faster
|
||||||
dictionary if the hash is costly to compute, or slower otherwise.
|
dictionary if the hash is costly to compute (which is usually the case for large object), or slower otherwise.
|
||||||
|
|
||||||
|
DICT\_STOREHASH\_DEF2\_AS is the same as DICT\_STOREHASH\_DEF2 except the name of the types name\_t, name\_it\_t, name\_itref\_t,
|
||||||
|
are provided.
|
||||||
|
|
||||||
|
|
||||||
#### DICT\_OA\_DEF2(name, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
#### DICT\_OA\_DEF2(name, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
||||||
|
#### DICT\_OA\_DEF2\_AS(name, name\_t, name\_it\_t, name\_itref\_t, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
||||||
|
|
||||||
Define the dictionary 'name##\_t' and its associated methods
|
DICT\_OA\_DEF2 defines the dictionary 'name##\_t' and its associated methods
|
||||||
as "static inline" functions much like DICT\_DEF2.
|
as "static inline" functions much like DICT\_DEF2.
|
||||||
The difference is that it uses an Open Addressing Hash-Table as
|
The difference is that it uses an Open Addressing Hash-Table as container.
|
||||||
container.
|
|
||||||
|
|
||||||
It shall be done once per type and per compilation unit.
|
It shall be done once per type and per compilation unit.
|
||||||
It also define the iterator name##\_it\_t and its associated methods as "static inline" functions.
|
It also define the iterator type name##\_it\_t and its associated methods as "static inline" functions,
|
||||||
|
and the iterated object type name##\_itref\_t that is a pair of key\_type and value\_type.
|
||||||
|
|
||||||
The object oplist is expected to have at least the following operators (INIT, INIT\_SET, SET and CLEAR),
|
The object oplist is expected to have at least the following operators (INIT, INIT\_SET, SET and CLEAR),
|
||||||
otherwise default operators are used. If there is no given oplist, the default oplist for standard C type is used
|
otherwise default operators are used. If there is no given oplist, the default oplist for standard C type is used
|
||||||
@@ -2140,7 +2151,7 @@ The key\_oplist shall also define the additional operators :
|
|||||||
HASH and EQUAL and **OOR\_EQUAL** and **OOR\_SET**
|
HASH and EQUAL and **OOR\_EQUAL** and **OOR\_SET**
|
||||||
|
|
||||||
This implementation is in general faster for small types of keys
|
This implementation is in general faster for small types of keys
|
||||||
(like integer) but slower for larger types.
|
(like integer or float) but slower for larger types.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@@ -2158,19 +2169,7 @@ Example:
|
|||||||
dict_int_set_at (my_dict, key, value);
|
dict_int_set_at (my_dict, key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#### DICT\_DEF2\_AS(name, name\_t, name\_it\_t, name\_itref\_t, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
DICT\_OA\_DEF2\_AS is the same as DICT\_OA\_DEF2 except the name of the types name\_t, name\_it\_t, name\_itref\_t,
|
||||||
|
|
||||||
Same as DICT\_DEF2 except the name of the types name\_t, name\_it\_t, name\_itref\_t,
|
|
||||||
are provided.
|
|
||||||
|
|
||||||
#### DICT\_STOREHASH\_DEF2\_AS(name, name\_t, name\_it\_t, name\_itref\_t, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
|
||||||
|
|
||||||
Same as DICT\_STOREHASH\_DEF2 except the name of the types name\_t, name\_it\_t, name\_itref\_t,
|
|
||||||
are provided.
|
|
||||||
|
|
||||||
#### DICT\_OA\_DEF2\_AS(name, name\_t, name\_it\_t, name\_itref\_t, key\_type[, key\_oplist], value\_type[, value\_oplist])
|
|
||||||
|
|
||||||
Same as DICT\_OA\_DEF2 except the name of the types name\_t, name\_it\_t, name\_itref\_t,
|
|
||||||
are provided.
|
are provided.
|
||||||
|
|
||||||
|
|
||||||
@@ -2180,8 +2179,9 @@ Return the oplist of the dictionary defined by calling DICT\_DEF2 with name & ke
|
|||||||
|
|
||||||
|
|
||||||
#### DICT\_SET\_DEF(name, key\_type[, key\_oplist])
|
#### DICT\_SET\_DEF(name, key\_type[, key\_oplist])
|
||||||
|
#### DICT\_SET\_DEF\_AS(name, name\_t, name\_it\_t, key\_type[, key\_oplist])
|
||||||
|
|
||||||
Define the set 'name##\_t' and its associated methods as "static inline" functions.
|
DICT\_SET\_DEF defines the set 'name##\_t' and its associated methods as "static inline" functions.
|
||||||
A set is a specialized version of a dictionary with no value.
|
A set is a specialized version of a dictionary with no value.
|
||||||
|
|
||||||
It shall be done once per type and per compilation unit.
|
It shall be done once per type and per compilation unit.
|
||||||
@@ -2200,9 +2200,14 @@ Example:
|
|||||||
dict_strSet_set_at (set, key);
|
dict_strSet_set_at (set, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
#### DICT\_OASET\_DEF(name, key\_type[, key\_oplist])
|
DICT\_SET\_DEF\_AS is the same as DICT\_SET\_DEF except the name of the types name\_t, name\_it\_t,
|
||||||
|
are provided.
|
||||||
|
|
||||||
Define the set 'name##\_t' and its associated methods as "static inline" functions.
|
|
||||||
|
#### DICT\_OASET\_DEF(name, key\_type[, key\_oplist])
|
||||||
|
#### DICT\_OASET\_DEF\_AS(name, name\_t, name\_it\_t, key\_type[, key\_oplist])
|
||||||
|
|
||||||
|
DICT\_OASET\_DEF defines the set 'name##\_t' and its associated methods as "static inline" functions.
|
||||||
A set is a specialized version of a dictionary with no value.
|
A set is a specialized version of a dictionary with no value.
|
||||||
The difference is that it uses an Open Addressing Hash-Table as
|
The difference is that it uses an Open Addressing Hash-Table as
|
||||||
container.
|
container.
|
||||||
@@ -2216,15 +2221,7 @@ HASH and EQUAL and **OOR\_EQUAL** and **OOR\_SET**
|
|||||||
This implementation is in general faster for small types of keys
|
This implementation is in general faster for small types of keys
|
||||||
(like integer) but slower for larger types.
|
(like integer) but slower for larger types.
|
||||||
|
|
||||||
|
DICT\_OASET\_DEF\_AS is the same as DICT\_OASET\_DEF except the name of the types name\_t, name\_it\_t,
|
||||||
#### DICT\_SET\_DEF\_AS(name, name\_t, name\_it\_t, key\_type[, key\_oplist])
|
|
||||||
|
|
||||||
Same as DICT\_SET\_DEF except the name of the types name\_t, name\_it\_t,
|
|
||||||
are provided.
|
|
||||||
|
|
||||||
#### DICT\_OASET\_DEF\_AS(name, name\_t, name\_it\_t, key\_type[, key\_oplist])
|
|
||||||
|
|
||||||
Same as DICT\_OASET\_DEF except the name of the types name\_t, name\_it\_t,
|
|
||||||
are provided.
|
are provided.
|
||||||
|
|
||||||
|
|
||||||
@@ -2232,6 +2229,7 @@ are provided.
|
|||||||
|
|
||||||
Return the oplist of the set defined by calling DICT\_SET\_DEF (or DICT\_OASET\_DEF) with name & key\_oplist.
|
Return the oplist of the set defined by calling DICT\_SET\_DEF (or DICT\_OASET\_DEF) with name & key\_oplist.
|
||||||
|
|
||||||
|
|
||||||
#### Created methods
|
#### Created methods
|
||||||
|
|
||||||
In the following methods, name stands for the name given to the macro that is used to identify the type.
|
In the following methods, name stands for the name given to the macro that is used to identify the type.
|
||||||
|
|||||||
Reference in new issue
Block a user