Fri, 24 Jan 2025 21:12:09 +0100
assign proper names to the documentation topics
relates to #451
|
1143
0559812df10c
assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents:
1142
diff
changeset
|
1 | # Map Interface |
| 1141 | 2 | |
| 3 | Similar to the list interface, the map interface provides a common API for implementing maps. | |
| 4 | There are some minor subtle differences, though. | |
| 5 | ||
| 6 | First, the `remove` method is not always a destructive removal. | |
| 7 | Instead, the last argument is a Boolean that indicates whether the element shall be destroyed or returned. | |
| 8 | ```c | |
| 9 | void *(*remove)(CxMap *map, CxHashKey key, bool destroy); | |
| 10 | ``` | |
| 11 | When you implement this method, you are either supposed to invoke the destructors and return `NULL`, | |
| 12 | or just remove the element from the map and return it. | |
| 13 | ||
| 14 | Secondly, the iterator method is a bit more complete. The signature is as follows: | |
| 15 | ```c | |
| 16 | CxIterator (*iterator)(const CxMap *map, enum cx_map_iterator_type type); | |
| 17 | ``` | |
| 18 | There are three map iterator types: for values, for keys, for pairs. | |
| 19 | Depending on the iterator type requested, you need to create an iterator with the correct methods that | |
| 20 | return the requested thing. | |
| 21 | There are no automatic checks to enforce this - it's completely up to you. | |
| 22 | If you need inspiration on how to do that, check the hash map implementation that comes with UCX. | |
|
1142
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
23 | |
|
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
24 | ## Undocumented Symbols (TODO) |
|
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
25 | ### cx_empty_map |
|
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
26 | ### cxEmptyMap |
|
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
27 | ### cxMapFree |
|
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
28 | ### cxMapMutIterator |
|
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
29 | ### cxMapMutIteratorKeys |
|
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
30 | ### cxMapMutIteratorValues |