35 #ifndef CVECTOR_f_struct_H
36 #define CVECTOR_f_struct_H
41 #define CVEC_SIZE_T size_t
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."
123 #define CVEC_MALLOC(sz) malloc(sz)
124 #define CVEC_REALLOC(p, sz) realloc(p, sz)
125 #define CVEC_FREE(p) free(p)
130 #define CVEC_MEMMOVE(dst, src, sz) memmove(dst, src, sz)
135 #define CVEC_ASSERT(x) assert(x)
183 for (i=0; i<num; ++i) {
184 if (!elem_init(&vec->
a[i], &vals[i])) {
231 for (i=0; i<num; ++i) {
232 if (!elem_init(&vec->
a[i], &vals[i])) {
270 for (i=0; i<src->
size; ++i) {
293 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
319 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
356 return &vec->
a[vec->
size-1];
382 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
411 tmp_sz = CVEC_f_struct_ALLOCATOR(vec->
capacity);
444 for (j=0; j<num; ++j) {
511 for (i=start; i<=end; i++) {
544 if (size < vec->size) {
546 for (i=vec->
size-1; i>=size; i--) {
568 for(i=0; i<vec->
size; i++) {
574 for (i=0; i<vec->
size; i++) {
581 for (i=0; i<vec->
size; i++) {
592 for (i=0; i<vec->
size; i++) {
617 for (i=0; i<vec->
size; ++i) {
630 for (i=0; i<tmp->
size; i++) {
643 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)
cvector_f_struct * cvec_f_struct_heap(cvec_sz size, cvec_sz capacity, void(*elem_free)(void *), int(*elem_init)(void *, void *))
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 *))
f_struct * cvec_back_f_struct(cvector_f_struct *vec)
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)
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)
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_set_val_cap_f_struct(cvector_f_struct *vec, f_struct *val)
int cvec_extend_f_struct(cvector_f_struct *vec, cvec_sz num)
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)
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.