#include "array.h" struct var_int_array { int* data; size_t size; size_t capacity; }; varray* var_int_array_new() { varray* a = malloc(sizeof(struct var_int_array)); if (a) { a->size = 0; a->capacity = 10; a->data = malloc(sizeof(int) * a->capacity); if (!a->data) { free(a); } } return a; } void var_int_array_destroy(varray* v) { free(v->data); free(v); } size_t var_int_array_size(const varray* v) { return v->size; } int var_int_array_append(varray* v, int value) { if (v->size == v->capacity) { size_t new_cap = v->capacity * 2; int* new = realloc(v->data, new_cap); if (!new) { return 0; } v->data = new; v->capacity = new_cap; } v->data[v->size++] = value; return 1; } int var_int_array_pop(varray* v) { return v->data[--v->size]; } int var_int_array_get(const varray* v, size_t idx) { return v->data[idx]; } void var_int_array_put(varray* v, size_t idx, int val) { v->data[idx] = val; }