diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-08-30 18:06:36 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-08-30 18:06:36 +0000 |
commit | cb96c6d66d4e77b162359495840199cb94e0ccbf (patch) | |
tree | 08b289c93329441dcb45703309cfefef1252ebcb | |
parent | bdaeb6f6706d1e89fe289f41662507531c01fce4 (diff) |
made Iterable
-rw-r--r-- | src/jvm/clojure/lang/PersistentVector.java | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/PersistentVector.java b/src/jvm/clojure/lang/PersistentVector.java index d572bffa..8e4f0973 100644 --- a/src/jvm/clojure/lang/PersistentVector.java +++ b/src/jvm/clojure/lang/PersistentVector.java @@ -12,11 +12,9 @@ package clojure.lang; -import java.util.Vector; -import java.util.Random; -import java.util.List; +import java.util.*; -public class PersistentVector extends Obj implements IPersistentArray, IPersistentList{ +public class PersistentVector extends Obj implements IPersistentArray, IPersistentList, Iterable{ final int cnt; final int shift; final Object[] root; @@ -164,7 +162,27 @@ public PersistentVector withMeta(IPersistentMap meta){ return new PersistentVector(meta, cnt, shift, root); } +public Iterator iterator(){ + //todo - something more efficient + return new Iterator(){ + int i = 0; + + public boolean hasNext(){ + return i < cnt; + } + + public Object next(){ + return nth(i++); + } + + public void remove(){ + throw new UnsupportedOperationException(); + } + }; +} + static class Seq extends ASeq implements IndexedSeq{ + //todo - something more efficient final PersistentVector v; final int i; |