Thu, 23 Jan 2025 01:33:36 +0100
create new page structure
relates to #451
| 1141 | 1 | # collection.h |
| 2 | ||
| 3 | Collections in UCX 3 have several common features. | |
| 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. | |
| 6 | ```c | |
| 7 | struct my_fancy_collection_s { | |
| 8 | CX_COLLECTION_BASE; | |
| 9 | struct my_collection_data_s *data; | |
| 10 | }; | |
| 11 | ``` | |
| 12 | Based on this structure, this header provides some convenience macros for invoking the destructor functions | |
| 13 | that are part of the basic collection members. | |
| 14 | The idea of having destructor functions within a collection is that you can destroy the collection _and_ the | |
| 15 | contents with one single function call. | |
| 16 | When you are implementing a collection, you are responsible for invoking the destructors at the right places, e.g. | |
| 17 | when removing (and deleting) elements in the collection, clearing the collection, or - the most prominent case - | |
| 18 | destroying the collection. | |
| 19 | ||
| 20 | You can always look at the UCX list and map implementations if you need some inspiration. |