Fri, 19 Dec 2025 14:15:54 +0100
fix outdated names of the cx_ccmp functions + adds first tests for using cx_compare_func2
relates to #622
| src/array_list.c | file | annotate | diff | comparison | revisions | |
| src/compare.c | file | annotate | diff | comparison | revisions | |
| src/cx/compare.h | file | annotate | diff | comparison | revisions | |
| src/hash_map.c | file | annotate | diff | comparison | revisions | |
| src/linked_list.c | file | annotate | diff | comparison | revisions | |
| src/list.c | file | annotate | diff | comparison | revisions | |
| tests/test_hash_map.c | file | annotate | diff | comparison | revisions | |
| tests/test_list.c | file | annotate | diff | comparison | revisions |
--- a/src/array_list.c Fri Dec 19 14:14:22 2025 +0100 +++ b/src/array_list.c Fri Dec 19 14:15:54 2025 +0100 @@ -350,7 +350,7 @@ ) { cx_compare_func_wrapper wrapper = {cmp_func}; return cx_array_insert_sorted_c_(allocator, array, elem_size, sorted_data, - n, cx_acmp_wrap, &wrapper, allow_duplicates); + n, cx_ccmp_wrap, &wrapper, allow_duplicates); } #ifndef WITH_QSORT_R @@ -578,7 +578,7 @@ cx_compare_func cmp_func ) { cx_compare_func_wrapper wrapper = {cmp_func}; - return cx_array_binary_search_inf_c(arr, size, elem_size, elem, cx_acmp_wrap, &wrapper); + return cx_array_binary_search_inf_c(arr, size, elem_size, elem, cx_ccmp_wrap, &wrapper); } size_t cx_array_binary_search( @@ -589,7 +589,7 @@ cx_compare_func cmp_func ) { cx_compare_func_wrapper wrapper = {cmp_func}; - return cx_array_binary_search_c(arr, size, elem_size, elem, cx_acmp_wrap, &wrapper); + return cx_array_binary_search_c(arr, size, elem_size, elem, cx_ccmp_wrap, &wrapper); } size_t cx_array_binary_search_sup( @@ -600,7 +600,7 @@ cx_compare_func cmp_func ) { cx_compare_func_wrapper wrapper = {cmp_func}; - return cx_array_binary_search_sup_c(arr, size, elem_size, elem, cx_acmp_wrap, &wrapper); + return cx_array_binary_search_sup_c(arr, size, elem_size, elem, cx_ccmp_wrap, &wrapper); } #ifndef CX_ARRAY_SWAP_SBO_SIZE
--- a/src/compare.c Fri Dec 19 14:14:22 2025 +0100 +++ b/src/compare.c Fri Dec 19 14:15:54 2025 +0100 @@ -291,7 +291,7 @@ } } -int cx_acmp_memcmp( +int cx_ccmp_memcmp( const void *ptr1, const void *ptr2, void *size @@ -300,7 +300,7 @@ return memcmp(ptr1, ptr2, n); } -int cx_acmp_wrap( +int cx_ccmp_wrap( const void *ptr1, const void *ptr2, void *w
--- a/src/cx/compare.h Fri Dec 19 14:14:22 2025 +0100 +++ b/src/cx/compare.h Fri Dec 19 14:15:54 2025 +0100 @@ -543,9 +543,9 @@ * @return the result of @c memcmp() */ cx_attr_nonnull cx_attr_nodiscard -CX_EXPORT int cx_acmp_memcmp(const void *ptr1, const void *ptr2, void *n); +CX_EXPORT int cx_ccmp_memcmp(const void *ptr1, const void *ptr2, void *n); -/** Wraps a compare function for cx_acmp_wrap. */ +/** Wraps a compare function for cx_ccmp_wrap. */ typedef struct { /** The wrapped compare function */ cx_compare_func cmp; @@ -567,7 +567,7 @@ * @see cx_compare_func_wrapper_s */ cx_attr_nonnull cx_attr_nodiscard -CX_EXPORT int cx_acmp_wrap(const void *ptr1, const void *ptr2, void* cmp_wrapper); +CX_EXPORT int cx_ccmp_wrap(const void *ptr1, const void *ptr2, void* cmp_wrapper); #ifdef __cplusplus } // extern "C"
--- a/src/hash_map.c Fri Dec 19 14:14:22 2025 +0100 +++ b/src/hash_map.c Fri Dec 19 14:15:54 2025 +0100 @@ -432,7 +432,7 @@ if (itemsize > 0) { map->base.collection.elem_size = itemsize; - map->base.collection.advanced_cmp = cx_acmp_memcmp; + map->base.collection.advanced_cmp = cx_ccmp_memcmp; map->base.collection.cmp_data = &map->base.collection.elem_size; } else { map->base.collection.elem_size = sizeof(void *);
--- a/src/linked_list.c Fri Dec 19 14:14:22 2025 +0100 +++ b/src/linked_list.c Fri Dec 19 14:15:54 2025 +0100 @@ -105,7 +105,7 @@ ) { cx_compare_func_wrapper wrapper = {cmp_func}; return cx_linked_list_find_c(start, loc_advance, loc_data, - elem, found_index, cx_acmp_wrap, &wrapper); + elem, found_index, cx_ccmp_wrap, &wrapper); } void *cx_linked_list_first( @@ -420,7 +420,7 @@ cx_compare_func_wrapper wrapper = {cmp_func}; cx_linked_list_insert_sorted_chain_impl( begin, end, loc_prev, loc_next, - insert_begin, cx_acmp_wrap, &wrapper, true); + insert_begin, cx_ccmp_wrap, &wrapper, true); } int cx_linked_list_insert_unique( @@ -447,7 +447,7 @@ cx_compare_func_wrapper wrapper = {cmp_func}; return cx_linked_list_insert_sorted_chain_impl( begin, end, loc_prev, loc_next, - insert_begin, cx_acmp_wrap, &wrapper, false); + insert_begin, cx_ccmp_wrap, &wrapper, false); } void cx_linked_list_insert_sorted_c( @@ -717,7 +717,7 @@ cx_compare_func cmp_func ) { cx_compare_func_wrapper wrapper = {cmp_func}; - cx_linked_list_sort_c(begin, end, loc_prev, loc_next, loc_data, cx_acmp_wrap, &wrapper); + cx_linked_list_sort_c(begin, end, loc_prev, loc_next, loc_data, cx_ccmp_wrap, &wrapper); } int cx_linked_list_compare_c( @@ -753,7 +753,7 @@ ) { cx_compare_func_wrapper wrapper = {cmp_func}; return cx_linked_list_compare_c(begin_left, begin_right, - loc_advance, loc_data, cx_acmp_wrap, &wrapper); + loc_advance, loc_data, cx_ccmp_wrap, &wrapper); } void cx_linked_list_reverse(
--- a/src/list.c Fri Dec 19 14:14:22 2025 +0100 +++ b/src/list.c Fri Dec 19 14:15:54 2025 +0100 @@ -352,7 +352,7 @@ if (elem_size > 0) { list->collection.elem_size = elem_size; list->collection.simple_cmp = NULL; - list->collection.advanced_cmp = cx_acmp_memcmp; + list->collection.advanced_cmp = cx_ccmp_memcmp; list->collection.cmp_data = &list->collection.elem_size; list->collection.store_pointer = false; } else {
--- a/tests/test_hash_map.c Fri Dec 19 14:14:22 2025 +0100 +++ b/tests/test_hash_map.c Fri Dec 19 14:15:54 2025 +0100 @@ -49,7 +49,7 @@ CX_TEST_ASSERT(map->collection.allocator == allocator); CX_TEST_ASSERT(!map->collection.store_pointer); CX_TEST_ASSERT(map->collection.simple_cmp == NULL); - CX_TEST_ASSERT(map->collection.advanced_cmp == cx_acmp_memcmp); + CX_TEST_ASSERT(map->collection.advanced_cmp == cx_ccmp_memcmp); CX_TEST_ASSERT(map->collection.cmp_data == &map->collection.elem_size); CX_TEST_ASSERT(map->collection.simple_destructor == NULL); CX_TEST_ASSERT(map->collection.advanced_destructor == NULL);
--- a/tests/test_list.c Fri Dec 19 14:14:22 2025 +0100 +++ b/tests/test_list.c Fri Dec 19 14:15:54 2025 +0100 @@ -539,6 +539,13 @@ } } +static int test_ccmp_int(const void *l, const void *r, void *c) { + int *z = c; + // return bullshit to make the test fail when c was not passed correctly + if (z == NULL || *z != 1337) return -1; + return cx_cmp_int(l, r); +} + typedef struct node { struct node *next; struct node *prev; @@ -1468,7 +1475,7 @@ CX_TEST_ASSERT(cxListSize(list) == 0); CX_TEST_ASSERT(list->collection.allocator == cxDefaultAllocator); CX_TEST_ASSERT(list->collection.simple_cmp == NULL); - CX_TEST_ASSERT(list->collection.advanced_cmp == cx_acmp_memcmp); + CX_TEST_ASSERT(list->collection.advanced_cmp == cx_ccmp_memcmp); CX_TEST_ASSERT(list->collection.cmp_data == &list->collection.elem_size); CX_TEST_ASSERT(!list->collection.store_pointer); } @@ -1526,7 +1533,7 @@ CX_TEST_ASSERT(cxListSize(list) == 0); CX_TEST_ASSERT(list->collection.allocator == cxDefaultAllocator); CX_TEST_ASSERT(list->collection.simple_cmp == NULL); - CX_TEST_ASSERT(list->collection.advanced_cmp == cx_acmp_memcmp); + CX_TEST_ASSERT(list->collection.advanced_cmp == cx_ccmp_memcmp); CX_TEST_ASSERT(list->collection.cmp_data == &list->collection.elem_size); CX_TEST_ASSERT(!list->collection.store_pointer); } @@ -2653,11 +2660,24 @@ const size_t len = 47; \ int *testdata = int_test_data_added_to_list(list, isptrlist, len); \ CxList *other = otherctr; \ + cxSetCompareFunc(list, cx_cmp_int); \ cxSetCompareFunc(other, cx_cmp_int); \ for (size_t i = 0; i < len; i++) cxListAdd(other, &testdata[i]); \ CX_TEST_CALL_SUBROUTINE(test_list_verify_compare, list, other); \ cxListFree(other); \ free(testdata); \ +}) \ +roll_out_test_combos(compare2_##suffix, { \ + const size_t len = 47; \ + int *testdata = int_test_data_added_to_list(list, isptrlist, len); \ + CxList *other = otherctr; \ + int z = 1337; \ + cxSetAdvancedCompareFunc(list, test_ccmp_int, &z); \ + cxSetAdvancedCompareFunc(other, test_ccmp_int, &z); \ + for (size_t i = 0; i < len; i++) cxListAdd(other, &testdata[i]); \ + CX_TEST_CALL_SUBROUTINE(test_list_verify_compare, list, other); \ + cxListFree(other); \ + free(testdata); \ }) roll_out_compare_tests( @@ -3520,6 +3540,14 @@ cx_test_register(suite, test_list_parl_compare_arl); cx_test_register(suite, test_list_parl_compare_pll); cx_test_register(suite, test_list_parl_compare_parl); + cx_test_register(suite, test_list_arl_compare2_ll); + cx_test_register(suite, test_list_arl_compare2_arl); + cx_test_register(suite, test_list_arl_compare2_pll); + cx_test_register(suite, test_list_arl_compare2_parl); + cx_test_register(suite, test_list_parl_compare2_ll); + cx_test_register(suite, test_list_parl_compare2_arl); + cx_test_register(suite, test_list_parl_compare2_pll); + cx_test_register(suite, test_list_parl_compare2_parl); cx_test_register(suite, test_list_arl_simple_destr); cx_test_register(suite, test_list_parl_simple_destr); cx_test_register(suite, test_list_arl_advanced_destr); @@ -3657,6 +3685,14 @@ cx_test_register(suite, test_list_pll_compare_arl); cx_test_register(suite, test_list_pll_compare_pll); cx_test_register(suite, test_list_pll_compare_parl); + cx_test_register(suite, test_list_ll_compare2_ll); + cx_test_register(suite, test_list_ll_compare2_arl); + cx_test_register(suite, test_list_ll_compare2_pll); + cx_test_register(suite, test_list_ll_compare2_parl); + cx_test_register(suite, test_list_pll_compare2_ll); + cx_test_register(suite, test_list_pll_compare2_arl); + cx_test_register(suite, test_list_pll_compare2_pll); + cx_test_register(suite, test_list_pll_compare2_parl); cx_test_register(suite, test_list_ll_simple_destr); cx_test_register(suite, test_list_pll_simple_destr); cx_test_register(suite, test_list_ll_advanced_destr); @@ -3767,6 +3803,14 @@ cx_test_register(suite, test_list_pkvl_compare_arl); cx_test_register(suite, test_list_pkvl_compare_pll); cx_test_register(suite, test_list_pkvl_compare_parl); + cx_test_register(suite, test_list_kvl_compare2_ll); + cx_test_register(suite, test_list_kvl_compare2_arl); + cx_test_register(suite, test_list_kvl_compare2_pll); + cx_test_register(suite, test_list_kvl_compare2_parl); + cx_test_register(suite, test_list_pkvl_compare2_ll); + cx_test_register(suite, test_list_pkvl_compare2_arl); + cx_test_register(suite, test_list_pkvl_compare2_pll); + cx_test_register(suite, test_list_pkvl_compare2_parl); cx_test_register(suite, test_list_kvl_simple_destr); cx_test_register(suite, test_list_pkvl_simple_destr); cx_test_register(suite, test_list_kvl_advanced_destr);