30#ifndef CLIBS_DYNAMIC_ARRAY_H
31#define CLIBS_DYNAMIC_ARRAY_H
41typedef struct dynamic_array
List;
47#define list_init_type( TYPE ) list_init_size( sizeof( TYPE ) )
70int list_copy(
const struct dynamic_array *old,
struct dynamic_array **new_ls_container );
85const void *
list_see(
const struct dynamic_array *ls,
size_t idx );
91const void *
list_peek(
const struct dynamic_array *ls );
99#define list_fetch( LIST, IDX, TYPE ) \
100 ( *( ( const TYPE * ) list_see( ( LIST ), ( IDX ) ) ) )
107void *
list_at(
struct dynamic_array *,
size_t idx );
121#define list_access( LIST, IDX, TYPE ) ( *( ( TYPE * ) list_at( ( LIST ), ( IDX ) ) ) )
128int list_set_at(
struct dynamic_array *,
size_t index,
const void *data );
139int list_extend(
struct dynamic_array *ls,
const void *array,
size_t array_len );
177int list_insert(
struct dynamic_array *,
size_t index,
const void *data );
191int list_pop(
struct dynamic_array *,
void *container );
221int list_remove(
struct dynamic_array *,
size_t index,
void *container );
228 int ( *cmp )(
const void *,
const void * ) );
234 int ( *cmp )(
const void *,
const void * ) );
253void list_sort(
struct dynamic_array *ls,
int ( *cmp )(
const void *,
const void * ) );
294#define list_printf_sde( LIST, ITEM_TYPE, FORMAT, START_STR, DELIM, END_STR ) \
295 array_printf_sde( list_items( LIST ), \
304#define list_printf_d( LIST, ITEM_TYPE, FORMAT, DELIM ) \
305 array_printf_d( list_items( LIST ), list_size( LIST ), ITEM_TYPE, FORMAT, DELIM )
308#define list_printf( LIST, ITEM_TYPE, FORMAT ) \
309 array_printf( list_items( LIST ), list_size( LIST ), ITEM_TYPE, FORMAT )
313#define list_sprintf_d( STRING, LIST, TYPE, FMTSTR, DELIM ) \
314 array_sprintf_d( STRING, list_items( LIST ), list_size( LIST ), TYPE, FMTSTR, DELIM )
317#define list_sprintf( STRING, LIST, TYPE, FMTSTR ) \
318 array_sprintf( STRING, list_items( LIST ), list_size( LIST ), TYPE, FMTSTR )
Function and variable attributes.
#define UseResult
Function's return value must be used.
Definition attributes.h:52
#define Constructor
Definition attributes.h:101
Constructor struct dynamic_array * list_reversed(const struct dynamic_array *)
struct dynamic_array List
Definition dynarr.h:41
int list_copy(const struct dynamic_array *old, struct dynamic_array **new_ls_container)
int list_reverse(struct dynamic_array *)
int list_cmp_size(const void *l1, const void *l2)
void * list_at_last(struct dynamic_array *)
Constructor struct dynamic_array * list_init_cap_size(size_t el_size, size_t init_cap)
int list_append(struct dynamic_array *, const void *datap)
int list_clear(struct dynamic_array *ls)
const void * list_see(const struct dynamic_array *ls, size_t idx)
size_t list_size(const struct dynamic_array *)
Returns number of elements in the list.
void list_destroy(struct dynamic_array *)
const void * list_lsearch_p(const struct dynamic_array *, const void *needle)
void list_sort(struct dynamic_array *ls, int(*cmp)(const void *, const void *))
const void * list_bsearch_p(const struct dynamic_array *, const void *needle, int(*cmp)(const void *, const void *))
const void * list_peek(const struct dynamic_array *ls)
int list_extend_list(struct dynamic_array *ls, const struct dynamic_array *app)
size_t list_el_size(const struct dynamic_array *)
Returns sizeof elements (e.g. if list element type is char, returns 1)
Constructor struct dynamic_array * list_init_size(size_t el_size)
int list_extend(struct dynamic_array *ls, const void *array, size_t array_len)
Constructor struct dynamic_array * list_copy_of(const struct dynamic_array *)
void * list_at(struct dynamic_array *, size_t idx)
int list_set_at(struct dynamic_array *, size_t index, const void *data)
int list_cmp_elsize(const void *l1, const void *l2)
int list_remove_fast(struct dynamic_array *, size_t index, void *container)
UseResult void * list_items_copy(const struct dynamic_array *)
int64_t list_lsearch_i(const struct dynamic_array *, const void *needle)
const void * list_items(const struct dynamic_array *)
int list_insert(struct dynamic_array *, size_t index, const void *data)
int list_remove(struct dynamic_array *, size_t index, void *container)
int64_t list_bsearch_i(const struct dynamic_array *, const void *needle, int(*cmp)(const void *, const void *))
int list_pop(struct dynamic_array *, void *container)
bool list_is_empty(const struct dynamic_array *)
Returns true if list is empty.