summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go
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]
}