47 typedef struct cfulist cfulist_t;
53 typedef int (*cfulist_foreach_fn_t)(
void *data,
size_t data_size,
void *arg);
59 typedef void * (*cfulist_map_fn_t)(
void *data,
size_t data_size,
void *arg,
60 size_t *new_data_size);
63 typedef void (*cfulist_free_fn_t)(
void *data);
66 cfulist_t * cfulist_new(
void);
71 cfulist_t * cfulist_new_with_free_fn(cfulist_free_fn_t free_fn);
74 size_t cfulist_num_entries(cfulist_t *list);
79 int cfulist_push_data(cfulist_t *list,
void *data,
size_t data_size);
82 int cfulist_pop_data(cfulist_t *list,
void **data,
size_t *data_size);
85 int cfulist_unshift_data(cfulist_t *list,
void *data,
size_t data_size);
88 int cfulist_shift_data(cfulist_t *list,
void **data,
size_t *data_size);
91 int cfulist_enqueue_data(cfulist_t *list,
void *data,
size_t data_size);
94 int cfulist_dequeue_data(cfulist_t *list,
void **data,
size_t *data_size);
99 int cfulist_first_data(cfulist_t *list,
void **data,
size_t *data_size);
104 int cfulist_last_data(cfulist_t *list,
void **data,
size_t *data_size);
109 int cfulist_nth_data(cfulist_t *list,
void **data,
size_t *data_size,
size_t n);
111 void cfulist_reset_each(cfulist_t *list);
112 int cfulist_each_data(cfulist_t *list,
void **data,
size_t *data_size);
113 int cfulist_next_data(cfulist_t *list,
void **data,
size_t *data_size);
119 size_t cfulist_foreach(cfulist_t *list, cfulist_foreach_fn_t fe_fn,
void *arg);
125 cfulist_t *cfulist_map(cfulist_t *list, cfulist_map_fn_t map_fn,
void *arg);
128 void cfulist_destroy(cfulist_t *list);
129 void cfulist_destroy_with_free_fn(cfulist_t *list, cfulist_free_fn_t free_fn);
133 int cfulist_push(cfulist_t *list,
void *data);
134 void * cfulist_pop(cfulist_t *list);
135 int cfulist_unshift(cfulist_t *list,
void *data);
136 void * cfulist_shift(cfulist_t *list);
137 int cfulist_enqueue(cfulist_t *list,
void *data);
138 void *cfulist_dequeue(cfulist_t *list);
144 int cfulist_push_string(cfulist_t *list,
char *data);
145 char * cfulist_pop_string(cfulist_t *list);
146 int cfulist_unshift_string(cfulist_t *list,
char *data);
147 char * cfulist_shift_string(cfulist_t *list);
148 int cfulist_enqueue_string(cfulist_t *list,
char *data);
149 char *cfulist_dequeue_string(cfulist_t *list);
151 char *cfulist_join(cfulist_t *list,
const char *delimiter);