Files
engine/common/ring.go
2022-02-07 23:23:52 +08:00

37 lines
601 B
Go

package common
import (
"github.com/Monibuca/engine/v4/util"
)
type RingBuffer[T any] struct {
*util.Ring[T]
Size int
MoveCount uint32
}
func (rb *RingBuffer[T]) Init(n int) *RingBuffer[T] {
if rb == nil {
rb = new(RingBuffer[T])
}
rb.Ring = util.NewRing[T](n)
rb.Size = n
return rb
}
// func (rb RingBuffer[T]) SubRing(rr *util.Ring[T]) *RingBuffer[T] {
// rb.Ring = rr
// rb.MoveCount = 0
// return &rb
// }
func (rb *RingBuffer[T]) MoveNext() *T {
rb.Ring = rb.Next()
rb.MoveCount++
return &rb.Value
}
func (rb *RingBuffer[T]) PreValue() *T {
return &rb.Prev().Value
}