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/cli/runtime/PersistentArray.cs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'src/cli/runtime/PersistentArray.cs') diff --git a/src/cli/runtime/PersistentArray.cs b/src/cli/runtime/PersistentArray.cs index 969833a5..3235eb44 100644 --- a/src/cli/runtime/PersistentArray.cs +++ b/src/cli/runtime/PersistentArray.cs @@ -44,7 +44,8 @@ namespace clojure.lang * Java implementation is lock-free */ -public class PersistentArray : Obj, IEnumerable, IArray{ + public class PersistentArray : AnArray, IEnumerable + { #region IEnumerable Members @@ -55,19 +56,14 @@ public class PersistentArray : Obj, IEnumerable, IArray{ #endregion - public ISeq seq() + override public ISeq seq() { if (length() > 0) return new Seq(this, 0); return null; } - public override Obj withMeta(IPersistentMap meta) - { - Obj ret = (Obj)MemberwiseClone(); - ret._meta = meta; - return ret; - } + internal class Master{ internal readonly Entry[] array; @@ -257,15 +253,15 @@ public PersistentArray(IArray init) :this(init.length()) { data.master.load = load; } -virtual public int count(){ +override public int count(){ return data.master.array.Length; } -virtual public int length(){ +override public int length(){ return data.master.array.Length; } -virtual public Object nth(int i){ +override public Object nth(int i){ Entry e = getEntry(i); if(e != null) return e.val; @@ -328,7 +324,7 @@ for (Entry e = (Entry)data.master.array[i]; e != null; e = e.rest()) return null; } -virtual public IArray assocN(int i,Object val) { +override public IArray assocN(int i,Object val) { //if (data.master.load >= data.master.maxLoad) // { // isolate(); -- cgit v1.2.3-18-g5258