Wed, 17 Dec 2025 19:05:50 +0100
huge refactoring of collections to add support for 3-arg compare functions
|
1143
0559812df10c
assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
1 | # Collections |
| 1141 | 2 | |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
3 | UCX defines common attributes for collections. |
| 1141 | 4 | If you want to implement an own collection data type that uses the same features, you can use the |
| 5 | `CX_COLLECTION_BASE` macro at the beginning of your struct to roll out all members a usual UCX collection has. | |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
6 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
7 | This macro will embed a structure in your collection that can be accessed with the member name `collection`. |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
8 | |
| 1141 | 9 | ```c |
|
1215
790ff923f375
add iterator documentation
Mike Becker <universe@uap-core.de>
parents:
1171
diff
changeset
|
10 | #include <cx/collection.h> |
|
790ff923f375
add iterator documentation
Mike Becker <universe@uap-core.de>
parents:
1171
diff
changeset
|
11 | |
| 1141 | 12 | struct my_fancy_collection_s { |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
13 | CX_COLLECTION_BASE; // adds a member named 'collection' |
| 1141 | 14 | struct my_collection_data_s *data; |
| 15 | }; | |
| 16 | ``` | |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
17 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
18 | > You can always look at the UCX list and map implementations if you need some inspiration. |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
19 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
20 | ## Base Attributes of a Collection |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
21 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
22 | The following attributes are declared by the `CX_COLLECTION_BASE` macro: |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
23 | |
|
1618
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
24 | | Attribute | Description | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
25 | |-----------------------|-----------------------------------------------------------------------------------------------------------------------------------| |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
26 | | `allocator` | The [allocator](allocator.h.md) that shall be used for the collection data. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
27 | | `elem_size` | The size of one element in bytes. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
28 | | `size` | The size, meaning the number of elements, currently stored. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
29 | | `simple_cmp` | A function to [compare](compare.h.md) two elements. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
30 | | `advanced_cmp` | A function that compares two elements and supports custom data. If specified, this has precedence over the `simple_cmp` function. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
31 | | `cmp_data` | A pointer to the custom data that shall be passed to the `advanced_cmp` function. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
32 | | `simple_destructor` | An optional simple [destructor function](allocator.h.md#destructor-functions). | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
33 | | `advanced_destructor` | An optional advanced destructor function. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
34 | | `destructor_data` | A pointer to the custom data that shall be passed to the advanced destructor. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
35 | | `store_pointer` | A `bool` indicating whether this collection stores pointers instead of the element's data. | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
36 | | `sorted` | A `bool` indicating whether the elements are currently guaranteed sorted with respect to the compare function. | |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
37 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
38 | The attributes can be accessed directly via the `collection` member of your struct, or with the following convenience macros. |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
39 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
40 | ```C |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
41 | cxCollectionSize(c) |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
42 | cxCollectionElementSize(c) |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
43 | cxCollectionStoresPointers(c) |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
44 | cxCollectionSorted(c) |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
45 | ``` |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
46 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
47 | In each case the argument `c` is a pointer to your collection. The macro will then access the base data with `c->collection`. |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
48 | |
|
1618
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
49 | ## Comparator Functions |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
50 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
51 | For working with comparators, the following macros are defined: |
|
1605
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
52 | |
|
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
53 | ```C |
|
1618
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
54 | cxSetCompareFunc(c, func) |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
55 | cxSetAdvancedCompareFunc(c, func, data) |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
56 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
57 | // use in your collection's implementation |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
58 | cx_invoke_compare_func(c, left, right) |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
59 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
60 | // the following two can be used to optimize loops |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
61 | cx_invoke_simple_compare_func(c, left, right) |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
62 | cx_invoke_advanced_compare_func(c, left, right) |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
63 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
64 | // convenience macro for addressing and dereference elements in pointer collections |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
65 | cx_ref(c, elem) |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
66 | cx_deref(c, elem) |
|
1605
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
67 | ``` |
|
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
68 | |
|
1618
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
69 | If an advanced compare function is specified, `cx_invoke_compare_func()` will only invoke the advanced comparator. |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
70 | Otherwise, the simple comparator is invoked. |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
71 | If neither comparator is specified, invoking a comparator leads to undefined behavior. |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
72 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
73 | In contrast to the destructors (below), comparators must always be invoked with a pointer to the element's data. |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
74 | That means, if the collection is storing pointers, you must dereference the pointers to those pointers first, before invoking the comparator. |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
75 | The reason for this is that the comparator cannot know if an argument points to an element of the collection or to external data the elements shall be compared with. |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
76 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
77 | A typical use case would be this: |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
78 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
79 | ```C |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
80 | void *arg = // ... passed as argument, e.g. in cxListContains() |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
81 | void *elem = // ... get a pointer to the element |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
82 | void *data; |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
83 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
84 | // manually ... |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
85 | if (cxCollectionStoresPointers(this_collection)) { |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
86 | data = *(void**)elem; |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
87 | } else { |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
88 | data = elem; |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
89 | } |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
90 | |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
91 | // ... or with the convenience macro |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
92 | data = cx_deref(this_collection, elem); |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
93 | int result = cx_invoke_compare_func(this_collection, data, arg); |
|
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
94 | ``` |
|
1464
9a10af83cfab
add cxCollectionCompareFunc() macro
Mike Becker <universe@uap-core.de>
parents:
1424
diff
changeset
|
95 | |
|
1239
b4b1f15d1866
complete more than 80% of the list.h documentation
Mike Becker <universe@uap-core.de>
parents:
1215
diff
changeset
|
96 | ## Destructor Functions |
|
b4b1f15d1866
complete more than 80% of the list.h documentation
Mike Becker <universe@uap-core.de>
parents:
1215
diff
changeset
|
97 | |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
98 | For working with destructors, the following macros are defined: |
| 1141 | 99 | |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
100 | ```C |
|
1605
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
101 | cxSetDestructor(c, destr) |
|
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
102 | cxSetAdvancedDestructor(c, destr, data) |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
103 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
104 | // use in your collection's implementation |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
105 | cx_invoke_destructor(c, elem) |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
106 | |
|
1618
ef7cab6eb131
huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents:
1605
diff
changeset
|
107 | // the following two can be used to optimize loops |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
108 | cx_invoke_simple_destructor(c, elem) |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
109 | cx_invoke_advanced_destructor(c, elem) |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
110 | ``` |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
111 | |
|
1605
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
112 | With `cxSetDestructor()` you can assign a simple [destructor function](allocator.h.md#destructor-functions) |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
113 | to an _instance_ of your collection. |
|
1605
55b13f583356
refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents:
1464
diff
changeset
|
114 | Similarly, you can assign an advanced destructor with custom `data` by using `cxSetAdvancedDestructor`. |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
115 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
116 | Your collection _should_ be supporting destructors by invoking `cx_invoke_destructor()` whenever an element |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
117 | is removed from your collection _without_ being returned to the caller. |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
118 | This macro will invoke a simple destructor, if one is assigned, first, and then the advanced destructor (again, if assigned). |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
119 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
120 | > Destructor functions are always invoked with a pointer to the element in your collection. |
|
1239
b4b1f15d1866
complete more than 80% of the list.h documentation
Mike Becker <universe@uap-core.de>
parents:
1215
diff
changeset
|
121 | > If your collection is storing pointers (i.e. `cxCollectionStoresPointers()` returns `true`) |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
122 | > the `cx_invoke_destructor()` will make sure that the pointer to the element is dereferenced first, |
|
1424
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
Mike Becker <universe@uap-core.de>
parents:
1239
diff
changeset
|
123 | > so that the destructor functions are _always_ invoked with a pointer to the actual element. |
|
1171
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
124 | {style="note"} |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
125 | |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
126 | <seealso> |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
127 | <category ref="apidoc"> |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
128 | <a href="https://ucx.sourceforge.io/api/collection_8h.html">collection.h</a> |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
129 | </category> |
|
155bc3b0dcb3
adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents:
1146
diff
changeset
|
130 | </seealso> |