Subclassed ranges from sequence.

This commit is contained in:
Evgeny Gerashchenko
2013-01-24 01:27:33 +04:00
parent 79d3440c92
commit 90e474ca75
8 changed files with 63 additions and 14 deletions
+21 -7
View File
@@ -6,71 +6,85 @@ public trait Range<in T : Comparable<T>> {
public fun contains(item : T) : Boolean public fun contains(item : T) : Boolean
} }
public class IntRange(public override val start : Int, public override val end : Int) : Range<Int>, IntIterable { public class IntRange(public override val start : Int, public override val end : Int) : Range<Int>, NumberSequence<Int>, IntIterable {
public override fun iterator () : IntIterator public override fun iterator () : IntIterator
public override fun contains (elem: Int) : Boolean public override fun contains (elem: Int) : Boolean
public override val increment: Int
public class object { public class object {
public val EMPTY: IntRange public val EMPTY: IntRange
} }
} }
public class LongRange(public override val start : Long, public override val end : Long) : Range<Long>, LongIterable { public class LongRange(public override val start : Long, public override val end : Long) : Range<Long>, NumberSequence<Long>, LongIterable {
public override fun iterator () : LongIterator public override fun iterator () : LongIterator
public override fun contains (elem: Long) : Boolean public override fun contains (elem: Long) : Boolean
public override val increment: Long
public class object { public class object {
public val EMPTY: LongRange public val EMPTY: LongRange
} }
} }
public class ByteRange(public override val start : Byte, public override val end : Byte) : Range<Byte>, ByteIterable { public class ByteRange(public override val start : Byte, public override val end : Byte) : Range<Byte>, NumberSequence<Byte>, ByteIterable {
public override fun iterator () : ByteIterator public override fun iterator () : ByteIterator
public override fun contains (elem: Byte) : Boolean public override fun contains (elem: Byte) : Boolean
public override val increment: Int
public class object { public class object {
public val EMPTY: ByteRange public val EMPTY: ByteRange
} }
} }
public class ShortRange(public override val start : Short, public override val end : Short) : Range<Short>, ShortIterable { public class ShortRange(public override val start : Short, public override val end : Short) : Range<Short>, NumberSequence<Short>, ShortIterable {
public override fun iterator () : ShortIterator public override fun iterator () : ShortIterator
public override fun contains (elem: Short) : Boolean public override fun contains (elem: Short) : Boolean
public override val increment: Int
public class object { public class object {
public val EMPTY: ShortRange public val EMPTY: ShortRange
} }
} }
public class CharRange(public override val start : Char, public override val end : Char) : Range<Char>, CharIterable { public class CharRange(public override val start : Char, public override val end : Char) : Range<Char>, NumberSequence<Char>, CharIterable {
public override fun iterator () : CharIterator public override fun iterator () : CharIterator
public override fun contains (elem: Char) : Boolean public override fun contains (elem: Char) : Boolean
public override val increment: Int
public class object { public class object {
public val EMPTY: CharRange public val EMPTY: CharRange
} }
} }
public class FloatRange(public override val start : Float, public override val end : Float) : Range<Float>, FloatIterable { public class FloatRange(public override val start : Float, public override val end : Float) : Range<Float>, NumberSequence<Float>, FloatIterable {
public override fun iterator () : FloatIterator public override fun iterator () : FloatIterator
public override fun contains (elem: Float) : Boolean public override fun contains (elem: Float) : Boolean
public override val increment: Float
public class object { public class object {
public val EMPTY: FloatRange public val EMPTY: FloatRange
} }
} }
public class DoubleRange(public override val start : Double, public override val end : Double) : Range<Double>, DoubleIterable { public class DoubleRange(public override val start : Double, public override val end : Double) : Range<Double>, NumberSequence<Double>, DoubleIterable {
public override fun iterator () : DoubleIterator public override fun iterator () : DoubleIterator
public override fun contains (elem: Double) : Boolean public override fun contains (elem: Double) : Boolean
public override val increment: Double
public class object { public class object {
public val EMPTY: DoubleRange public val EMPTY: DoubleRange
} }
+6 -1
View File
@@ -19,7 +19,7 @@ package jet;
import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver;
@AssertInvisibleInResolver @AssertInvisibleInResolver
public final class ByteRange implements Range<Byte>, ByteIterable { public final class ByteRange implements Range<Byte>, NumberSequence<Byte>, ByteIterable {
private final byte start; private final byte start;
private final byte end; private final byte end;
@@ -74,6 +74,11 @@ public final class ByteRange implements Range<Byte>, ByteIterable {
return end; return end;
} }
@Override
public Integer getIncrement() {
return 1;
}
@Override @Override
public ByteIterator iterator() { public ByteIterator iterator() {
return new ByteSequenceIterator(getStart(), getEnd(), 1); return new ByteSequenceIterator(getStart(), getEnd(), 1);
+6 -1
View File
@@ -19,7 +19,7 @@ package jet;
import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver;
@AssertInvisibleInResolver @AssertInvisibleInResolver
public final class CharRange implements Range<Character>, CharIterable { public final class CharRange implements Range<Character>, NumberSequence<Character>, CharIterable {
private final char start; private final char start;
private final char end; private final char end;
@@ -74,6 +74,11 @@ public final class CharRange implements Range<Character>, CharIterable {
return end; return end;
} }
@Override
public Integer getIncrement() {
return 1;
}
@Override @Override
public CharIterator iterator() { public CharIterator iterator() {
return new CharacterSequenceIterator(getStart(), getEnd(), 1); return new CharacterSequenceIterator(getStart(), getEnd(), 1);
+6 -1
View File
@@ -19,7 +19,7 @@ package jet;
import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver;
@AssertInvisibleInResolver @AssertInvisibleInResolver
public final class DoubleRange implements Range<Double>, DoubleIterable { public final class DoubleRange implements Range<Double>, NumberSequence<Double>, DoubleIterable {
private final double start; private final double start;
private final double end; private final double end;
@@ -75,6 +75,11 @@ public final class DoubleRange implements Range<Double>, DoubleIterable {
return end; return end;
} }
@Override
public Double getIncrement() {
return 1.0;
}
@Override @Override
public DoubleIterator iterator() { public DoubleIterator iterator() {
return new DoubleSequenceIterator(getStart(), getEnd(), 1); return new DoubleSequenceIterator(getStart(), getEnd(), 1);
+6 -1
View File
@@ -19,7 +19,7 @@ package jet;
import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver;
@AssertInvisibleInResolver @AssertInvisibleInResolver
public final class FloatRange implements Range<Float>, FloatIterable { public final class FloatRange implements Range<Float>, NumberSequence<Float>, FloatIterable {
private final float start; private final float start;
private final float end; private final float end;
@@ -71,6 +71,11 @@ public final class FloatRange implements Range<Float>, FloatIterable {
return end; return end;
} }
@Override
public Float getIncrement() {
return 1.0f;
}
@Override @Override
public FloatIterator iterator() { public FloatIterator iterator() {
return new FloatSequenceIterator(getStart(), getEnd(), 1); return new FloatSequenceIterator(getStart(), getEnd(), 1);
+6 -1
View File
@@ -19,7 +19,7 @@ package jet;
import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver;
@AssertInvisibleInResolver @AssertInvisibleInResolver
public final class IntRange implements Range<Integer>, IntIterable { public final class IntRange implements Range<Integer>, NumberSequence<Integer>, IntIterable {
private final int start; private final int start;
private final int end; private final int end;
@@ -74,6 +74,11 @@ public final class IntRange implements Range<Integer>, IntIterable {
return end; return end;
} }
@Override
public Integer getIncrement() {
return 1;
}
@Override @Override
public IntIterator iterator() { public IntIterator iterator() {
return new IntSequenceIterator(getStart(), getEnd(), 1); return new IntSequenceIterator(getStart(), getEnd(), 1);
+6 -1
View File
@@ -19,7 +19,7 @@ package jet;
import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver;
@AssertInvisibleInResolver @AssertInvisibleInResolver
public final class LongRange implements Range<Long>, LongIterable { public final class LongRange implements Range<Long>, NumberSequence<Long>, LongIterable {
private final long start; private final long start;
private final long end; private final long end;
@@ -74,6 +74,11 @@ public final class LongRange implements Range<Long>, LongIterable {
return end; return end;
} }
@Override
public Long getIncrement() {
return 1L;
}
@Override @Override
public LongIterator iterator() { public LongIterator iterator() {
return new LongSequenceIterator(getStart(), getEnd(), 1); return new LongSequenceIterator(getStart(), getEnd(), 1);
+6 -1
View File
@@ -19,7 +19,7 @@ package jet;
import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver;
@AssertInvisibleInResolver @AssertInvisibleInResolver
public final class ShortRange implements Range<Short>, ShortIterable { public final class ShortRange implements Range<Short>, NumberSequence<Short>, ShortIterable {
private final short start; private final short start;
private final short end; private final short end;
@@ -74,6 +74,11 @@ public final class ShortRange implements Range<Short>, ShortIterable {
return end; return end;
} }
@Override
public Integer getIncrement() {
return 1;
}
@Override @Override
public ShortIterator iterator() { public ShortIterator iterator() {
return new ShortSequenceIterator(getStart(), getEnd(), 1); return new ShortSequenceIterator(getStart(), getEnd(), 1);