docs/Writerside/topics/collection.h.md

Sat, 20 Dec 2025 10:43:14 +0100

author
Mike Becker <universe@uap-core.de>
date
Sat, 20 Dec 2025 10:43:14 +0100
changeset 1639
5c3e6477aab4
parent 1618
ef7cab6eb131
permissions
-rw-r--r--

update online documentation - relates to #622

1143
0559812df10c assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
1 # Collections
1141
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
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
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 If you want to implement an own collection data type that uses the same features, you can use the
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
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
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
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
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
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
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 struct my_collection_data_s *data;
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 };
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
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)
1605
55b13f583356 refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents: 1464
diff changeset
63 ```
55b13f583356 refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents: 1464
diff changeset
64
1618
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
65 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
66 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
67 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
68
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
69 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
70 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
71 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
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 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
74
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
75 ```C
1639
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
76 void *arg = // ... passed as argument
1618
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
77 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
78 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
79
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
80 // manually ...
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
81 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
82 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
83 } else {
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
84 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
85 }
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
86
1639
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
87 // ... or with a convenience macro
1618
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 = 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
89 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
90 ```
1464
9a10af83cfab add cxCollectionCompareFunc() macro
Mike Becker <universe@uap-core.de>
parents: 1424
diff changeset
91
1639
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
92 > When you are implementing a custom `CxList`, the above handling of pointers vs. elements is implemented
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
93 > by `cx_list_compare_wrapper`, a `cx_compare_func2` which takes the `list` as third argument.
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
94 > It will do the dereferencing for you.
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
95 >
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
96 > It is important that both arguments, left and right, for the compare function are either both pointers to pointers
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
97 > or both pointers to elements, but never mixed.
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
98
1239
b4b1f15d1866 complete more than 80% of the list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1215
diff changeset
99 ## Destructor Functions
b4b1f15d1866 complete more than 80% of the list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1215
diff changeset
100
1171
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
101 For working with destructors, the following macros are defined:
1141
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
102
1171
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
103 ```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
104 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
105 cxSetAdvancedDestructor(c, destr, data)
1171
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
106
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
107 // use in your collection's implementation
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
108 cx_invoke_destructor(c, elem)
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
109
1618
ef7cab6eb131 huge refactoring of collections to add support for 3-arg compare functions
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
110 // 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
111 cx_invoke_simple_destructor(c, elem)
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
112 cx_invoke_advanced_destructor(c, elem)
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
113 ```
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
114
1605
55b13f583356 refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents: 1464
diff changeset
115 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
116 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
117 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
118
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
119 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
120 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
121 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
122
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
123 > 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
124 > 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
125 > 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
126 > so that the destructor functions are _always_ invoked with a pointer to the actual element.
1639
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
127 >
5c3e6477aab4 update online documentation - relates to #622
Mike Becker <universe@uap-core.de>
parents: 1618
diff changeset
128 > This is different to how [comparator functions](#comparator-functions) work.
1171
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
129 {style="note"}
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
130
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
131 <seealso>
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
132 <category ref="apidoc">
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
133 <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
134 </category>
155bc3b0dcb3 adds documentation for destructor functions and collections
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
135 </seealso>

mercurial