From da11eb9d0dd587e532470965b3c655b741d1fa5c Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Sat, 5 Aug 2006 15:31:36 +0000 Subject: changed return type of assoc to Associative --- src/cli/runtime/APersistentMap.cs | 2 +- src/cli/runtime/AnArray.cs | 4 ++-- src/cli/runtime/Associative.cs | 2 +- src/cli/runtime/MapEntry.cs | 4 ++-- src/cli/runtime/PersistentArrayMap.cs | 2 +- src/cli/runtime/PersistentHashtableMap.cs | 4 ++-- src/cli/runtime/PersistentListMap.cs | 8 ++++---- src/cli/runtime/PersistentTreeMap.cs | 2 +- src/cli/runtime/TObj.cs | 2 +- src/cli/runtime/Var.cs | 2 +- src/jvm/clojure/lang/AnArray.java | 4 ++-- src/jvm/clojure/lang/Associative.java | 2 +- src/jvm/clojure/lang/IPersistentMap.java | 1 + 13 files changed, 20 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/cli/runtime/APersistentMap.cs b/src/cli/runtime/APersistentMap.cs index 5b560036..4e39acb7 100644 --- a/src/cli/runtime/APersistentMap.cs +++ b/src/cli/runtime/APersistentMap.cs @@ -45,7 +45,7 @@ public abstract class APersistentMap : Obj, IPersistentMap{ abstract public object get(object key); - abstract public IPersistentMap assoc(object key, object val); + abstract public Associative assoc(object key, object val); #endregion diff --git a/src/cli/runtime/AnArray.cs b/src/cli/runtime/AnArray.cs index 76640631..b586d6f5 100644 --- a/src/cli/runtime/AnArray.cs +++ b/src/cli/runtime/AnArray.cs @@ -67,9 +67,9 @@ public IMapEntry find(Object key) { return null; } -public IPersistentMap assoc(Object key, Object val) { +public Associative assoc(Object key, Object val) { int i = Convert.ToInt32(key); - return (IPersistentMap) assocN(i,val); + return (Associative)assocN(i, val); } public Object get(Object key) { diff --git a/src/cli/runtime/Associative.cs b/src/cli/runtime/Associative.cs index 062d9099..2711e993 100644 --- a/src/cli/runtime/Associative.cs +++ b/src/cli/runtime/Associative.cs @@ -16,6 +16,6 @@ namespace clojure.lang bool contains(object key); IMapEntry find(object key); object get(object key); - IPersistentMap assoc(object key, object val); + Associative assoc(object key, object val); } } diff --git a/src/cli/runtime/MapEntry.cs b/src/cli/runtime/MapEntry.cs index 13051107..606336d3 100644 --- a/src/cli/runtime/MapEntry.cs +++ b/src/cli/runtime/MapEntry.cs @@ -38,7 +38,7 @@ override public IMapEntry find(Object key) { return RT.equal(_key, key)?this:null; } -override public IPersistentMap assoc(Object key, Object val) { +override public Associative assoc(Object key, Object val) { if(RT.equal(_key, key)) { if(_val == val) @@ -55,7 +55,7 @@ override public Object get(Object key) { override public IPersistentMap assocEx(Object key, Object val) { if(RT.equal(_key, key)) throw new Exception("Key already present"); - return assoc(key, val); + return (IPersistentMap)assoc(key, val); } override public IPersistentMap without(Object key) { diff --git a/src/cli/runtime/PersistentArrayMap.cs b/src/cli/runtime/PersistentArrayMap.cs index 4e27ad16..6c848685 100644 --- a/src/cli/runtime/PersistentArrayMap.cs +++ b/src/cli/runtime/PersistentArrayMap.cs @@ -98,7 +98,7 @@ public IPersistentMap assocEx(Object key, Object val) { return create(newArray); } -public IPersistentMap assoc(Object key, Object val) { +public Associative assoc(Object key, Object val) { int i = indexOf(key); Object[] newArray; if(i >= 0) //already have key, same-sized replacement diff --git a/src/cli/runtime/PersistentHashtableMap.cs b/src/cli/runtime/PersistentHashtableMap.cs index a833fa4c..0bf8930b 100644 --- a/src/cli/runtime/PersistentHashtableMap.cs +++ b/src/cli/runtime/PersistentHashtableMap.cs @@ -98,7 +98,7 @@ public IPersistentMap assocEx(Object key, Object val) { return create(_count + incr, newArray, growAtCount); } -public IPersistentMap assoc(Object key, Object val) { +public Associative assoc(Object key, Object val) { if(_count > growAtCount) return grow().assoc(key, val); int i = bucketFor(key,array); @@ -116,7 +116,7 @@ PersistentArray doPut(int i,Object key,Object val,PersistentArray array){ IPersistentMap newEntries; if (entries != null) { - newEntries = entries.assoc(key, val); + newEntries = (IPersistentMap)entries.assoc(key, val); if(newEntries == entries) //already there with same value, no op return array; } diff --git a/src/cli/runtime/PersistentListMap.cs b/src/cli/runtime/PersistentListMap.cs index 948a70c4..714dfe38 100644 --- a/src/cli/runtime/PersistentListMap.cs +++ b/src/cli/runtime/PersistentListMap.cs @@ -68,10 +68,10 @@ public virtual IMapEntry find(Object key){ } public virtual IPersistentMap assocEx(Object key, Object val){ - return assoc(key, val); + return (IPersistentMap)assoc(key, val); } -public virtual IPersistentMap assoc(Object key, Object val){ +public virtual Associative assoc(Object key, Object val){ return new Tail(key, val, _meta); } @@ -202,7 +202,7 @@ internal class Tail : PersistentListMap { return new Link(key, val, this,_meta); } - override public IPersistentMap assoc(Object key, Object val) + override public Associative assoc(Object key, Object val) { if(equalKey(key,_key)) //replace { @@ -289,7 +289,7 @@ internal class Link : PersistentListMap { return new Link(key,val,this,_meta); } - override public IPersistentMap assoc(Object key, Object val) + override public Associative assoc(Object key, Object val) { IMapEntry e = find(key); if(e != null) diff --git a/src/cli/runtime/PersistentTreeMap.cs b/src/cli/runtime/PersistentTreeMap.cs index f82e59b2..b87e3754 100644 --- a/src/cli/runtime/PersistentTreeMap.cs +++ b/src/cli/runtime/PersistentTreeMap.cs @@ -69,7 +69,7 @@ public IPersistentMap assocEx(Object key,Object val){ return new PersistentTreeMap(comp, t.blacken(), _count + 1, _meta); } -public IPersistentMap assoc(Object key, Object val){ +public Associative assoc(Object key, Object val){ Box found = new Box(null); Node t = add(tree, key, val, found); if(t == null) //null == already contains key diff --git a/src/cli/runtime/TObj.cs b/src/cli/runtime/TObj.cs index a81fb4ef..0fe6b471 100644 --- a/src/cli/runtime/TObj.cs +++ b/src/cli/runtime/TObj.cs @@ -23,7 +23,7 @@ public TObj(){ public Object putAttr( Object key, Object val) { IPersistentMap t = (IPersistentMap) Transaction.get( _attrs); - t = t.assoc(key, val); + t = (IPersistentMap)t.assoc(key, val); Transaction.set(_attrs,t); return val; } diff --git a/src/cli/runtime/Var.cs b/src/cli/runtime/Var.cs index 13d10034..cb0327e7 100644 --- a/src/cli/runtime/Var.cs +++ b/src/cli/runtime/Var.cs @@ -49,7 +49,7 @@ Binding getThreadBinding() { if (b == null) newtb = tb.without(thread); else - newtb = tb.assoc(thread, b); + newtb = (IPersistentMap)tb.assoc(thread, b); } while (tb != Interlocked.CompareExchange(ref threadBindings, newtb, tb)); } public IFn fn(){ return (IFn)getValue(); } override public Object invoke(){ return fn().invoke(); diff --git a/src/jvm/clojure/lang/AnArray.java b/src/jvm/clojure/lang/AnArray.java index 93ead181..f9eaa9f4 100644 --- a/src/jvm/clojure/lang/AnArray.java +++ b/src/jvm/clojure/lang/AnArray.java @@ -43,11 +43,11 @@ public IMapEntry find(Object key) { return null; } -public IPersistentMap assoc(Object key, Object val) { +public Associative assoc(Object key, Object val) { if(key instanceof Number) { int i = ((Number)key).intValue(); - return (IPersistentMap) assocN(i,val); + return (Associative) assocN(i,val); } throw new IllegalAccessError("Key must be integer"); } diff --git a/src/jvm/clojure/lang/Associative.java b/src/jvm/clojure/lang/Associative.java index 160a357e..cab4f23a 100644 --- a/src/jvm/clojure/lang/Associative.java +++ b/src/jvm/clojure/lang/Associative.java @@ -14,7 +14,7 @@ boolean contains(Object key); IMapEntry find(Object key); -IPersistentMap assoc(Object key, Object val); +Associative assoc(Object key, Object val); Object get(Object key); } diff --git a/src/jvm/clojure/lang/IPersistentMap.java b/src/jvm/clojure/lang/IPersistentMap.java index 0ada98dc..3a32b27a 100644 --- a/src/jvm/clojure/lang/IPersistentMap.java +++ b/src/jvm/clojure/lang/IPersistentMap.java @@ -14,6 +14,7 @@ package clojure.lang; public interface IPersistentMap extends Iterable, IPersistentCollection, Associative { +IPersistentMap assoc(Object key, Object val); IPersistentMap assocEx(Object key, Object val) throws Exception; IPersistentMap without(Object key); -- cgit v1.2.3-70-g09d2