35#ifndef CVECTOR_short_H
36#define CVECTOR_short_H
40#define CVEC_SIZE_T size_t
81#define cvec_shrink_to_fit_short(vec) cvec_set_cap_short((vec), (vec)->size)
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."
116#define CVEC_MALLOC(sz) malloc(sz)
117#define CVEC_REALLOC(p, sz) realloc(p, sz)
118#define CVEC_FREE(p) free(p)
123#define CVEC_MEMMOVE(dst, src, sz) memmove(dst, src, sz)
128#define CVEC_ASSERT(x) assert(x)
235 vec->
a[vec->
size++] = a;
237 tmp_sz = CVEC_short_ALLOCATOR(vec->
capacity);
238 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
243 vec->
a[vec->
size++] = a;
251 return vec->
a[--vec->
size];
256 return &vec->
a[vec->
size-1];
265 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
285 tmp_sz = CVEC_short_ALLOCATOR(vec->
capacity);
286 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
306 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*tmp_sz))) {
322 short tmp = vec->
a[i];
352 if (size < vec->size) {
356 if (!(tmp = (
short*)
CVEC_REALLOC(vec->
a,
sizeof(
short)*size))) {
368 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)
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)
short * cvec_back_short(cvector_short *vec)
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).