| 1179:ca4c6f590a08 | 1180:4c3a69b9723a |
|---|---|
| 45 | 45 |
| 46 /** | 46 /** |
| 47 * The maximum item size in an array list that fits into stack buffer | 47 * The maximum item size in an array list that fits into stack buffer |
| 48 * when swapped. | 48 * when swapped. |
| 49 */ | 49 */ |
| 50 cx_attr_export | |
| 50 extern const unsigned cx_array_swap_sbo_size; | 51 extern const unsigned cx_array_swap_sbo_size; |
| 51 | 52 |
| 52 /** | 53 /** |
| 53 * Declares variables for an array that can be used with the convenience macros. | 54 * Declares variables for an array that can be used with the convenience macros. |
| 54 * | 55 * |
| 216 typedef struct cx_array_reallocator_s CxArrayReallocator; | 217 typedef struct cx_array_reallocator_s CxArrayReallocator; |
| 217 | 218 |
| 218 /** | 219 /** |
| 219 * A default stdlib-based array reallocator. | 220 * A default stdlib-based array reallocator. |
| 220 */ | 221 */ |
| 222 cx_attr_export | |
| 221 extern CxArrayReallocator *cx_array_default_reallocator; | 223 extern CxArrayReallocator *cx_array_default_reallocator; |
| 222 | 224 |
| 223 /** | 225 /** |
| 224 * Creates a new array reallocator. | 226 * Creates a new array reallocator. |
| 225 * | 227 * |
| 236 * @param allocator the allocator this reallocator shall be based on | 238 * @param allocator the allocator this reallocator shall be based on |
| 237 * @param stackmem the address of the array when the array is initially located | 239 * @param stackmem the address of the array when the array is initially located |
| 238 * on the stack or shall not reallocated in place | 240 * on the stack or shall not reallocated in place |
| 239 * @return an array reallocator | 241 * @return an array reallocator |
| 240 */ | 242 */ |
| 243 cx_attr_export | |
| 241 CxArrayReallocator cx_array_reallocator( | 244 CxArrayReallocator cx_array_reallocator( |
| 242 const struct cx_allocator_s *allocator, | 245 const struct cx_allocator_s *allocator, |
| 243 const void *stackmem | 246 const void *stackmem |
| 244 ); | 247 ); |
| 245 | 248 |
| 272 * @retval zero success | 275 * @retval zero success |
| 273 * @retval non-zero failure | 276 * @retval non-zero failure |
| 274 * @see cx_array_reallocator() | 277 * @see cx_array_reallocator() |
| 275 */ | 278 */ |
| 276 cx_attr_nonnull_arg(1, 2, 3) | 279 cx_attr_nonnull_arg(1, 2, 3) |
| 280 cx_attr_export | |
| 277 int cx_array_reserve( | 281 int cx_array_reserve( |
| 278 void **array, | 282 void **array, |
| 279 void *size, | 283 void *size, |
| 280 void *capacity, | 284 void *capacity, |
| 281 unsigned width, | 285 unsigned width, |
| 315 * @retval zero success | 319 * @retval zero success |
| 316 * @retval non-zero failure | 320 * @retval non-zero failure |
| 317 * @see cx_array_reallocator() | 321 * @see cx_array_reallocator() |
| 318 */ | 322 */ |
| 319 cx_attr_nonnull_arg(1, 2, 3, 6) | 323 cx_attr_nonnull_arg(1, 2, 3, 6) |
| 324 cx_attr_export | |
| 320 int cx_array_copy( | 325 int cx_array_copy( |
| 321 void **target, | 326 void **target, |
| 322 void *size, | 327 void *size, |
| 323 void *capacity, | 328 void *capacity, |
| 324 unsigned width, | 329 unsigned width, |
| 473 * (@c NULL defaults to #cx_array_default_reallocator) | 478 * (@c NULL defaults to #cx_array_default_reallocator) |
| 474 * @retval zero success | 479 * @retval zero success |
| 475 * @retval non-zero failure | 480 * @retval non-zero failure |
| 476 */ | 481 */ |
| 477 cx_attr_nonnull_arg(1, 2, 3, 5) | 482 cx_attr_nonnull_arg(1, 2, 3, 5) |
| 483 cx_attr_export | |
| 478 int cx_array_insert_sorted( | 484 int cx_array_insert_sorted( |
| 479 void **target, | 485 void **target, |
| 480 size_t *size, | 486 size_t *size, |
| 481 size_t *capacity, | 487 size_t *capacity, |
| 482 cx_compare_func cmp_func, | 488 cx_compare_func cmp_func, |
| 599 * @return the index of the largest lower bound, or @p size | 605 * @return the index of the largest lower bound, or @p size |
| 600 * @see cx_array_binary_search_sup() | 606 * @see cx_array_binary_search_sup() |
| 601 * @see cx_array_binary_search() | 607 * @see cx_array_binary_search() |
| 602 */ | 608 */ |
| 603 cx_attr_nonnull | 609 cx_attr_nonnull |
| 610 cx_attr_export | |
| 604 size_t cx_array_binary_search_inf( | 611 size_t cx_array_binary_search_inf( |
| 605 const void *arr, | 612 const void *arr, |
| 606 size_t size, | 613 size_t size, |
| 607 size_t elem_size, | 614 size_t elem_size, |
| 608 const void *elem, | 615 const void *elem, |
| 624 * cannot be found | 631 * cannot be found |
| 625 * @see cx_array_binary_search_inf() | 632 * @see cx_array_binary_search_inf() |
| 626 * @see cx_array_binary_search_sup() | 633 * @see cx_array_binary_search_sup() |
| 627 */ | 634 */ |
| 628 cx_attr_nonnull | 635 cx_attr_nonnull |
| 636 cx_attr_export | |
| 629 size_t cx_array_binary_search( | 637 size_t cx_array_binary_search( |
| 630 const void *arr, | 638 const void *arr, |
| 631 size_t size, | 639 size_t size, |
| 632 size_t elem_size, | 640 size_t elem_size, |
| 633 const void *elem, | 641 const void *elem, |
| 655 * @return the index of the smallest upper bound, or @p size | 663 * @return the index of the smallest upper bound, or @p size |
| 656 * @see cx_array_binary_search_inf() | 664 * @see cx_array_binary_search_inf() |
| 657 * @see cx_array_binary_search() | 665 * @see cx_array_binary_search() |
| 658 */ | 666 */ |
| 659 cx_attr_nonnull | 667 cx_attr_nonnull |
| 668 cx_attr_export | |
| 660 size_t cx_array_binary_search_sup( | 669 size_t cx_array_binary_search_sup( |
| 661 const void *arr, | 670 const void *arr, |
| 662 size_t size, | 671 size_t size, |
| 663 size_t elem_size, | 672 size_t elem_size, |
| 664 const void *elem, | 673 const void *elem, |
| 672 * @param elem_size the element size | 681 * @param elem_size the element size |
| 673 * @param idx1 index of first element | 682 * @param idx1 index of first element |
| 674 * @param idx2 index of second element | 683 * @param idx2 index of second element |
| 675 */ | 684 */ |
| 676 cx_attr_nonnull | 685 cx_attr_nonnull |
| 686 cx_attr_export | |
| 677 void cx_array_swap( | 687 void cx_array_swap( |
| 678 void *arr, | 688 void *arr, |
| 679 size_t elem_size, | 689 size_t elem_size, |
| 680 size_t idx1, | 690 size_t idx1, |
| 681 size_t idx2 | 691 size_t idx2 |
| 698 * @return the created list | 708 * @return the created list |
| 699 */ | 709 */ |
| 700 cx_attr_nodiscard | 710 cx_attr_nodiscard |
| 701 cx_attr_malloc | 711 cx_attr_malloc |
| 702 cx_attr_dealloc(cxListFree, 1) | 712 cx_attr_dealloc(cxListFree, 1) |
| 713 cx_attr_export | |
| 703 CxList *cxArrayListCreate( | 714 CxList *cxArrayListCreate( |
| 704 const CxAllocator *allocator, | 715 const CxAllocator *allocator, |
| 705 cx_compare_func comparator, | 716 cx_compare_func comparator, |
| 706 size_t elem_size, | 717 size_t elem_size, |
| 707 size_t initial_capacity | 718 size_t initial_capacity |