59#define DYNARR_DEFAULT_ARGS \
60 VECTOR_DEFAULT_ARGS, \
61 .shrink_threshold = 0.25f, \
62 .grow_threshold = 0.75f, \
81#define dynarr_create(...) \
82 dynarr_create_(&(dynarr_opts_t){ \
83 DYNARR_DEFAULT_ARGS, \
187 const void *
const value,
203 const void *
const value,
231void *
dynarr_get(
const dynarr_t *
const dynarr,
const size_t index);
241void dynarr_set(dynarr_t *
const dynarr,
const size_t index,
const void *value);
382 const size_t amount);
399 const predicate_t predicate,
418 const dynarr_t *
const second,
437 const void *
const value);
453 const void *
const value,
474 const void *
const value,
477 size_t *
const index);
486 const void *
const value,
489 size_t *
const index);
507 const void *
const value,
510 size_t *
const index);
515 const foreach_t func,
521 const aggregate_t func,
527 const transform_t func,
dynarr_status_t
Represents operation error codes.
@ DYNARR_GROW_ERROR
Allocation error on grow.
@ DYNARR_SHRINK_ERROR
Success status inherited from VECTOR_ALLOC_ERROR.
@ DYNARR_ALLOC_ERROR
Success status inherited from VECTOR_ALLOC_ERROR.
@ DYNARR_SUCCESS
Success status inherited from VECTOR_SUCCESS.
@ DYNARR_STATUS_LAST
Total number of valid dynarr status codes.
dynarr_status_t dynarr_spread_insert(dynarr_t **const dynarr, const size_t index, const size_t amount, const void *const value)
Insert single value as an element range.
dynarr_t * dynarr_binary_merge(const dynarr_t *const first, const dynarr_t *const second, const compare_t cmp, void *const param)
Non-destructive merge of two sorted dynarrs.
dynarr_status_t dynarr_remove_range(dynarr_t **const dynarr, const size_t index, const size_t amount)
Removes range of elements from a dynarr.
dynarr_status_t dynarr_append(dynarr_t **const dynarr, const void *const value)
Appends an element to the tail of a dynarr.
dynarr_status_t dynarr_binary_reserve(dynarr_t **const dynarr, const void *const value, const compare_t cmp, void *const param, size_t *const index)
Reserve space for an element in sorted dynarr.
int dynarr_foreach(const dynarr_t *const dynarr, const foreach_t func, void *const param)
void dynarr_set(dynarr_t *const dynarr, const size_t index, const void *value)
Sets element at given index to a value.
dynarr_status_t dynarr_pop_back(dynarr_t **const dynarr)
Removes an element from the tail of a dynarr.
dynarr_status_t dynarr_pop_front(dynarr_t **const dynarr)
Removes an element from the head of a dynarr.
dynarr_status_t dynarr_binary_insert_uniq(dynarr_t **const dynarr, const void *const value, const compare_t cmp, void *const param, size_t *const index)
Binary unique insert.
dynarr_status_t dynarr_prepend(dynarr_t **const dynarr, const void *const value)
Prepends an element to the head of a dynarr.
void * dynarr_first(const dynarr_t *const dynarr)
Access first element of a dynarr.
size_t dynarr_binary_find_insert_place(const dynarr_t *const dynarr, const void *const value, const compare_t cmp, void *param)
Binary search for binary insert support.
void * dynarr_last(const dynarr_t *const dynarr)
Access last element if a dynarr.
int dynarr_transform(dynarr_t *const dynarr, const transform_t func, void *const param)
void dynarr_set_zero(dynarr_t *const dynarr, const size_t index)
Sets element at given index to a zero value.
void * dynarr_get(const dynarr_t *const dynarr, const size_t index)
Returns pointer for the element at index.
dynarr_status_t dynarr_remove_if(dynarr_t **const dynarr, const predicate_t predicate, const size_t limit, void *const param)
Removes limit elements that match predicate.
dynarr_status_t dynarr_insert(dynarr_t **const dynarr, const size_t index, const void *value)
Inserts new element into a dynarr.
int dynarr_aggregate(const dynarr_t *const dynarr, const aggregate_t func, void *const acc, void *const param)
dynarr_status_t dynarr_binary_insert(dynarr_t **const dynarr, const void *const value, const compare_t cmp, void *const param, size_t *const index)
Binary insert.
dynarr_status_t dynarr_remove(dynarr_t **const dynarr, const size_t index)
Removes an element from a dynarr.
void dynarr_clear(dynarr_t *const dynarr)
Clean (reset) contents of the dynarr.
void * dynarr_get_ext_header(const dynarr_t *const dynarr)
Retrieve a location of extended header.
dynarr_t * dynarr_clone(const dynarr_t *const dynarr)
Duplicate a dynarr.
dynarr_t * dynarr_create_(const dynarr_opts_t *const opts)
Constructor of the dynamic array.
void dynarr_destroy(dynarr_t *const dynarr)
Deallocates a dynamic array.
size_t dynarr_capacity(const dynarr_t *const dynarr)
Access current capacity of the dynarr.
size_t dynarr_initial_capacity(const dynarr_t *const dynarr)
Access initial capacity property.
size_t dynarr_size(const dynarr_t *const dynarr)
Access size property of a dynarr.
ssize_t dynarr_binary_find_index(const dynarr_t *const dynarr, const void *const value, const compare_t cmp, void *const param)
Binary search for the element with matching value.
void * dynarr_binary_find(const dynarr_t *const dynarr, const void *const value, const compare_t cmp, void *const param)
Binary search for the element with matching value.
float grow_threshold
Fraction of the capacity need to be used to trigger growing.
float shrink_threshold
Fraction of the capacity in use at which srink will be performed.
float grow_factor
Multiplier that is applied to dynarr capactity on resize.