package uk.kludje.experimental.sequence; // TODO: validation public final class Sequences { private Sequences() { } public static BooleanSequence booleans(boolean... seq) { class ArrayBooleanSequence extends BooleanSequence { @Override public int length() { return seq.length; } @Override public boolean booleanAt(int index) { return seq[index]; } } return new ArrayBooleanSequence(); } public static ByteSequence bytes(byte... seq) { class ArrayByteSequence extends ByteSequence { @Override public int length() { return seq.length; } @Override public byte byteAt(int index) { return seq[index]; } } return new ArrayByteSequence(); } public static CharacterSequence chars(char... seq) { class ArrayCharSequence extends CharacterSequence { @Override public int length() { return seq.length; } @Override public char charAt(int index) { return seq[index]; } } return new ArrayCharSequence(); } public static CharacterSequence charView(CharSequence seq, int start, int end) { class CharView extends CharacterSequence { @Override public int length() { return end - start; } @Override public char charAt(int index) { return seq.charAt(index + start); } } return new CharView(); } public static CharacterSequence charView(CharSequence seq) { return charView(seq, 0, seq.length()); } }