summaryrefslogtreecommitdiff
path: root/stack.go
diff options
context:
space:
mode:
Diffstat (limited to 'stack.go')
-rw-r--r--stack.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/stack.go b/stack.go
index 095811e..eb9b6be 100644
--- a/stack.go
+++ b/stack.go
@@ -12,12 +12,19 @@ func NewStack() Stack {
return Stack{}
}
-// Push generic value into Stack
+// Push adds value at tail
func (s *Stack) Push(v Value) {
*s = append(*s, v)
}
-// Pop generic value from Stack
+// Insert inserts value at head
+func (s *Stack) Insert(v Value) {
+ *s = append(*s, 0)
+ copy((*s)[1:], (*s)[:len(*s)-1])
+ (*s)[0] = v
+}
+
+// Pop retrieves value from tail
func (s *Stack) Pop() (v Value) {
if size := len(*s); size > 0 {
v, *s = (*s)[size-1], (*s)[:size-1]