From a62fb23e1500f7ca1c947bc3c85916f99ea66a95 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Sun, 23 Oct 2011 13:15:37 +0200 Subject: [PATCH] work in progress on examples --- examples/src/collections/HashMap.jetl | 8 ++++---- examples/src/collections/IIterable.jetl | 3 --- examples/src/collections/IIterable.kt | 9 +++++++++ .../{IIterator.jetl => IIterator.kt} | 17 ++++++++++++++++- examples/src/collections/IList.jetl | 4 ---- examples/src/collections/IList.kt | 3 +++ examples/src/collections/ISet.jetl | 3 --- examples/src/collections/ISet.kt | 8 ++++++++ examples/src/collections/ISized.jetl | 3 --- examples/src/collections/ISized.kt | 8 ++++++++ 10 files changed, 48 insertions(+), 18 deletions(-) delete mode 100644 examples/src/collections/IIterable.jetl create mode 100644 examples/src/collections/IIterable.kt rename examples/src/collections/{IIterator.jetl => IIterator.kt} (59%) delete mode 100644 examples/src/collections/IList.jetl create mode 100644 examples/src/collections/IList.kt delete mode 100644 examples/src/collections/ISet.jetl create mode 100644 examples/src/collections/ISet.kt delete mode 100644 examples/src/collections/ISized.jetl diff --git a/examples/src/collections/HashMap.jetl b/examples/src/collections/HashMap.jetl index ac690682d89..b7dc8d37f46 100644 --- a/examples/src/collections/HashMap.jetl +++ b/examples/src/collections/HashMap.jetl @@ -1,15 +1,15 @@ -open class IEquality { +trait IEquality { fun equals(other : Any) : Boolean = (this as java.lang.Object).equals(other as java.lang.Object) } -open class IHashable : IEquality { +trait IHashable : IEquality { val hashCode : Integer get() = (this as java.lang.Object).hashCode() } -open class IMap { +trait IMap { fun get(key : K) : V fun set(key : K, value : V) : V fun remove(key : K) : V @@ -21,7 +21,7 @@ class HashableWrapper wraps (val obj : Any) : IHashable [inline] fun Any.hashable() : HashableWrapper = new HashableWrapper(this) -open class IHashingStrategy { +trait IHashingStrategy { fun equals(a : K, b : K) : Boolean fun hashCode(a : K) : Integer } diff --git a/examples/src/collections/IIterable.jetl b/examples/src/collections/IIterable.jetl deleted file mode 100644 index c9a55af4058..00000000000 --- a/examples/src/collections/IIterable.jetl +++ /dev/null @@ -1,3 +0,0 @@ -open class IIterable { - fun iterator() : IIterator -} diff --git a/examples/src/collections/IIterable.kt b/examples/src/collections/IIterable.kt new file mode 100644 index 00000000000..ae5dbdc0a51 --- /dev/null +++ b/examples/src/collections/IIterable.kt @@ -0,0 +1,9 @@ +namespace jet.collections.iterable + +import jet.collections.iterator.IIterator + +trait IIterable { + fun iterator() : IIterator + + inline fun foreach(operation: fun(element: T) : Unit) = iterator() foreach operation +} diff --git a/examples/src/collections/IIterator.jetl b/examples/src/collections/IIterator.kt similarity index 59% rename from examples/src/collections/IIterator.jetl rename to examples/src/collections/IIterator.kt index 1739eae7a01..0acccda5f47 100644 --- a/examples/src/collections/IIterator.jetl +++ b/examples/src/collections/IIterator.kt @@ -1,7 +1,21 @@ -open class IIterator { +namespace jet.collections.iterator + +trait IIterator { fun next() : T val hasNext : Boolean + inline fun foreach(operation: fun(element: T) : Unit) = while(hasNext) operation(next()) + + inline fun map(transform: fun(element: T) : R) : IIterator { + val that = this + return object : IIterator { + override fun next() : R = transform(that.next()) + + override val hasNext : Boolean + get() = that.hasNext + } + } +/* fun toArray(buffer : MutableArray) : Int { // T is still an in-parameter return fillBuffer(buffer, 0, buffer.size) } @@ -22,4 +36,5 @@ open class IIterator { } return count } +*/ } diff --git a/examples/src/collections/IList.jetl b/examples/src/collections/IList.jetl deleted file mode 100644 index 69fff05ca87..00000000000 --- a/examples/src/collections/IList.jetl +++ /dev/null @@ -1,4 +0,0 @@ -open class IList : IIterable, ISized { - [operator] fun get(index : Int) : T - val isEmpty : Boolean -} \ No newline at end of file diff --git a/examples/src/collections/IList.kt b/examples/src/collections/IList.kt new file mode 100644 index 00000000000..7f887a3a539 --- /dev/null +++ b/examples/src/collections/IList.kt @@ -0,0 +1,3 @@ +trait IList : IIterable, ISized { + fun get(index : Int) : T +} \ No newline at end of file diff --git a/examples/src/collections/ISet.jetl b/examples/src/collections/ISet.jetl deleted file mode 100644 index 0b6741470fd..00000000000 --- a/examples/src/collections/ISet.jetl +++ /dev/null @@ -1,3 +0,0 @@ -open class ISet : IIterable, ISized { - fun contains(item : T) : Boolean -} diff --git a/examples/src/collections/ISet.kt b/examples/src/collections/ISet.kt new file mode 100644 index 00000000000..8b3b375fa32 --- /dev/null +++ b/examples/src/collections/ISet.kt @@ -0,0 +1,8 @@ +namespace jet.collections.set + +import jet.collections.sized.ISized +import jet.collections.iterable.IIterable + +trait ISet : IIterable, ISized { + fun contains(item : T) : Boolean +} diff --git a/examples/src/collections/ISized.jetl b/examples/src/collections/ISized.jetl deleted file mode 100644 index 5e5977f253e..00000000000 --- a/examples/src/collections/ISized.jetl +++ /dev/null @@ -1,3 +0,0 @@ -open class ISized { - val size : Int -} \ No newline at end of file diff --git a/examples/src/collections/ISized.kt b/examples/src/collections/ISized.kt index e1b25190ae0..80f6fdd6a05 100644 --- a/examples/src/collections/ISized.kt +++ b/examples/src/collections/ISized.kt @@ -1,3 +1,11 @@ +namespace jet.collections.sized + trait ISized { val size : Int + + val isEmpty : Boolean + get() = size == 0 + + val isNonEmpty : Boolean + get() = size != 0 } \ No newline at end of file