int-iterator: fixed iterator's index value

This commit is contained in:
2026-07-31 07:26:41 +02:00
parent 7430e9bdf7
commit 1d15b99740
2 changed files with 25 additions and 23 deletions
+23 -22
View File
@@ -15,11 +15,13 @@ import (
)
type IntIterator struct {
count int64
index int64
start int64
stop int64
step int64
count int64
index int64
next int64
current any
start int64
stop int64
step int64
}
func NewIntIteratorFromInterval(p *interval.IntervalType) (it *IntIterator, err error) {
@@ -110,26 +112,23 @@ func (it *IntIterator) CallOperation(name string, args map[string]any) (v any, e
}
func (it *IntIterator) Current() (item any, err error) {
if it.start <= it.stop {
if it.index >= it.start && it.index < it.stop {
item = it.index
} else {
err = io.EOF
}
} else {
if it.index > it.stop && it.index <= it.start {
item = it.index
} else {
err = io.EOF
}
}
return
return it.current, nil
}
func (it *IntIterator) Next() (item any, err error) {
it.index += it.step
if item, err = it.Current(); err != io.EOF {
item = it.next
if it.step > 0 {
if it.next+it.step > it.stop {
err = io.EOF
}
} else if it.next+it.step < it.stop {
err = io.EOF
}
if err == nil {
it.index++
it.count++
it.next += it.step
it.current = item
}
return
}
@@ -143,7 +142,9 @@ func (it *IntIterator) Count() int64 {
}
func (it *IntIterator) Reset() error {
it.index = it.start - it.step
it.index = -1
it.next = it.start
it.current = nil
it.count = 0
return nil
}