#ifndef STACK_H_ #define STACK_H_ #include #include "structs.h" /* So, the implementation of the stack is array-based, for hyperspeed. * For bigger maps we have to increase the STACK_SIZE, but it should * work fine most of the time. I guess */ #define STACK_SIZE 4096 struct PositionStack_s { Position arr[STACK_SIZE]; /* The array with all the values */ size_t top; /* Shows where the top of the stack is */ }; typedef struct PositionStack_s PositionStack; PositionStack ps_new(void); /* Returns an empty position stack */ int ps_push(PositionStack *ps, Position pos); /* Returns -1 if overflow */ Position ps_pop(PositionStack *ps); Position ps_peek(PositionStack ps); #endif /* STACK_H_ */