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  }