package st.gravel.core; import java.lang.reflect.Array; import st.gravel.support.jvm.Block1; public class Interval { private final int start; private final int stop; public Interval(int start, int stop) { this.start = start; this.stop = stop; } @SuppressWarnings("unchecked") public <R> R[] collect_(Block1<R, Integer> aBlock) { R[] result = (R[]) Array.newInstance(aBlock.getResultClass(), (stop - start) + 1); for (int i = start; i <= stop; i++) { result[i - 1] = aBlock.value_((Integer) i); } return result; } public String join_(Block1<String, Integer> aBlock) { StringBuilder str = new StringBuilder(); for (int i = start; i <= stop; i++) { str.append(aBlock.value_((Integer) i)); } return str.toString(); } }