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] }