Summary Files Commits Branches @commit @diff @stats
path: root / awk-edits / #stack.awk
diff options
context:
space:
mode:
1 files changed, 26 insertions, 0 deletions
-rw-r--r--awk-edits/#stack.awk26
diff --git a/awk-edits/#stack.awk b/awk-edits/#stack.awk
new file mode 100644
index 0000000..a8b0b2a
--- /dev/null
+++ b/awk-edits/#stack.awk
@@ -0,0 +1,26 @@
+function newStack(name) {
+ __stacks[name, "length"] = 0
+}
+
+function topStack(name) {
+ return __stacks[name, __stacks[name, "length"] - 1]
+}
+
+function lengthStack(name) {
+ return __stacks[name, "length"]
+}
+
+function pushStack(name, value) {
+ __stacks[name, __stacks[name, "length"]++] = value
+}
+
+function popStack(name, value) {
+ delete __stacks[name, --__stacks[name, "length"]]
+}
+
+function deleteStack(name) {
+ for (i = 0; i < __stacks[name, "length"]; i++) {
+ delete __stacks[name, i]
+ }
+ delete __stacks[name, "length"]
+}