github.com/n1ghtfa1l/go-vnt@v0.6.4-alpha.6/core/wavm/internal/stack/stack.go (about) 1 // Copyright 2017 The go-interpreter Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package stack implements a growable uint64 stack 6 package stack 7 8 type Stack struct { 9 slice []uint64 10 } 11 12 func (s *Stack) Push(b uint64) { 13 s.slice = append(s.slice, b) 14 } 15 16 func (s *Stack) Pop() uint64 { 17 v := s.Top() 18 s.slice = s.slice[:len(s.slice)-1] 19 return v 20 } 21 22 func (s *Stack) SetTop(v uint64) { 23 s.slice[len(s.slice)-1] = v 24 } 25 26 func (s *Stack) Top() uint64 { 27 return s.slice[len(s.slice)-1] 28 } 29 30 func (s *Stack) Get(i int) uint64 { 31 return s.slice[i] 32 } 33 34 func (s *Stack) Set(i int, v uint64) { 35 s.slice[i] = v 36 } 37 38 func (s *Stack) Len() int { 39 return len(s.slice) 40 }