iterables for primitive types

This commit is contained in:
Alex Tkachman
2011-12-17 09:47:14 +02:00
parent 9dc37438bc
commit 935a8cd2fa
11 changed files with 113 additions and 9 deletions
+33 -1
View File
@@ -103,6 +103,38 @@ trait Iterable<out T> {
fun iterator() : Iterator<T>
}
trait ByteIterable : Iterable<Byte> {
override fun iterator() : ByteIterator
}
trait ShortIterable : Iterable<Short> {
override fun iterator() : ShortIterator
}
trait IntIterable : Iterable<Int> {
override fun iterator() : IntIterator
}
trait LongIterable : Iterable<Long> {
override fun iterator() : LongIterator
}
trait FloatIterable : Iterable<Float> {
override fun iterator() : FloatIterator
}
trait DoubleIterable : Iterable<Double> {
override fun iterator() : DoubleIterator
}
trait BooleanIterable : Iterable<Boolean> {
override fun iterator() : BooleanIterator
}
trait CharIterable : Iterable<Char> {
override fun iterator() : CharIterator
}
fun Array<T>(val size : Int) : Array<T?>
class Array<T>(val size : Int, init : fun(Int) : T) {
@@ -230,7 +262,7 @@ trait Range<in T : Comparable<T>> {
fun contains(item : T) : Boolean
}
class IntRange(val start : Int, size : Int, reversed : Boolean = false) : Range<Int>, Iterable<Int> {
class IntRange(val start : Int, size : Int, reversed : Boolean = false) : Range<Int>, IntIterable {
fun iterator () : Iterator<Int>
fun contains (elem: Int) : Boolean
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface BooleanIterable extends Iterable<Boolean> {
@Override
BooleanIterator iterator();
}
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface ByteIterable extends Iterable<Byte> {
@Override
ByteIterator iterator();
}
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface CharIterable extends Iterable<Character> {
@Override
CharIterator iterator();
}
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface DoubleIterable extends Iterable<Double> {
@Override
DoubleIterator iterator();
}
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface FloatIterable extends Iterable<Float> {
@Override
FloatIterator iterator();
}
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface IntIterable extends Iterable<Integer> {
@Override
IntIterator iterator();
}
+4 -4
View File
@@ -2,7 +2,7 @@ package jet;
import jet.typeinfo.TypeInfo;
public final class IntRange implements Range<Integer>, Iterable<Integer>, JetObject {
public final class IntRange implements Range<Integer>, IntIterable, JetObject {
private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(IntRange.class, false);
private final int start;
@@ -39,7 +39,7 @@ public final class IntRange implements Range<Integer>, Iterable<Integer>, JetObj
}
@Override
public Iterator<Integer> iterator() {
public IntIterator iterator() {
return new MyIterator(start, count);
}
@@ -66,7 +66,7 @@ public final class IntRange implements Range<Integer>, Iterable<Integer>, JetObj
}
}
private static class MyIterator implements Iterator<Integer> {
private static class MyIterator extends IntIterator {
private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(MyIterator.class, false);
private int cur;
@@ -86,7 +86,7 @@ public final class IntRange implements Range<Integer>, Iterable<Integer>, JetObj
}
@Override
public Integer next() {
public int nextInt() {
count--;
if(reversed) {
return cur--;
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface LongIterable extends Iterable<Long> {
@Override
LongIterator iterator();
}
+4 -4
View File
@@ -2,7 +2,7 @@ package jet;
import jet.typeinfo.TypeInfo;
public final class LongRange implements Range<Long>, Iterable<Long>, JetObject {
public final class LongRange implements Range<Long>, LongIterable, JetObject {
private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(IntRange.class, false);
private final long start;
@@ -39,7 +39,7 @@ public final class LongRange implements Range<Long>, Iterable<Long>, JetObject {
}
@Override
public Iterator<Long> iterator() {
public LongIterator iterator() {
return new MyIterator(start, count);
}
@@ -66,7 +66,7 @@ public final class LongRange implements Range<Long>, Iterable<Long>, JetObject {
}
}
private static class MyIterator implements Iterator<Long> {
private static class MyIterator extends LongIterator {
private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(MyIterator.class, false);
private long cur;
@@ -86,7 +86,7 @@ public final class LongRange implements Range<Long>, Iterable<Long>, JetObject {
}
@Override
public Long next() {
public long nextLong() {
count--;
if(reversed) {
return cur--;
+9
View File
@@ -0,0 +1,9 @@
package jet;
/**
* @author alex.tkachman
*/
public interface ShortIterable extends Iterable<Short> {
@Override
ShortIterator iterator();
}