| 348 cx_compare_func cmp_func, |
348 cx_compare_func cmp_func, |
| 349 bool allow_duplicates |
349 bool allow_duplicates |
| 350 ) { |
350 ) { |
| 351 cx_compare_func_wrapper wrapper = {cmp_func}; |
351 cx_compare_func_wrapper wrapper = {cmp_func}; |
| 352 return cx_array_insert_sorted_c_(allocator, array, elem_size, sorted_data, |
352 return cx_array_insert_sorted_c_(allocator, array, elem_size, sorted_data, |
| 353 n, cx_ccmp_wrap, &wrapper, allow_duplicates); |
353 n, cx_cmp_wrap, &wrapper, allow_duplicates); |
| 354 } |
354 } |
| 355 |
355 |
| 356 #ifndef WITH_QSORT_R |
356 #ifndef WITH_QSORT_R |
| 357 static thread_local cx_compare_func2 cx_array_fn_for_qsort; |
357 static thread_local cx_compare_func2 cx_array_fn_for_qsort; |
| 358 static thread_local void *cx_array_context_for_qsort; |
358 static thread_local void *cx_array_context_for_qsort; |
| 576 size_t elem_size, |
576 size_t elem_size, |
| 577 const void *elem, |
577 const void *elem, |
| 578 cx_compare_func cmp_func |
578 cx_compare_func cmp_func |
| 579 ) { |
579 ) { |
| 580 cx_compare_func_wrapper wrapper = {cmp_func}; |
580 cx_compare_func_wrapper wrapper = {cmp_func}; |
| 581 return cx_array_binary_search_inf_c(arr, size, elem_size, elem, cx_ccmp_wrap, &wrapper); |
581 return cx_array_binary_search_inf_c(arr, size, elem_size, elem, cx_cmp_wrap, &wrapper); |
| 582 } |
582 } |
| 583 |
583 |
| 584 size_t cx_array_binary_search( |
584 size_t cx_array_binary_search( |
| 585 const void *arr, |
585 const void *arr, |
| 586 size_t size, |
586 size_t size, |
| 587 size_t elem_size, |
587 size_t elem_size, |
| 588 const void *elem, |
588 const void *elem, |
| 589 cx_compare_func cmp_func |
589 cx_compare_func cmp_func |
| 590 ) { |
590 ) { |
| 591 cx_compare_func_wrapper wrapper = {cmp_func}; |
591 cx_compare_func_wrapper wrapper = {cmp_func}; |
| 592 return cx_array_binary_search_c(arr, size, elem_size, elem, cx_ccmp_wrap, &wrapper); |
592 return cx_array_binary_search_c(arr, size, elem_size, elem, cx_cmp_wrap, &wrapper); |
| 593 } |
593 } |
| 594 |
594 |
| 595 size_t cx_array_binary_search_sup( |
595 size_t cx_array_binary_search_sup( |
| 596 const void *arr, |
596 const void *arr, |
| 597 size_t size, |
597 size_t size, |
| 598 size_t elem_size, |
598 size_t elem_size, |
| 599 const void *elem, |
599 const void *elem, |
| 600 cx_compare_func cmp_func |
600 cx_compare_func cmp_func |
| 601 ) { |
601 ) { |
| 602 cx_compare_func_wrapper wrapper = {cmp_func}; |
602 cx_compare_func_wrapper wrapper = {cmp_func}; |
| 603 return cx_array_binary_search_sup_c(arr, size, elem_size, elem, cx_ccmp_wrap, &wrapper); |
603 return cx_array_binary_search_sup_c(arr, size, elem_size, elem, cx_cmp_wrap, &wrapper); |
| 604 } |
604 } |
| 605 |
605 |
| 606 #ifndef CX_ARRAY_SWAP_SBO_SIZE |
606 #ifndef CX_ARRAY_SWAP_SBO_SIZE |
| 607 #define CX_ARRAY_SWAP_SBO_SIZE 128 |
607 #define CX_ARRAY_SWAP_SBO_SIZE 128 |
| 608 #endif |
608 #endif |