From a8ba1dbdec6976596e005b7ffe2d06355280a10f Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Fri, 4 Aug 2006 23:43:39 +0000 Subject: added AnArray --- src/jvm/clojure/lang/AnArray.java | 27 +++++++++++++++++++++++++++ src/jvm/clojure/lang/PersistentArray.java | 14 ++------------ src/jvm/clojure/lang/Tuple.java | 2 +- 3 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 src/jvm/clojure/lang/AnArray.java (limited to 'src/jvm') diff --git a/src/jvm/clojure/lang/AnArray.java b/src/jvm/clojure/lang/AnArray.java new file mode 100644 index 00000000..0afe7c79 --- /dev/null +++ b/src/jvm/clojure/lang/AnArray.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) Rich Hickey. All rights reserved. + * The use and distribution terms for this software are covered by the + * Common Public License 1.0 (http://opensource.org/licenses/cpl.php) + * which can be found in the file CPL.TXT at the root of this distribution. + * By using this software in any fashion, you are agreeing to be bound by + * the terms of this license. + * You must not remove this notice, or any other, from this software. + **/ + +package clojure.lang; + +public abstract class AnArray extends Obj implements IArray, Cloneable { + +public Obj withMeta(IPersistentMap meta) { + try{ + Obj ret = (Obj) clone(); + ret._meta = meta; + return ret; + } + catch(CloneNotSupportedException ignore) + { + return null; + } +} + +} diff --git a/src/jvm/clojure/lang/PersistentArray.java b/src/jvm/clojure/lang/PersistentArray.java index 0b0ce5b7..2483c6bd 100644 --- a/src/jvm/clojure/lang/PersistentArray.java +++ b/src/jvm/clojure/lang/PersistentArray.java @@ -46,7 +46,7 @@ import java.util.Random; * I added hybrid most-recent-sequential-range + shared-bitset idea, multi-thread-safety */ -public class PersistentArray extends Obj implements Iterable, IArray, Cloneable { +public class PersistentArray extends AnArray implements Iterable { public Iterator iterator(){ return new ValIter(this); @@ -58,17 +58,7 @@ public ISeq seq() { return null; } -public Obj withMeta(IPersistentMap meta) { - try{ - Obj ret = (Obj) clone(); - ret._meta = meta; - return ret; - } - catch(CloneNotSupportedException ignore) - { - return null; - } -} + static class Master{ final Entry[] array; diff --git a/src/jvm/clojure/lang/Tuple.java b/src/jvm/clojure/lang/Tuple.java index da4cb152..3117227c 100644 --- a/src/jvm/clojure/lang/Tuple.java +++ b/src/jvm/clojure/lang/Tuple.java @@ -12,7 +12,7 @@ package clojure.lang; -public class Tuple implements IArray{ +public class Tuple extends AnArray{ final Object[] array; -- cgit v1.2.3-70-g09d2