aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/tokeniser/InfinitelyPaddedIterator.java
blob: 54548610c2fb49c30999511962c91db82f38896f (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
27
28
29
30
31
32
33
34
35
package org.shedlang.compiler.tokeniser;

import java.util.List;

public class InfinitelyPaddedIterator<T> {
    private final List<T> elements;
    private final T end;
    private int index = 0;

    public InfinitelyPaddedIterator(List<T> elements, T end) {
        this.elements = elements;
        this.end = end;
    }

    public T get() {
        return get(0);
    }

    public T get(int offset) {
        var index = this.index + offset;
        if (index < elements.size()) {
            return elements.get(index);
        } else {
            return end;
        }
    }

    public void moveNext() {
        index++;
    }

    public boolean isAtStart() {
        return this.index == 0;
    }
}