summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-06-07 17:35:16 +0000
committerRich Hickey <richhickey@gmail.com>2006-06-07 17:35:16 +0000
commitf344502b48ebcf0546bf664de79049f5f4d573b9 (patch)
tree246f5584c3016abd9b019127c63197ed3e02a7a0
parente26f6aee5713bfef08d8b68959672896b44bbd2d (diff)
renamed persistent data structures
-rw-r--r--src/org/clojure/runtime/IPersistentMap.java (renamed from src/org/clojure/runtime/IMap.java)8
-rw-r--r--src/org/clojure/runtime/IdentityHashtableMap.java38
-rw-r--r--src/org/clojure/runtime/PersistentArrayMap.java (renamed from src/org/clojure/runtime/ArrayMap.java)16
-rw-r--r--src/org/clojure/runtime/PersistentHashtableMap.java (renamed from src/org/clojure/runtime/HashtableMap.java)68
-rw-r--r--src/org/clojure/runtime/PersistentHybridMap.java (renamed from src/org/clojure/runtime/PersistentHashMap.java)42
-rw-r--r--src/org/clojure/runtime/PersistentIdentityArrayMap.java (renamed from src/org/clojure/runtime/IdentityArrayMap.java)6
-rw-r--r--src/org/clojure/runtime/PersistentIdentityHashtableMap.java38
-rw-r--r--src/org/clojure/runtime/PersistentListMap.java (renamed from src/org/clojure/runtime/ListMap.java)44
-rw-r--r--src/org/clojure/runtime/PersistentTree.java (renamed from src/org/clojure/runtime/RBTree.java)26
-rw-r--r--src/org/clojure/runtime/TObj.java8
10 files changed, 147 insertions, 147 deletions
diff --git a/src/org/clojure/runtime/IMap.java b/src/org/clojure/runtime/IPersistentMap.java
index 015df00d..aff5f8a0 100644
--- a/src/org/clojure/runtime/IMap.java
+++ b/src/org/clojure/runtime/IPersistentMap.java
@@ -11,7 +11,7 @@
package org.clojure.runtime;
-public interface IMap extends Iterable {
+public interface IPersistentMap extends Iterable {
int count();
@@ -19,11 +19,11 @@ boolean contains(Object key);
IMapEntry find(Object key);
-IMap add(Object key);
+IPersistentMap add(Object key);
-IMap put(Object key, Object val);
+IPersistentMap put(Object key, Object val);
-IMap remove(Object key);
+IPersistentMap remove(Object key);
Object get(Object key);
diff --git a/src/org/clojure/runtime/IdentityHashtableMap.java b/src/org/clojure/runtime/IdentityHashtableMap.java
deleted file mode 100644
index 71d93eeb..00000000
--- a/src/org/clojure/runtime/IdentityHashtableMap.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * 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 org.clojure.runtime;
-
-public class IdentityHashtableMap extends HashtableMap{
-
-public IdentityHashtableMap(int initialCapacity) {
- super(initialCapacity);
-}
-
-public IdentityHashtableMap(Object[] init) {
- super(init);
-}
-
-IdentityHashtableMap(int count, PersistentArray array) {
- super(count, array);
-}
-
-IMap create(int capacity) {
- return new IdentityHashtableMap(capacity);
-}
-
-IMap create(int count, PersistentArray array) {
- return new IdentityHashtableMap(count, array);
-}
-
-IMap createArrayMap(Object[] init) {
- return new IdentityArrayMap(init);
-}
-}
diff --git a/src/org/clojure/runtime/ArrayMap.java b/src/org/clojure/runtime/PersistentArrayMap.java
index 49dec167..5d7b8171 100644
--- a/src/org/clojure/runtime/ArrayMap.java
+++ b/src/org/clojure/runtime/PersistentArrayMap.java
@@ -23,11 +23,11 @@ import java.util.Iterator;
* null keys and values are ok, but you won't be able to distinguish a null value via get - use contains/find
*/
-public class ArrayMap implements IMap {
+public class PersistentArrayMap implements IPersistentMap {
final Object[] array;
-public ArrayMap(){
+public PersistentArrayMap(){
this.array = RT.EMPTY_ARRAY;
}
@@ -35,7 +35,7 @@ public ArrayMap(){
* This ctor captures/aliases the passed array, so do not modify later
* @param init {key1,val1,key2,val2,...}
*/
-public ArrayMap(Object[] init){
+public PersistentArrayMap(Object[] init){
this.array = init;
}
@@ -54,12 +54,12 @@ public IMapEntry find(Object key) {
return null;
}
-public IMap add(Object key) {
+public IPersistentMap add(Object key) {
return put(key,null);
}
-public IMap put(Object key, Object val) {
+public IPersistentMap put(Object key, Object val) {
int i = indexOf(key);
Object[] newArray;
if(i >= 0) //already have key, same-sized replacement
@@ -77,10 +77,10 @@ public IMap put(Object key, Object val) {
newArray[0] = key;
newArray[1] = val;
}
- return new ArrayMap(newArray);
+ return new PersistentArrayMap(newArray);
}
-public IMap remove(Object key) {
+public IPersistentMap remove(Object key) {
int i = indexOf(key);
if(i >= 0) //have key, will remove
{
@@ -94,7 +94,7 @@ public IMap remove(Object key) {
d += 2;
}
}
- return new ArrayMap(newArray);
+ return new PersistentArrayMap(newArray);
}
//don't have key, no op
return this;
diff --git a/src/org/clojure/runtime/HashtableMap.java b/src/org/clojure/runtime/PersistentHashtableMap.java
index a96a9761..7047afa3 100644
--- a/src/org/clojure/runtime/HashtableMap.java
+++ b/src/org/clojure/runtime/PersistentHashtableMap.java
@@ -13,7 +13,7 @@ package org.clojure.runtime;
import java.util.Iterator;
import java.math.BigInteger;
-public class HashtableMap implements IMap, Iterable {
+public class PersistentHashtableMap implements IPersistentMap {
static final float FILL_FACTOR = 0.75f;
@@ -21,7 +21,7 @@ final PersistentArray array;
final int _count;
final int growAtCount;
-public HashtableMap(int initialCapacity) {
+public PersistentHashtableMap(int initialCapacity) {
array = new PersistentArray(calcPrimeCapacity(initialCapacity));
_count = 0;
this.growAtCount = (int) (this.array.length()*FILL_FACTOR);
@@ -30,7 +30,7 @@ public HashtableMap(int initialCapacity) {
/**
* @param init {key1,val1,key2,val2,...}
*/
-public HashtableMap(Object[] init){
+public PersistentHashtableMap(Object[] init){
//start halfway to a rehash
PersistentArray narray = new PersistentArray(calcPrimeCapacity(init.length));
for(int i=0;i<init.length;i+=2)
@@ -42,13 +42,13 @@ public HashtableMap(Object[] init){
this.growAtCount = (int) (this.array.length()*FILL_FACTOR);
}
-HashtableMap(int count,PersistentArray array) {
+PersistentHashtableMap(int count,PersistentArray array) {
this._count = count;
this.array = array;
this.growAtCount = (int) (this.array.length()*FILL_FACTOR);
}
-HashtableMap(int count,PersistentArray array,int growAt) {
+PersistentHashtableMap(int count,PersistentArray array,int growAt) {
this._count = count;
this.array = array;
this.growAtCount = growAt;
@@ -63,22 +63,22 @@ public int count() {
}
public boolean contains(Object key) {
- IMap entries = entriesFor(key);
+ IPersistentMap entries = entriesFor(key);
return entries != null && entries.contains(key);
}
public IMapEntry find(Object key) {
- IMap entries = entriesFor(key);
+ IPersistentMap entries = entriesFor(key);
if(entries != null)
return entries.find(key);
return null;
}
-public IMap add(Object key) {
+public IPersistentMap add(Object key) {
return put(key, null);
}
-public IMap put(Object key, Object val) {
+public IPersistentMap put(Object key, Object val) {
if(_count > growAtCount)
return grow().put(key, val);
int i = bucketFor(key,array);
@@ -86,14 +86,14 @@ public IMap put(Object key, Object val) {
PersistentArray newArray = doPut(i, key, val, array);
if(newArray == array)
return this;
- if(array.get(i) != null && ((IMap)newArray.get(i)).count() == ((IMap)array.get(i)).count()) //key already there, no growth
+ if(array.get(i) != null && ((IPersistentMap)newArray.get(i)).count() == ((IPersistentMap)array.get(i)).count()) //key already there, no growth
incr = 0;
return create(_count + incr, newArray, growAtCount);
}
PersistentArray doPut(int i,Object key,Object val,PersistentArray array){
- IMap entries = (IMap) array.get(i);
- IMap newEntries;
+ IPersistentMap entries = (IPersistentMap) array.get(i);
+ IPersistentMap newEntries;
if (entries != null)
{
newEntries = entries.put(key, val);
@@ -107,12 +107,12 @@ PersistentArray doPut(int i,Object key,Object val,PersistentArray array){
return array.set(i, newEntries);
}
-public IMap remove(Object key) {
+public IPersistentMap remove(Object key) {
int i = bucketFor(key,array);
- IMap entries = (IMap) array.get(i);
+ IPersistentMap entries = (IPersistentMap) array.get(i);
if (entries != null)
{
- IMap newEntries = entries.remove(key);
+ IPersistentMap newEntries = entries.remove(key);
if (newEntries != entries)
return create(_count - 1, array.set(i, newEntries));
}
@@ -121,7 +121,7 @@ public IMap remove(Object key) {
}
public Object get(Object key) {
- IMap entries = entriesFor(key);
+ IPersistentMap entries = entriesFor(key);
if(entries != null)
return entries.get(key);
return null;
@@ -136,7 +136,7 @@ public Iterator<IMapEntry> iterator() {
}
-IMap grow(){
+IPersistentMap grow(){
PersistentArray newArray = new PersistentArray(calcPrimeCapacity(_count * 2));
for (Object o : this)
{
@@ -210,7 +210,7 @@ static class Iter implements Iterator, IMapEntry{
static class Iter implements Iterator{
PersistentArray buckets;
int b;
- ListMap e;
+ PersistentListMap e;
Iter(PersistentArray buckets){
this.buckets = buckets;
@@ -222,8 +222,8 @@ static class Iter implements Iterator{
e = null;
for(b = b+1;b<buckets.length();b++)
{
- ListMap a = (ListMap) buckets.get(b);
- if(a != null && a != ListMap.EMPTY)
+ PersistentListMap a = (PersistentListMap) buckets.get(b);
+ if(a != null && a != PersistentListMap.EMPTY)
{
e = a;
break;
@@ -236,9 +236,9 @@ static class Iter implements Iterator{
}
public Object next() {
- ListMap ret = e;
+ PersistentListMap ret = e;
e = e.rest();
- if(e == ListMap.EMPTY)
+ if(e == PersistentListMap.EMPTY)
nextBucket();
return ret;
}
@@ -248,33 +248,33 @@ static class Iter implements Iterator{
}
}
-final IMap entriesFor(Object key){
- return (IMap) array.get(bucketFor(key,array));
+final IPersistentMap entriesFor(Object key){
+ return (IPersistentMap) array.get(bucketFor(key,array));
}
static int bucketFor(Object key, PersistentArray array) {
return (key.hashCode() & 0x7fffffff)%array.length();
}
-IMap create(int capacity) {
- return new HashtableMap(capacity);
+IPersistentMap create(int capacity) {
+ return new PersistentHashtableMap(capacity);
}
-IMap create(int count,PersistentArray array) {
- return new HashtableMap(count, array);
+IPersistentMap create(int count,PersistentArray array) {
+ return new PersistentHashtableMap(count, array);
}
-private IMap create(int i, PersistentArray newArray, int growAtCount){
- return new HashtableMap(i, newArray, growAtCount);
+private IPersistentMap create(int i, PersistentArray newArray, int growAtCount){
+ return new PersistentHashtableMap(i, newArray, growAtCount);
}
-IMap createArrayMap(Object[] init) {
- return new ArrayMap(init);
+IPersistentMap createArrayMap(Object[] init) {
+ return new PersistentArrayMap(init);
}
-private IMap createListMap(Object key, Object val){
- return ListMap.create(key,val);
+private IPersistentMap createListMap(Object key, Object val){
+ return PersistentListMap.create(key,val);
}
}
diff --git a/src/org/clojure/runtime/PersistentHashMap.java b/src/org/clojure/runtime/PersistentHybridMap.java
index f4ac6330..215b13c0 100644
--- a/src/org/clojure/runtime/PersistentHashMap.java
+++ b/src/org/clojure/runtime/PersistentHybridMap.java
@@ -12,25 +12,25 @@ package org.clojure.runtime;
import java.util.Iterator;
-public class PersistentHashMap implements IMap, Iterable{
+public class PersistentHybridMap implements IPersistentMap{
-IMap impl;
+IPersistentMap impl;
static final int CAPACITY_THRESHOLD = 42;
-public PersistentHashMap(Object[] init){
+public PersistentHybridMap(Object[] init){
if(init.length/2 < CAPACITY_THRESHOLD)
impl = createArrayMap(init);
impl = createHashtableMap(init);
}
-public PersistentHashMap(int initialCapacity){
+public PersistentHybridMap(int initialCapacity){
if(initialCapacity < CAPACITY_THRESHOLD)
impl = createArrayMap();
else
impl = createHashtableMap(initialCapacity);
}
-PersistentHashMap(IMap impl){
+PersistentHybridMap(IPersistentMap impl){
this.impl = impl;
}
@@ -46,21 +46,21 @@ public IMapEntry find(Object key) {
return impl.find(key);
}
-public IMap add(Object key) {
+public IPersistentMap add(Object key) {
return put(key, null);
}
-public IMap put(Object key, Object val) {
- IMap newImpl = impl.put(key,val);
+public IPersistentMap put(Object key, Object val) {
+ IPersistentMap newImpl = impl.put(key,val);
if(newImpl.capacity() == CAPACITY_THRESHOLD)
{
- newImpl = createHashtableMap(((ArrayMap)newImpl).array);
+ newImpl = createHashtableMap(((PersistentArrayMap)newImpl).array);
}
return create(newImpl);
}
-public IMap remove(Object key) {
- IMap newImpl = impl.remove(key);
+public IPersistentMap remove(Object key) {
+ IPersistentMap newImpl = impl.remove(key);
if(newImpl != impl)
return create(newImpl);
return this;
@@ -78,24 +78,24 @@ public Iterator iterator() {
return ((Iterable)impl).iterator();
}
-public IMap create(IMap impl) {
- return new PersistentHashMap(impl);
+public IPersistentMap create(IPersistentMap impl) {
+ return new PersistentHybridMap(impl);
}
-public ArrayMap createArrayMap(Object[] init) {
- return new ArrayMap(init);
+public PersistentArrayMap createArrayMap(Object[] init) {
+ return new PersistentArrayMap(init);
}
-private IMap createArrayMap() {
- return new ArrayMap();
+private IPersistentMap createArrayMap() {
+ return new PersistentArrayMap();
}
-private IMap createHashtableMap(Object[] init) {
- return new HashtableMap(init);
+private IPersistentMap createHashtableMap(Object[] init) {
+ return new PersistentHashtableMap(init);
}
-private IMap createHashtableMap(int initialCapacity) {
- return new HashtableMap(initialCapacity);
+private IPersistentMap createHashtableMap(int initialCapacity) {
+ return new PersistentHashtableMap(initialCapacity);
}
}
diff --git a/src/org/clojure/runtime/IdentityArrayMap.java b/src/org/clojure/runtime/PersistentIdentityArrayMap.java
index ed0c7106..2e17cb4d 100644
--- a/src/org/clojure/runtime/IdentityArrayMap.java
+++ b/src/org/clojure/runtime/PersistentIdentityArrayMap.java
@@ -13,11 +13,11 @@ package org.clojure.runtime;
/**
* ArrayMap using identity (==) comparison instead of equals
*/
-public class IdentityArrayMap extends ArrayMap{
-public IdentityArrayMap() {
+public class PersistentIdentityArrayMap extends PersistentArrayMap {
+public PersistentIdentityArrayMap() {
}
-public IdentityArrayMap(Object[] init) {
+public PersistentIdentityArrayMap(Object[] init) {
super(init);
}
diff --git a/src/org/clojure/runtime/PersistentIdentityHashtableMap.java b/src/org/clojure/runtime/PersistentIdentityHashtableMap.java
new file mode 100644
index 00000000..190fcb74
--- /dev/null
+++ b/src/org/clojure/runtime/PersistentIdentityHashtableMap.java
@@ -0,0 +1,38 @@
+/**
+ * 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 org.clojure.runtime;
+
+public class PersistentIdentityHashtableMap extends PersistentHashtableMap {
+
+public PersistentIdentityHashtableMap(int initialCapacity) {
+ super(initialCapacity);
+}
+
+public PersistentIdentityHashtableMap(Object[] init) {
+ super(init);
+}
+
+PersistentIdentityHashtableMap(int count, PersistentArray array) {
+ super(count, array);
+}
+
+IPersistentMap create(int capacity) {
+ return new PersistentIdentityHashtableMap(capacity);
+}
+
+IPersistentMap create(int count, PersistentArray array) {
+ return new PersistentIdentityHashtableMap(count, array);
+}
+
+IPersistentMap createArrayMap(Object[] init) {
+ return new PersistentIdentityArrayMap(init);
+}
+}
diff --git a/src/org/clojure/runtime/ListMap.java b/src/org/clojure/runtime/PersistentListMap.java
index 16c77e9c..cbe772d4 100644
--- a/src/org/clojure/runtime/ListMap.java
+++ b/src/org/clojure/runtime/PersistentListMap.java
@@ -26,12 +26,12 @@ import java.util.Iterator;
*
* null keys and values are ok, but you won't be able to distinguish a null value via get - use contains/find
*/
-public class ListMap implements IMap, IMapEntry
+public class PersistentListMap implements IPersistentMap, IMapEntry
{
-static public ListMap EMPTY = new ListMap();
+static public PersistentListMap EMPTY = new PersistentListMap();
-static public ListMap create(Object key, Object val){
+static public PersistentListMap create(Object key, Object val){
return new Tail(key, val);
}
@@ -43,7 +43,7 @@ public Object val(){
return null;
}
-ListMap rest(){
+PersistentListMap rest(){
return this;
}
@@ -59,15 +59,15 @@ public IMapEntry find(Object key){
return null;
}
-public IMap add(Object key){
+public IPersistentMap add(Object key){
return put(key, null);
}
-public ListMap put(Object key, Object val){
+public PersistentListMap put(Object key, Object val){
return new Tail(key, val);
}
-public ListMap remove(Object key){
+public PersistentListMap remove(Object key){
return this;
}
@@ -80,9 +80,9 @@ public int capacity(){
}
static class Iter implements Iterator{
- ListMap e;
+ PersistentListMap e;
- Iter(ListMap e)
+ Iter(PersistentListMap e)
{
this.e = e;
}
@@ -92,7 +92,7 @@ static class Iter implements Iterator{
}
public Object next(){
- ListMap ret = e;
+ PersistentListMap ret = e;
e = e.rest();
return ret;
}
@@ -106,7 +106,7 @@ public Iterator iterator(){
return new Iter(this);
}
-static class Tail extends ListMap{
+static class Tail extends PersistentListMap {
final Object _key;
final Object _val;
@@ -115,7 +115,7 @@ static class Tail extends ListMap{
this._val = val;
}
- ListMap rest(){
+ PersistentListMap rest(){
return EMPTY;
}
@@ -151,7 +151,7 @@ static class Tail extends ListMap{
return null;
}
- public ListMap put(Object key, Object val){
+ public PersistentListMap put(Object key, Object val){
if(equalKey(key,_key)) //replace
{
if(val == _val)
@@ -161,19 +161,19 @@ static class Tail extends ListMap{
return new Link(key,val,this);
}
- public ListMap remove(Object key){
+ public PersistentListMap remove(Object key){
if(equalKey(key,_key))
return EMPTY;
return this;
}
}
-static class Link extends ListMap{
+static class Link extends PersistentListMap {
final Object _key;
final Object _val;
- final ListMap _rest;
+ final PersistentListMap _rest;
- Link(Object key,Object val,ListMap rest){
+ Link(Object key,Object val,PersistentListMap rest){
this._key = key;
this._val = val;
this._rest = rest;
@@ -187,7 +187,7 @@ static class Link extends ListMap{
return _val;
}
- ListMap rest(){
+ PersistentListMap rest(){
return _rest;
}
@@ -205,7 +205,7 @@ static class Link extends ListMap{
return _rest.find(key);
}
- public ListMap put(Object key, Object val){
+ public PersistentListMap put(Object key, Object val){
IMapEntry e = find(key);
if(e != null)
{
@@ -216,10 +216,10 @@ static class Link extends ListMap{
return new Link(key,val,this);
}
- public ListMap remove(Object key){
+ public PersistentListMap remove(Object key){
if(equalKey(key,_key))
return _rest;
- ListMap r = _rest.remove(key);
+ PersistentListMap r = _rest.remove(key);
if(r == _rest) //not there
return this;
return create(_key,_val,r);
@@ -236,7 +236,7 @@ static class Link extends ListMap{
return count();
}
- ListMap create(Object k,Object v,ListMap r){
+ PersistentListMap create(Object k,Object v,PersistentListMap r){
if(r == EMPTY)
return new Tail(k,v);
return new Link(k, v, r);
diff --git a/src/org/clojure/runtime/RBTree.java b/src/org/clojure/runtime/PersistentTree.java
index 6aec53e2..5c6a099f 100644
--- a/src/org/clojure/runtime/RBTree.java
+++ b/src/org/clojure/runtime/PersistentTree.java
@@ -22,17 +22,17 @@ import java.util.*;
* See Okasaki, Kahrs, Larsen et al
*/
-public class RBTree implements Iterable, IMap {
+public class PersistentTree implements IPersistentMap {
public final Comparator comp;
public final Node tree;
public final int _count;
-public RBTree(){
+public PersistentTree(){
this(null);
}
-public RBTree(Comparator comp){
+public PersistentTree(Comparator comp){
this.comp = comp;
tree = null;
_count = 0;
@@ -42,11 +42,11 @@ public boolean contains(Object key){
return find(key) != null;
}
-public RBTree add(Object key){
+public PersistentTree add(Object key){
return put(key, null);
}
-public RBTree put(Object key, Object val){
+public PersistentTree put(Object key, Object val){
Box found = new Box(null);
Node t = add(tree, key, val, found);
if(t == null) //null == already contains key
@@ -54,13 +54,13 @@ public RBTree put(Object key, Object val){
Node foundNode = (Node) found.val;
if(foundNode.val() == val) //note only get same collection on identity of val, not equals()
return this;
- return new RBTree(comp, replace(tree, key, val), _count);
+ return new PersistentTree(comp, replace(tree, key, val), _count);
}
- return new RBTree(comp, t.blacken(), _count + 1);
+ return new PersistentTree(comp, t.blacken(), _count + 1);
}
-public RBTree remove(Object key){
+public PersistentTree remove(Object key){
Box found = new Box(null);
Node t = remove(tree, key, found);
if(t == null)
@@ -68,9 +68,9 @@ public RBTree remove(Object key){
if(found.val == null)//null == doesn't contain key
return this;
//empty
- return new RBTree(comp);
+ return new PersistentTree(comp);
}
- return new RBTree(comp, t.blacken(), _count - 1);
+ return new PersistentTree(comp, t.blacken(), _count - 1);
}
@@ -310,7 +310,7 @@ Node replace(Node t, Object key, Object val){
c > 0 ? replace(t.right(), key, val) : t.right());
}
-RBTree(Comparator comp, Node tree, int count){
+PersistentTree(Comparator comp, Node tree, int count){
this.comp = comp;
this.tree = tree;
this._count = count;
@@ -676,9 +676,9 @@ static public void main(String args[]){
}
Collections.shuffle(Arrays.asList(ints));
//force the ListMap class loading now
- ListMap.EMPTY.add(1).add(2).add(3);
+ PersistentListMap.EMPTY.add(1).add(2).add(3);
System.out.println("Building set");
- IMap set = new PersistentHashMap(1001);
+ IPersistentMap set = new PersistentHybridMap(1001);
//IMap set = new HashtableMap(1001);
//IMap set = new ListMap();
//IMap set = new ArrayMap();
diff --git a/src/org/clojure/runtime/TObj.java b/src/org/clojure/runtime/TObj.java
index 8a0acb57..00d121fb 100644
--- a/src/org/clojure/runtime/TObj.java
+++ b/src/org/clojure/runtime/TObj.java
@@ -14,23 +14,23 @@ public class TObj implements IObj{
TRef attrs;
public TObj(ThreadLocalData tld) throws Exception{
- this.attrs = Transaction.tref(tld,new RBTree());
+ this.attrs = Transaction.tref(tld,new PersistentTree());
}
public Object put(ThreadLocalData tld, Comparable key, Object val) throws Exception {
- RBTree t = (RBTree) Transaction.get(tld, attrs);
+ PersistentTree t = (PersistentTree) Transaction.get(tld, attrs);
t = t.put(key, val);
Transaction.set(tld,attrs,t);
return val;
}
public Object get(ThreadLocalData tld, Comparable key) throws Exception {
- RBTree t = (RBTree) Transaction.get(tld, attrs);
+ PersistentTree t = (PersistentTree) Transaction.get(tld, attrs);
return t.get(key);
}
public boolean has(ThreadLocalData tld, Comparable key) throws Exception {
- RBTree t = (RBTree) Transaction.get(tld, attrs);
+ PersistentTree t = (PersistentTree) Transaction.get(tld, attrs);
return t.contains(key);
}
}