org.eclipse.xtext.xbase.lib
Class IntegerRange

java.lang.Object
  extended by org.eclipse.xtext.xbase.lib.IntegerRange
All Implemented Interfaces:
java.lang.Iterable<java.lang.Integer>

public class IntegerRange
extends java.lang.Object
implements java.lang.Iterable<java.lang.Integer>

A sequence of integers starting from start up to end with an increment of step. The value of start is always included. The value of end is included only if the difference between end-start is a multiple of step. The step can be positive or negative, but never 0. It must have the same signum as of end-start.

Since:
2.3
Author:
Jan Koehnlein - Initial contribution and API

Constructor Summary
IntegerRange(int start, int end)
          Constructs a new IntegerRange object.
IntegerRange(int start, int end, int step)
          Constructs a new IntegerRange object.
 
Method Summary
 boolean contains(int number)
          Checks whether this contains the given number, i.e.
 int getEnd()
           
 int getSize()
          Returns the number of elements in this IntegerRange.
 int getStart()
           
 int getStep()
           
 java.util.ListIterator<java.lang.Integer> iterator()
           
 IntegerRange withStep(int step)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IntegerRange

public IntegerRange(int start,
                    int end)
Constructs a new IntegerRange object. The step will be set to -1 if end
Parameters:
start - the start value (inclusive)
end - the end value (inclusive)

IntegerRange

public IntegerRange(int start,
                    int end,
                    int step)
Constructs a new IntegerRange object.

Parameters:
start - the start value (inclusive)
end - the end value (inclusive if end-start%step == 0)
step - the increment
Method Detail

iterator

public java.util.ListIterator<java.lang.Integer> iterator()
Specified by:
iterator in interface java.lang.Iterable<java.lang.Integer>
Returns:
a read-only ListIterator for this.

getStart

public int getStart()
Returns:
the start value

getStep

public int getStep()
Returns:
the step value

getEnd

public int getEnd()
Returns:
the end value

getSize

public int getSize()
Returns the number of elements in this IntegerRange. That is not the length of the interval, but (end-start)/step + 1.

Returns:
the number of elements in this IntegerRange.

withStep

public IntegerRange withStep(int step)
Parameters:
step - the step of the new range.
Returns:
a new IntegerRange with the given step.

contains

public boolean contains(int number)
Checks whether this contains the given number, i.e. whether the iterator will yield the number. This is different from interval containment: 0..2.by(2) will not contain 1.

Parameters:
number - the number to be checked for containment.
Returns:
whether this sequence contains the given number or not.