struct g_Stack { char **data; /* A pointer to an array of pointers. */ int Sptr; /* Current stack pointer */ int Max; /* Maximum size of the stack */ }; typedef struct g_Stack Stack; /*** Access functions ***/ #define STgetItem(st,x) (*(st->data))[x] /** Does no bound checking! **/ #define STgetMax(st) (st->Max) #define STgetPtr(st) (st->Sptr) /*** Modification functions. ***/ #define STsetItem(st,x,y) ((*(st->data))[x]=(y)) #define STsetItemptr(st,x) (st->data=((char*)x)) #define STsetMax(st,x) (st->Max=(x)) #define STsetPtr(st,x) (st->Sptr=(x)) /* * Functions defined in stack.c */ int STnew(); int STpop(); int STpush();