8#define CF_STACK_INITIAL_CAP 16
20 if (!s->
data) { free(s);
return NULL; }
36 int *grown = realloc(s->
data, new_cap *
sizeof(
int));
37 if (!grown)
return false;
46 if (!s || s->
size == 0)
return false;
48 if (out_value) *out_value = s->
data[s->
size];
53 if (!s || s->
size == 0)
return false;
54 if (out_value) *out_value = s->
data[s->
size - 1];
bool cf_stack_pop(cf_stack_t *s, int *out_value)
bool cf_stack_is_empty(const cf_stack_t *s)
bool cf_stack_peek(const cf_stack_t *s, int *out_value)
void cf_stack_destroy(cf_stack_t *s)
#define CF_STACK_INITIAL_CAP
size_t cf_stack_size(const cf_stack_t *s)
cf_stack_t * cf_stack_create(void)
bool cf_stack_push(cf_stack_t *s, int value)
LIFO stack of int, backed by a growable dynamic array.