From e39267c83a8af189a624891813ebd6014543b01a Mon Sep 17 00:00:00 2001 From: c Date: Sun, 24 Dec 2023 10:28:00 -0500 Subject: Proper tests. --- src/stack.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/stack.c (limited to 'src/stack.c') diff --git a/src/stack.c b/src/stack.c new file mode 100644 index 0000000..5c4d0ca --- /dev/null +++ b/src/stack.c @@ -0,0 +1,38 @@ +#include "include/stack.h" + +stack_t* stack_init() { + stack_t* stack = emalloc(sizeof(stack_t)); + + stack->sp = 0; + for (int i = 0; i < STACK_MAXLEN; stack->val[i++] = 0); + + return stack; +} + +void stack_destroy(stack_t* stack) { + free(stack); +} + +void stack_push(stack_t* stack, void* val) { + stack->val[stack->sp++] = val; +} + +void* stack_pop(stack_t* stack) { + void* tmpval; + + tmpval = stack->val[--stack->sp]; + stack->val[stack->sp] = NULL; + + return tmpval; +} + +size_t stack_len(stack_t* stack) { + return stack->sp - 1; +} + +void stack_print(stack_t* stack) { + log_inf("stack_print(): %p", stack); + for (int i = stack_len(stack) - 1; i >= 0; --i) { + log_inf("%d: %p", i, stack[i]); + } +} -- cgit v1.2.3