blob: e3118fa69e94eadf95b5e80cbcfd8f56b3b3c39b (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 | package wazevoapi
// Queue is the resettable queue where the underlying slice is reused.
type Queue[T any] struct {
	index int
	Data  []T
}
func (q *Queue[T]) Enqueue(v T) {
	q.Data = append(q.Data, v)
}
func (q *Queue[T]) Dequeue() (ret T) {
	ret = q.Data[q.index]
	q.index++
	return
}
func (q *Queue[T]) Empty() bool {
	return q.index >= len(q.Data)
}
func (q *Queue[T]) Reset() {
	q.index = 0
	q.Data = q.Data[:0]
}
 |