docs/Writerside/topics/collection.h.md

Fri, 24 Jan 2025 21:12:09 +0100

author
Mike Becker <universe@uap-core.de>
date
Fri, 24 Jan 2025 21:12:09 +0100
branch
docs/3.1
changeset 1143
0559812df10c
parent 1141
a06a2d27c043
child 1146
151c057faf7c
permissions
-rw-r--r--

assign proper names to the documentation topics

relates to #451

# Collections

Collections in UCX 3 have several common features.
If you want to implement an own collection data type that uses the same features, you can use the
`CX_COLLECTION_BASE` macro at the beginning of your struct to roll out all members a usual UCX collection has.
```c
struct my_fancy_collection_s {
    CX_COLLECTION_BASE;
    struct my_collection_data_s *data;
};
```
Based on this structure, this header provides some convenience macros for invoking the destructor functions
that are part of the basic collection members.
The idea of having destructor functions within a collection is that you can destroy the collection _and_ the
contents with one single function call.
When you are implementing a collection, you are responsible for invoking the destructors at the right places, e.g.
when removing (and deleting) elements in the collection, clearing the collection, or - the most prominent case -
destroying the collection.

You can always look at the UCX list and map implementations if you need some inspiration.

mercurial