package com.avanon.blu.gen.xtext;
import java.util.Iterator;
public class IntRange implements Iterable<Integer> {
private int min;
private int max;
private int start;
private int end;
public IntRange( int end ) {
this( 0, end );
}
public IntRange( int start, int end ) {
this.start = start;
this.end = end;
this.min = Math.min( start, end );
this.max = Math.max( start, end );
}
@Override
public Iterator<Integer> iterator() {
return new IntIterator( start, end );
}
public static class IntIterator implements Iterator<Integer> {
private int current;
private final int end;
private final int step;
public IntIterator( int start, int end ) {
this.current = start;
this.end = end;
this.step = ( start < end ) ? 1 : ( start == end ) ? 0 : -1;
}
@Override
public boolean hasNext() {
return current != end;
}
@Override
public Integer next() {
int result = current;
current += step;
return result;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
public boolean contains( int value ) {
return min <= value && value < max;
}
public static IntRange range( final Integer end ) {
if (end == null) {
throw new NullPointerException("a");
}
return new IntRange( end );
}
public static Iterable<Integer> operator_upTo(final Integer a, Number b) {
if (a == null)
throw new NullPointerException("a");
return new IntRange( a, b.intValue() );
}
}
But my method (last one in the code) isn't picked up. Why not?
A. Digulla