summaryrefslogtreecommitdiff
path: root/stack.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-04-05 16:53:20 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-04-05 16:53:20 +0200
commitbdecd1b6e0ea6d9bf6c205d418ac989c0aa0deb1 (patch)
tree11878202a7b1db9688f82af7fef975a3be40b95b /stack.go
parentf3d0b3595a01cddbe7438d5cda0bc2aa68a187f8 (diff)
Add Insert method
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]