package eu.bibl.cfide.engine.util;
import java.util.List;
import eu.bibl.banalysis.filter.Filter;
public class StringArrayReader {
protected final String[] array;
protected int index;
protected int mark;
public StringArrayReader(List<String> list) {
array = list.toArray(new String[list.size()]);
}
public StringArrayReader(String[] array) {
this.array = array;
}
public String read() {
return array[index++];
}
public String read(Filter<String> filter) {
while (index < array.length) {
String s = read();
if (filter.accept(s))
return s;
}
return null;
}
public String readPrev(int amt) {
index -= amt;
return array[index];
}
public String readPrev(Filter<String> filter) {
while (index >= 0) {
String s = array[index--];
if (filter.accept(s))
return s;
}
return null;
}
public void markPos() {
mark = index;
}
public void resetPos() {
index = mark;
}
public boolean canReadNext() {
return index < array.length;
}
public void move(int i) {
index += i;
}
public void reset() {
index = 0;
}
public final int size() {
return array.length;
}
public final int index() {
return index;
}
public boolean valid() {
return index >= 0;
}
public void set(int i) {
index = i;
}
}