summaryrefslogtreecommitdiff
path: root/src/util/stack.h
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-05-02 00:37:30 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-05-02 00:37:30 -0400
commitab7109065ced6feac485e3a5621c0f9c52f7aeec (patch)
treea242b446b39ab8d4dcd248ec2c5a75f2c45522c0 /src/util/stack.h
parentupdate makefile (diff)
downloadlazysphere-ab7109065ced6feac485e3a5621c0f9c52f7aeec.tar.gz
lazysphere-ab7109065ced6feac485e3a5621c0f9c52f7aeec.tar.bz2
lazysphere-ab7109065ced6feac485e3a5621c0f9c52f7aeec.zip
tac, ls fixes
Diffstat (limited to '')
-rw-r--r--src/util/stack.h26
1 files changed, 26 insertions, 0 deletions
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 <stddef.h>
+#include <stdbool.h>
+
+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;
+}