diff options
author | Stuart Halloway <stu@thinkrelevance.com> | 2010-04-21 21:04:19 -0400 |
---|---|---|
committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-04-22 13:34:28 -0400 |
commit | c2a6a070665289afb425afbe8711fcb09e4d1ab0 (patch) | |
tree | 66c747b70884fb20469d918a1946906c5b4ecc0f /src | |
parent | 15a2b2e553b078b7e482da822dcb9f8c28c2016c (diff) |
reversible support for Vec #267
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/clj/clojure/gvec.clj | 10 | ||||
-rw-r--r-- | src/jvm/clojure/lang/APersistentVector.java | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/clj/clojure/gvec.clj b/src/clj/clojure/gvec.clj index 6c025835..ff89aade 100644 --- a/src/clj/clojure/gvec.clj +++ b/src/clj/clojure/gvec.clj @@ -194,7 +194,7 @@ (or (instance? clojure.lang.Sequential o) (instance? java.util.List o)) (= (seq this) (seq o)) :else false)) - + clojure.lang.IPersistentStack (peek [this] (when (> cnt (int 0)) @@ -233,7 +233,13 @@ (new Vec am cnt shift (.doAssoc this shift root i val) tail (meta this))) (= i cnt) (.cons this val) :else (throw (IndexOutOfBoundsException.)))) - + + clojure.lang.Reversible + (rseq [this] + (if (> (.count this) 0) + (clojure.lang.APersistentVector$RSeq. this (dec (.count this))) + nil)) + clojure.lang.Associative (assoc [this k v] (if (clojure.lang.Util/isInteger k) diff --git a/src/jvm/clojure/lang/APersistentVector.java b/src/jvm/clojure/lang/APersistentVector.java index 7ac9f32b..a6b7405f 100644 --- a/src/jvm/clojure/lang/APersistentVector.java +++ b/src/jvm/clojure/lang/APersistentVector.java @@ -458,11 +458,11 @@ public int compareTo(Object o){ } } -static class RSeq extends ASeq implements IndexedSeq, Counted{ +public static class RSeq extends ASeq implements IndexedSeq, Counted{ final IPersistentVector v; final int i; - RSeq(IPersistentVector vector, int i){ + public RSeq(IPersistentVector vector, int i){ this.v = vector; this.i = i; } |