8
void rlstk_push(struct rl_stack *s, rl_opcode_t val) {
9
if(s->top == STACKSIZE)
10
rl_fatal(EX_SOFTWARE, _("Stack overflow"));
11
s->data[s->top++] = val;
14
rl_opcode_t rlstk_pop(struct rl_stack *s) {
16
rl_fatal(EX_SOFTWARE, _("Stack underflow"));
17
return s->data[--s->top];
20
rl_opcode_t rlstk_peek(struct rl_stack *s, int offset) {
22
rl_fatal(EX_SOFTWARE, _("Stack peek undefined"));
23
return s->data[s->top - offset - 1];
26
void rlstk_poke(struct rl_stack *s, int offset, rl_opcode_t val) {
28
rl_fatal(EX_SOFTWARE, _("Stack peek undefined"));
29
s->data[s->top - offset - 1] = val;
32
struct rl_stack *rlstk_new() {
35
s = malloc(sizeof(*s));
37
rl_fatal(EX_SOFTWARE, _("ABORT - Can't allocate memory"));
38
memset(s, 0, sizeof(*s));
42
void rlstk_free(struct rl_stack *s) {