ucx/cx/list.h

changeset 1016
ccde46662db7
parent 943
9b5948aa5b90
--- a/ucx/cx/list.h	Wed Dec 17 18:31:20 2025 +0100
+++ b/ucx/cx/list.h	Thu Dec 18 17:50:15 2025 +0100
@@ -60,10 +60,6 @@
      * The list class definition.
      */
     const cx_list_class *cl;
-    /**
-     * The actual implementation in case the list class is delegating.
-     */
-    const cx_list_class *climpl;
 };
 
 /**
@@ -302,19 +298,18 @@
  * @code
  * CxList *myCustomListCreate(
  *         const CxAllocator *allocator,
- *         cx_compare_func comparator,
  *         size_t elem_size
  * ) {
  *     if (allocator == NULL) {
  *         allocator = cxDefaultAllocator;
  *     }
  *
- *     MyCustomList *list = cxCalloc(allocator, 1, sizeof(MyCustomList));
+ *     MyCustomList *list = cxZalloc(allocator, sizeof(MyCustomList));
  *     if (list == NULL) return NULL;
  *
  *     // initialize
  *     cx_list_init((CxList*)list, &my_custom_list_class,
- *             allocator, comparator, elem_size);
+ *             allocator, elem_size);
  *
  *     // ... some more custom stuff ...
  *
@@ -325,13 +320,24 @@
  * @param list the list to initialize
  * @param cl the list class
  * @param allocator the allocator for the elements
- * @param comparator a compare function for the elements
  * @param elem_size the size of one element
  */
 cx_attr_nonnull_arg(1, 2, 3)
 CX_EXPORT void cx_list_init(struct cx_list_s *list,
     struct cx_list_class_s *cl, const struct cx_allocator_s *allocator,
-    cx_compare_func comparator, size_t elem_size);
+    size_t elem_size);
+
+/**
+ * A @c cx_compare_func2 compatible wrapper for the compare functions of a list.
+ *
+ * @param left first element
+ * @param right second element
+ * @param list the list which is comparing the elements
+ * @return the comparison result
+ */
+cx_attr_nonnull
+CX_EXPORT int cx_list_compare_wrapper(
+    const void *left, const void *right, void *list);
 
 /**
  * Returns the number of elements currently stored in the list.
@@ -984,7 +990,7 @@
  * @param data optional additional data that is passed to the clone function
  * @retval zero when all elements were successfully cloned
  * @retval non-zero when an allocation error occurred
- * @see cxListCloneSimple()
+ * @see cxListCloneShallow()
  */
 cx_attr_nonnull_arg(1, 2, 3)
 CX_EXPORT int cxListClone(CxList *dst, const CxList *src,
@@ -1007,7 +1013,7 @@
  * @param data optional additional data that is passed to the clone function
  * @retval zero when the elements were successfully cloned
  * @retval non-zero when an allocation error occurred
- * @see cxListDifferenceSimple()
+ * @see cxListDifferenceShallow()
  */
 cx_attr_nonnull_arg(1, 2, 3, 4)
 CX_EXPORT int cxListDifference(CxList *dst,
@@ -1031,7 +1037,7 @@
  * @param data optional additional data that is passed to the clone function
  * @retval zero when the elements were successfully cloned
  * @retval non-zero when an allocation error occurred
- * @see cxListIntersectionSimple()
+ * @see cxListIntersectionShallow()
  */
 cx_attr_nonnull_arg(1, 2, 3, 4)
 CX_EXPORT int cxListIntersection(CxList *dst, const CxList *src, const CxList *other,
@@ -1056,7 +1062,7 @@
  * @param data optional additional data that is passed to the clone function
  * @retval zero when the elements were successfully cloned
  * @retval non-zero when an allocation error occurred
- * @see cxListUnionSimple()
+ * @see cxListUnionShallow()
  */
 cx_attr_nonnull_arg(1, 2, 3, 4)
 CX_EXPORT int cxListUnion(CxList *dst, const CxList *src, const CxList *other,
@@ -1082,7 +1088,7 @@
  * @see cxListClone()
  */
 cx_attr_nonnull
-CX_EXPORT int cxListCloneSimple(CxList *dst, const CxList *src);
+CX_EXPORT int cxListCloneShallow(CxList *dst, const CxList *src);
 
 /**
  * Clones elements from a list only if they are not present in another list.
@@ -1104,7 +1110,7 @@
  * @see cxListDifference()
  */
 cx_attr_nonnull
-CX_EXPORT int cxListDifferenceSimple(CxList *dst,
+CX_EXPORT int cxListDifferenceShallow(CxList *dst,
         const CxList *minuend, const CxList *subtrahend);
 
 /**
@@ -1127,7 +1133,7 @@
  * @see cxListIntersection()
  */
 cx_attr_nonnull
-CX_EXPORT int cxListIntersectionSimple(CxList *dst, const CxList *src, const CxList *other);
+CX_EXPORT int cxListIntersectionShallow(CxList *dst, const CxList *src, const CxList *other);
 
 /**
  * Performs a deep clone of one list into another, skipping duplicates.
@@ -1151,7 +1157,7 @@
  * @see cxListUnion()
  */
 cx_attr_nonnull
-CX_EXPORT int cxListUnionSimple(CxList *dst, const CxList *src, const CxList *other);
+CX_EXPORT int cxListUnionShallow(CxList *dst, const CxList *src, const CxList *other);
 
 /**
  * Asks the list to reserve enough memory for a given total number of elements.

mercurial