35#ifndef CVECTOR_f_struct_H
36#define CVECTOR_f_struct_H
40#define CVEC_SIZE_T size_t
89#define cvec_shrink_to_fit_f_struct(vec) cvec_set_cap_f_struct((vec), (vec)->size)
108#ifdef CVECTOR_f_struct_IMPLEMENTATION
112#define CVEC_f_struct_ALLOCATOR(x) ((x+1) * 2)
114#if defined(CVEC_MALLOC) && defined(CVEC_FREE) && defined(CVEC_REALLOC)
116#elif !defined(CVEC_MALLOC) && !defined(CVEC_FREE) && !defined(CVEC_REALLOC)
119#error "Must define all or none of CVEC_MALLOC, CVEC_FREE, and CVEC_REALLOC."
124#define CVEC_MALLOC(sz) malloc(sz)
125#define CVEC_REALLOC(p, sz) realloc(p, sz)
126#define CVEC_FREE(p) free(p)
131#define CVEC_MEMMOVE(dst, src, sz) memmove(dst, src, sz)
136#define CVEC_ASSERT(x) assert(x)
184 for (i=0; i<num; ++i) {
185 if (!elem_init(&vec->
a[i], &vals[i])) {
232 for (i=0; i<num; ++i) {
233 if (!elem_init(&vec->
a[i], &vals[i])) {
271 for (i=0; i<src->
size; ++i) {
294 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
320 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
357 return &vec->
a[vec->
size-1];
383 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
412 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
445 for (j=0; j<num; ++j) {
512 for (i=start; i<=end; i++) {
545 if (size < vec->size) {
547 for (i=vec->
size-1; i>=size; i--) {
569 for(i=0; i<vec->
size; i++) {
575 for (i=0; i<vec->
size; i++) {
582 for (i=0; i<vec->
size; i++) {
593 for (i=0; i<vec->
size; i++) {
618 for (i=0; i<vec->
size; ++i) {
631 for (i=0; i<tmp->
size; i++) {
644 for (i=0; i<tmp->
size; i++) {
#define CVEC_REALLOC(p, sz)
#define CVEC_MEMMOVE(dst, src, sz)
cvec_sz CVEC_VOID_START_SZ
int cvec_copyc_f_struct(void *dest, void *src)
int cvec_replace_f_struct(cvector_f_struct *vec, cvec_sz i, f_struct *a, f_struct *ret)
int cvec_set_val_sz_f_struct(cvector_f_struct *vec, f_struct *val)
int cvec_f_struct(cvector_f_struct *vec, cvec_sz size, cvec_sz capacity, void(*elem_free)(void *), int(*elem_init)(void *, void *))
void cvec_pop_f_struct(cvector_f_struct *vec, f_struct *ret)
void cvec_erase_f_struct(cvector_f_struct *vec, cvec_sz start, cvec_sz end)
int cvec_init_f_struct(cvector_f_struct *vec, f_struct *vals, cvec_sz num, void(*elem_free)(void *), int(*elem_init)(void *, void *))
void cvec_clear_f_struct(cvector_f_struct *vec)
void cvec_popm_f_struct(cvector_f_struct *vec, f_struct *ret)
void cvec_free_f_struct(void *vec)
cvector_f_struct * cvec_f_struct_heap(cvec_sz size, cvec_sz capacity, void(*elem_free)(void *), int(*elem_init)(void *, void *))
int cvec_insert_array_f_struct(cvector_f_struct *vec, cvec_sz i, f_struct *a, cvec_sz num)
int cvec_copy_f_struct(cvector_f_struct *dest, cvector_f_struct *src)
int cvec_insert_f_struct(cvector_f_struct *vec, cvec_sz i, f_struct *a)
void cvec_replacem_f_struct(cvector_f_struct *vec, cvec_sz i, f_struct *a, f_struct *ret)
int cvec_set_cap_f_struct(cvector_f_struct *vec, cvec_sz size)
void cvec_remove_f_struct(cvector_f_struct *vec, cvec_sz start, cvec_sz end)
int cvec_insert_arraym_f_struct(cvector_f_struct *vec, cvec_sz i, f_struct *a, cvec_sz num)
int cvec_push_f_struct(cvector_f_struct *vec, f_struct *val)
int cvec_set_val_cap_f_struct(cvector_f_struct *vec, f_struct *val)
int cvec_extend_f_struct(cvector_f_struct *vec, cvec_sz num)
f_struct * cvec_back_f_struct(cvector_f_struct *vec)
int cvec_pushm_f_struct(cvector_f_struct *vec, f_struct *a)
void cvec_free_f_struct_heap(void *vec)
int cvec_reserve_f_struct(cvector_f_struct *vec, cvec_sz size)
cvector_f_struct * cvec_init_f_struct_heap(f_struct *vals, cvec_sz num, void(*elem_free)(void *), int(*elem_init)(void *, void *))
int cvec_insertm_f_struct(cvector_f_struct *vec, cvec_sz i, f_struct *a)
void(* elem_free)(void *)
int(* elem_init)(void *, void *)
Structure used to test generic vector.