package uk.co.nickthecoder.feather.runtime;
public class CharRange extends CharProgression {
public CharRange(char start, char endInclusive) {
super(start, endInclusive, 1);
}
public static final CharRange EMPTY = new CharRange('B', 'A');
public static CharRange exclusiveRange(char start, char endInclusive) {
if (endInclusive == Character.MIN_VALUE) return EMPTY;
return new CharRange(start, (char) (endInclusive - 1));
}
public boolean contains(char value) {
return start <= value && value <= endInclusive;
}
public CharProgression backwards() {
return new CharProgression(endInclusive, start, -1);
}
public CharProgression step(int step) {
if (step > 0) {
return new CharProgression(start, endInclusive, step);
}
if (step < 0) {
return new CharProgression(endInclusive, start, step);
}
throw new IllegalArgumentException("Step cannot be 0");
}
}