// Copyright (C) 2023, Jakob Wakeling // All rights reserved. #ifndef ESH_UTIL_STACK_H_XP00FNGQ #define ESH_UTIL_STACK_H_XP00FNGQ #include "util.h" #define stack_push(s, e) _stack_push(s, (void *)(uptr)(e)) typedef struct { void *a; u64 al, ac, el; void (*free)(void *); } stack; extern stack stack_init(u64 el, void (*free)(void *)); extern void stack_free(stack *s); extern void _stack_push(stack *s, void *e); extern void *stack_pop(stack *s); #endif // ESH_UTIL_STACK_H_XP00FNGQ