iterables for primitive types
This commit is contained in:
@@ -103,6 +103,38 @@ trait Iterable<out T> {
|
|||||||
fun iterator() : Iterator<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?>
|
fun Array<T>(val size : Int) : Array<T?>
|
||||||
|
|
||||||
class Array<T>(val size : Int, init : fun(Int) : 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
|
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 iterator () : Iterator<Int>
|
||||||
|
|
||||||
fun contains (elem: Int) : Boolean
|
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;
|
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 static TypeInfo typeInfo = TypeInfo.getTypeInfo(IntRange.class, false);
|
||||||
|
|
||||||
private final int start;
|
private final int start;
|
||||||
@@ -39,7 +39,7 @@ public final class IntRange implements Range<Integer>, Iterable<Integer>, JetObj
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<Integer> iterator() {
|
public IntIterator iterator() {
|
||||||
return new MyIterator(start, count);
|
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 final static TypeInfo typeInfo = TypeInfo.getTypeInfo(MyIterator.class, false);
|
||||||
|
|
||||||
private int cur;
|
private int cur;
|
||||||
@@ -86,7 +86,7 @@ public final class IntRange implements Range<Integer>, Iterable<Integer>, JetObj
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer next() {
|
public int nextInt() {
|
||||||
count--;
|
count--;
|
||||||
if(reversed) {
|
if(reversed) {
|
||||||
return cur--;
|
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;
|
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 static TypeInfo typeInfo = TypeInfo.getTypeInfo(IntRange.class, false);
|
||||||
|
|
||||||
private final long start;
|
private final long start;
|
||||||
@@ -39,7 +39,7 @@ public final class LongRange implements Range<Long>, Iterable<Long>, JetObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<Long> iterator() {
|
public LongIterator iterator() {
|
||||||
return new MyIterator(start, count);
|
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 final static TypeInfo typeInfo = TypeInfo.getTypeInfo(MyIterator.class, false);
|
||||||
|
|
||||||
private long cur;
|
private long cur;
|
||||||
@@ -86,7 +86,7 @@ public final class LongRange implements Range<Long>, Iterable<Long>, JetObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long next() {
|
public long nextLong() {
|
||||||
count--;
|
count--;
|
||||||
if(reversed) {
|
if(reversed) {
|
||||||
return cur--;
|
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