1234567891011121314151617181920212223242526272829303132 |
- package door
- import "log"
- type FIFOBuffer struct {
- data []rune
- index int
- }
- func NewFIFOBuffer(maxsize int) FIFOBuffer {
- return FIFOBuffer{data: make([]rune, maxsize)}
- }
- func (f *FIFOBuffer) Empty() bool {
- return f.index == 0
- }
- func (f *FIFOBuffer) Push(value rune) {
- if f.index >= len(f.data) {
- log.Panicf("Exceeded FIFOBuffer index %d size %d %#v", f.index, len(f.data), f.data)
- }
- f.data[f.index] = value
- f.index++
- }
- func (f *FIFOBuffer) Pop() rune {
- if f.index == 0 {
- log.Panicf("Pop from empty FIFOBuffer (size %d).", len(f.data))
- }
- f.index--
- return f.data[f.index]
- }
|