From 0d14833a9c76c51cc7417d8fd60bec9d92714b8e Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 31 Jul 1999 18:44:53 +0000 Subject: Further development work. Parser nearly finished [originally from svn r187] --- misc.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 misc.c (limited to 'misc.c') diff --git a/misc.c b/misc.c new file mode 100644 index 0000000..ec38016 --- /dev/null +++ b/misc.c @@ -0,0 +1,42 @@ +/* + * misc.c: miscellaneous useful items + */ + +#include "buttress.h" + +struct stackTag { + void **data; + int sp; + int size; +}; + +stack stk_new(void) { + stack s; + + s = smalloc(sizeof(*s)); + s->sp = 0; + s->size = 0; + s->data = NULL; + + return s; +} + +void stk_free(stack s) { + sfree(s->data); + sfree(s); +} + +void stk_push(stack s, void *item) { + if (s->size <= s->sp) { + s->size = s->sp + 32; + s->data = srealloc(s->data, s->size * sizeof(*s->data)); + } + s->data[s->sp++] = item; +} + +void *stk_pop(stack s) { + if (s->sp > 0) + return s->data[--s->sp]; + else + return NULL; +} -- cgit v1.1