From df04746fe826c35a09a90afec62d4749ae7a7b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Mon, 25 Nov 1996 12:46:58 -0800 Subject: [PATCH] new files: implements a generic stack Rev: lib/include/stack.h:1.1 Rev: lib/include/stack.pre.pike:1.1 --- lib/include/stack.h | 0 lib/include/stack.pre.pike | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 lib/include/stack.h create mode 100644 lib/include/stack.pre.pike diff --git a/lib/include/stack.h b/lib/include/stack.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/include/stack.pre.pike b/lib/include/stack.pre.pike new file mode 100644 index 0000000000..480e715e94 --- /dev/null +++ b/lib/include/stack.pre.pike @@ -0,0 +1,28 @@ +#define error(X) throw( ({ (X), backtrace()[0..sizeof(backtrace())-2] }) ) + +class stack { + int ptr; + mixed *arr=allocate(32); + + void push(mixed val) + { + if(ptr==sizeof(arr)) arr+=allocate(ptr); + arr[ptr++]=val; + } + + mixed pop(mixed val) + { + mixed foo; + if(--ptr < 0) + error("Stack underflow\n"); + + foo=arr[ptr]; + arr[ptr]=0; /* Don't waste references */ + return foo; + } +}; + +void create() +{ + master()->add_precompiled_program("/precompiled/stack",stack); +} -- GitLab