diff options
author | Julien Dessaux | 2021-09-23 11:45:49 +0200 |
---|---|---|
committer | Julien Dessaux | 2021-09-23 11:45:49 +0200 |
commit | 759ee2aa10323d1960405c93f7cd4cf6d383ae7a (patch) | |
tree | 87648b4811b0264f1b54c454ed2569abe1abee94 /pkg/stack/stack.go | |
parent | Began coding the interpreter (only manages the minimal example for now!) (diff) | |
download | gofunge98-759ee2aa10323d1960405c93f7cd4cf6d383ae7a.tar.gz gofunge98-759ee2aa10323d1960405c93f7cd4cf6d383ae7a.tar.bz2 gofunge98-759ee2aa10323d1960405c93f7cd4cf6d383ae7a.zip |
Each pointer needs its own stack, merging the two packages to avoid a circular dependency
Diffstat (limited to 'pkg/stack/stack.go')
-rw-r--r-- | pkg/stack/stack.go | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/pkg/stack/stack.go b/pkg/stack/stack.go deleted file mode 100644 index 4dbb72c..0000000 --- a/pkg/stack/stack.go +++ /dev/null @@ -1,51 +0,0 @@ -package stack - -type Stack struct { - size int - height int - data []int - next *Stack // Pointer to the next element in the stack stack -} - -func NewStack() *Stack { - return &Stack{ - size: 32, - height: 0, - data: make([]int, 32), - next: nil, - } -} - -func (s *Stack) Clear() { - s.height = 0 -} - -func (s *Stack) Duplicate() { - if s.height > 0 { - s.Push(s.data[s.height-1]) - } -} - -func (s *Stack) Pop() int { - if s.height > 0 { - s.height-- - return s.data[s.height] - } - return 0 -} - -func (s *Stack) Push(value int) { - if s.height >= s.size { - s.size += 32 - s.data = append(s.data, make([]int, 32)...) - } - s.data[s.height] = value - s.height++ -} - -func (s *Stack) Swap() { - a := s.Pop() - b := s.Pop() - s.Push(a) - s.Push(b) -} |