// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package state

type SliceIterator struct {
	data []interface{}
	idx  int
}

func NewSliceIterator() *SliceIterator {
	return &SliceIterator{
		data: []interface{}{},
		idx:  0,
	}
}

func (i *SliceIterator) Add(datum interface{}) {
	i.data = append(i.data, datum)
}

func (i *SliceIterator) Next() interface{} {
	if i.idx == len(i.data) {
		return nil
	}

	datum := i.data[i.idx]
	i.idx += 1
	return datum
}

func (i *SliceIterator) WatchCh() <-chan struct{} {
	return nil
}
