35 #ifndef CVECTOR_short_H
36 #define CVECTOR_short_H
41 #define CVEC_SIZE_T size_t
100 #ifdef CVECTOR_short_IMPLEMENTATION
104 #define CVEC_short_ALLOCATOR(x) ((x+1) * 2)
106 #if defined(CVEC_MALLOC) && defined(CVEC_FREE) && defined(CVEC_REALLOC)
108 #elif !defined(CVEC_MALLOC) && !defined(CVEC_FREE) && !defined(CVEC_REALLOC)
111 #error "Must define all or none of CVEC_MALLOC, CVEC_FREE, and CVEC_REALLOC."
115 #define CVEC_MALLOC(sz) malloc(sz)
116 #define CVEC_REALLOC(p, sz) realloc(p, sz)
117 #define CVEC_FREE(p) free(p)
122 #define CVEC_MEMMOVE(dst, src, sz) memmove(dst, src, sz)
127 #define CVEC_ASSERT(x) assert(x)
234 vec->
a[vec->
size++] = a;
236 tmp_sz = CVEC_short_ALLOCATOR(vec->
capacity);
237 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
242 vec->
a[vec->
size++] = a;
250 return vec->
a[--vec->
size];
255 return &vec->
a[vec->
size-1];
264 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
284 tmp_sz = CVEC_short_ALLOCATOR(vec->
capacity);
285 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
305 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
321 short tmp = vec->
a[i];
351 if (size < vec->size) {
355 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*size))) {
367 for (i=0; i<vec->
size; i++) {
#define CVEC_REALLOC(p, sz)
#define CVEC_MEMMOVE(dst, src, sz)
int cvec_set_cap_short(cvector_short *vec, cvec_sz size)
void cvec_set_val_cap_short(cvector_short *vec, short val)
int cvec_short(cvector_short *vec, cvec_sz size, cvec_sz capacity)
int cvec_copy_short(cvector_short *dest, cvector_short *src)
int cvec_push_short(cvector_short *vec, short a)
int cvec_init_short(cvector_short *vec, short *vals, cvec_sz num)
short * cvec_back_short(cvector_short *vec)
int cvec_extend_short(cvector_short *vec, cvec_sz num)
void cvec_erase_short(cvector_short *vec, cvec_sz start, cvec_sz end)
cvector_short * cvec_short_heap(cvec_sz size, cvec_sz capacity)
short cvec_replace_short(cvector_short *vec, cvec_sz i, short a)
int cvec_insert_short(cvector_short *vec, cvec_sz i, short a)
int cvec_copyc_short(void *dest, void *src)
void cvec_clear_short(cvector_short *vec)
void cvec_free_short(void *vec)
short cvec_pop_short(cvector_short *vec)
int cvec_reserve_short(cvector_short *vec, cvec_sz size)
cvector_short * cvec_init_short_heap(short *vals, cvec_sz num)
int cvec_insert_array_short(cvector_short *vec, cvec_sz i, short *a, cvec_sz num)
void cvec_free_short_heap(void *vec)
void cvec_set_val_sz_short(cvector_short *vec, short val)
Data structure for short vector.
cvec_sz capacity
Allocated size of array; always >= size.
cvec_sz size
Current size (amount you use when manipulating array directly).