iterables for primitive types
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface BooleanIterable extends Iterable<Boolean> {
|
||||
@Override
|
||||
BooleanIterator iterator();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface ByteIterable extends Iterable<Byte> {
|
||||
@Override
|
||||
ByteIterator iterator();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface CharIterable extends Iterable<Character> {
|
||||
@Override
|
||||
CharIterator iterator();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface DoubleIterable extends Iterable<Double> {
|
||||
@Override
|
||||
DoubleIterator iterator();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface FloatIterable extends Iterable<Float> {
|
||||
@Override
|
||||
FloatIterator iterator();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface IntIterable extends Iterable<Integer> {
|
||||
@Override
|
||||
IntIterator iterator();
|
||||
}
|
||||
@@ -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--;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface LongIterable extends Iterable<Long> {
|
||||
@Override
|
||||
LongIterator iterator();
|
||||
}
|
||||
@@ -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--;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package jet;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public interface ShortIterable extends Iterable<Short> {
|
||||
@Override
|
||||
ShortIterator iterator();
|
||||
}
|
||||
Reference in New Issue
Block a user