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