2 typedef struct _StackNode _StackNode;
9 typedef struct Stack Stack;
14 void Stack_initialize(Stack* self) {
18 bool Stack_isEmpty(Stack* self) {
19 return self->top == NULL;
22 Object Stack_pop(Stack*);
24 void Stack_deinitialize(Stack* self) {
25 while(self->top != NULL) {
26 Object o = Stack_pop(self);
27 Object_deinitialize(&o);
31 void Stack_push(Stack* self, Object value) {
32 _StackNode* node = malloc(sizeof(_StackNode));
34 node->next = self->top;
38 Object Stack_pop(Stack* self) {
39 assert(self->top != NULL);
41 _StackNode* node = self->top;
42 self->top = node->next;
44 Object result = node->value;