Mon 16 Mar 11:09:06 CET 2026

This commit is contained in:
sbosse 2026-03-16 11:10:14 +01:00
parent 0b0de734f3
commit 0e8838b640

34
src/stack.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef _STACK_H
#define _STACK_H
#include "types.h"
typedef struct {
number_t *data;
index_t size;
index_t sp;
} stack_t;
/*
Check for possible stack underflow (should normally not happen, in contrast to stack overflow)
*/
#if STACKUNDERFLOWCHECK>0
#define STACKUNDERFLOW(DS,N,R) if (SEMPTYN(DS,N)) { R->error=ESTACK; return 0; };
#else
#define STACKUNDERFLOW(DS,N,R)
#endif
#define SEMPTY(S) S->sp==0
#define SFULL(S) S->sp==S->size
#define SEMPTYN(S,n) S->sp<n
#define SFULLN(S,n) (S->sp+n)>S->size
#define POP(S) S->data[--S->sp]
#define PUSH(S,x) S->data[S->sp++]=x
#define NTH(S,n) S->data[S->sp-n]
stack_t * StackAllocate(int size);
void StackCopy(stack_t *src, stack_t *dst);
void StackInit(stack_t *S,int size,number_t *data);
void StackReset(stack_t *S);
#endif