From ab7109065ced6feac485e3a5621c0f9c52f7aeec Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Tue, 2 May 2023 00:37:30 -0400 Subject: tac, ls fixes --- src/util/stack.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/util/stack.h (limited to 'src/util/stack.h') diff --git a/src/util/stack.h b/src/util/stack.h new file mode 100644 index 0000000..01a48e5 --- /dev/null +++ b/src/util/stack.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +struct Stack { + size_t size; + size_t capacity; + void* data; +}; + +void stack_init(struct Stack* stack, size_t size); +void stack_push(struct Stack* stack, void* data, size_t len); +void* stack_pop(struct Stack* stack, size_t len); +void stack_free(struct Stack* stack); + +inline void stack_push_int(struct Stack* stack, int value) { + stack_push(stack, &value, sizeof(int)); +} + +inline bool stack_pop_int(struct Stack* stack, int* value) { + void* d = stack_pop(stack, sizeof(int)); + if (d == NULL) return false; + *value = *(int*)(d); + return true; +} -- cgit v1.2.3-freya