#pragma once struct stack_node; struct stack { struct stack_node* head; }; struct stack new_stack(); void copy_stack(struct stack* dst, struct stack* src, void* (*copy)(void*)); void clear_stack(struct stack* s); _Bool stack_empty(const struct stack* s); void push_stack(struct stack* s, void* value); void* pop_stack(struct stack* s);