ChainedTokenIterator.java
package dev.civl.abc.front.c.preproc;
import dev.civl.abc.token.IF.CivlcToken;
public class ChainedTokenIterator implements TokenIterator {
private TokenIterator iter1;
private TokenIterator iter2;
public ChainedTokenIterator(TokenIterator iter1, TokenIterator iter2) {
this.iter1 = iter1;
this.iter2 = iter2;
}
@Override
public boolean hasNext() {
return iter1.hasNext() || iter2.hasNext();
}
@Override
public CivlcToken next() {
if (iter1.hasNext())
return iter1.next();
return iter2.next();
}
@Override
public int peekTypeSkipWhitespace() {
int result = iter1.peekTypeSkipWhitespace();
return result == -1 ? iter2.peekTypeSkipWhitespace() : result;
}
}