// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com). // All rights reserved. // byte-slider.go package expr import "bytes" type ByteSlider struct { buf []byte length int } func NewByteSlider(size int) *ByteSlider { return &ByteSlider{ buf: make([]byte, max(1, size)), length: 0, } } func (self *ByteSlider) PushEnd(b byte) { if self.length == cap(self.buf) { self.length-- for i := 0; i < self.length; i++ { self.buf[i] = self.buf[i+1] } } self.buf[self.length] = b self.length++ } func (self *ByteSlider) Equal(target []byte) bool { return target != nil && bytes.Equal(self.buf, target) }