docs/Writerside/topics/collection.h.md

branch
docs/3.1
changeset 1141
a06a2d27c043
child 1143
0559812df10c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/Writerside/topics/collection.h.md	Thu Jan 23 01:33:36 2025 +0100
@@ -0,0 +1,20 @@
+# collection.h
+
+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