51 lines
986 B
Go
51 lines
986 B
Go
// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
// All rights reserved.
|
|
|
|
// iter-list.go
|
|
package expr
|
|
|
|
import "io"
|
|
|
|
type FlatArrayIterator struct {
|
|
a []any
|
|
index int
|
|
}
|
|
|
|
func NewFlatArrayIterator(array []any) *FlatArrayIterator {
|
|
return &FlatArrayIterator{a: array, index: 0}
|
|
}
|
|
|
|
func (it *FlatArrayIterator) HasOperation(name string) bool {
|
|
return false
|
|
}
|
|
|
|
func (it *FlatArrayIterator) CallOperation(name string, args []any) (any, error) {
|
|
return nil, errNoOperation(name)
|
|
}
|
|
|
|
func (it *FlatArrayIterator) Current() (item any, err error) {
|
|
if it.index >= 0 && it.index < len(it.a) {
|
|
item = it.a[it.index]
|
|
} else {
|
|
err = io.EOF
|
|
}
|
|
return
|
|
}
|
|
|
|
func (it *FlatArrayIterator) Next() (item any, err error) {
|
|
if item, err = it.Current(); err != io.EOF {
|
|
it.index++
|
|
}
|
|
// if it.index < len(it.a) {
|
|
// item = it.a[it.index]
|
|
// it.index++
|
|
// } else {
|
|
// err = io.EOF
|
|
// }
|
|
return
|
|
}
|
|
|
|
func (it *FlatArrayIterator) Index() int {
|
|
return it.index - 1
|
|
}
|