summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-05-27 12:55:25 +0000
committerRich Hickey <richhickey@gmail.com>2008-05-27 12:55:25 +0000
commit697b69fe9c8f5e2e8d40382e70d4ddd490c4a9ee (patch)
treec0073bbb7926e456e1a34f07ca590f9f4ed226bf /src/jvm/clojure
parente0ba25035bb366f5f83289d3fd6e71c338b058b7 (diff)
added empty
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/AMapEntry.java3
-rw-r--r--src/jvm/clojure/lang/APersistentVector.java4
-rw-r--r--src/jvm/clojure/lang/ASeq.java4
-rw-r--r--src/jvm/clojure/lang/IPersistentCollection.java2
-rw-r--r--src/jvm/clojure/lang/LazilyPersistentVector.java4
-rw-r--r--src/jvm/clojure/lang/PersistentArrayMap.java2
-rw-r--r--src/jvm/clojure/lang/PersistentHashMap.java4
-rw-r--r--src/jvm/clojure/lang/PersistentHashSet.java4
-rw-r--r--src/jvm/clojure/lang/PersistentList.java4
-rw-r--r--src/jvm/clojure/lang/PersistentQueue.java4
-rw-r--r--src/jvm/clojure/lang/PersistentStructMap.java4
-rw-r--r--src/jvm/clojure/lang/PersistentTreeMap.java4
-rw-r--r--src/jvm/clojure/lang/PersistentTreeSet.java4
-rw-r--r--src/jvm/clojure/lang/PersistentVector.java4
14 files changed, 50 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/AMapEntry.java b/src/jvm/clojure/lang/AMapEntry.java
index ce4c219c..5496f0eb 100644
--- a/src/jvm/clojure/lang/AMapEntry.java
+++ b/src/jvm/clojure/lang/AMapEntry.java
@@ -15,6 +15,9 @@ package clojure.lang;
import java.io.StringWriter;
public abstract class AMapEntry implements IMapEntry, IPersistentVector{
+public IPersistentCollection empty(){
+ return null;
+}
public boolean equals(Object obj){
return APersistentVector.doEquals(this, obj);
diff --git a/src/jvm/clojure/lang/APersistentVector.java b/src/jvm/clojure/lang/APersistentVector.java
index 086d8369..46dfbb25 100644
--- a/src/jvm/clojure/lang/APersistentVector.java
+++ b/src/jvm/clojure/lang/APersistentVector.java
@@ -357,6 +357,10 @@ static class SubVector extends APersistentVector{
return new SubVector(_meta, v.assocN(end, o), start, end + 1);
}
+ public IPersistentCollection empty(){
+ return PersistentVector.EMPTY.withMeta(meta());
+ }
+
public IPersistentStack pop(){
if(end - 1 == start)
{
diff --git a/src/jvm/clojure/lang/ASeq.java b/src/jvm/clojure/lang/ASeq.java
index 2dca27a5..e519621d 100644
--- a/src/jvm/clojure/lang/ASeq.java
+++ b/src/jvm/clojure/lang/ASeq.java
@@ -17,6 +17,10 @@ public abstract class ASeq extends Obj implements ISeq, Collection, Sequential{
transient int _hash = -1;
+public IPersistentCollection empty(){
+ return null;
+}
+
protected ASeq(IPersistentMap meta){
super(meta);
}
diff --git a/src/jvm/clojure/lang/IPersistentCollection.java b/src/jvm/clojure/lang/IPersistentCollection.java
index 77e32738..f97b02cd 100644
--- a/src/jvm/clojure/lang/IPersistentCollection.java
+++ b/src/jvm/clojure/lang/IPersistentCollection.java
@@ -18,4 +18,6 @@ int count();
ISeq seq();
IPersistentCollection cons(Object o);
+
+IPersistentCollection empty();
}
diff --git a/src/jvm/clojure/lang/LazilyPersistentVector.java b/src/jvm/clojure/lang/LazilyPersistentVector.java
index 9c4c9a0a..bbe580fa 100644
--- a/src/jvm/clojure/lang/LazilyPersistentVector.java
+++ b/src/jvm/clojure/lang/LazilyPersistentVector.java
@@ -54,6 +54,10 @@ public IPersistentVector cons(Object o){
return v().cons(o);
}
+public IPersistentCollection empty(){
+ return PersistentVector.EMPTY.withMeta(meta());
+}
+
public IPersistentStack pop(){
return v().pop();
}
diff --git a/src/jvm/clojure/lang/PersistentArrayMap.java b/src/jvm/clojure/lang/PersistentArrayMap.java
index 63516714..969ec701 100644
--- a/src/jvm/clojure/lang/PersistentArrayMap.java
+++ b/src/jvm/clojure/lang/PersistentArrayMap.java
@@ -142,7 +142,7 @@ public IPersistentMap without(Object key){
return this;
}
-IPersistentMap empty(){
+public IPersistentMap empty(){
return (IPersistentMap) EMPTY.withMeta(meta());
}
diff --git a/src/jvm/clojure/lang/PersistentHashMap.java b/src/jvm/clojure/lang/PersistentHashMap.java
index adf3beeb..49530586 100644
--- a/src/jvm/clojure/lang/PersistentHashMap.java
+++ b/src/jvm/clojure/lang/PersistentHashMap.java
@@ -146,6 +146,10 @@ public ISeq seq(){
return root.nodeSeq();
}
+public IPersistentCollection empty(){
+ return EMPTY.withMeta(meta());
+}
+
static int mask(int hash, int shift){
//return ((hash << shift) >>> 27);// & 0x01f;
return (hash >>> shift) & 0x01f;
diff --git a/src/jvm/clojure/lang/PersistentHashSet.java b/src/jvm/clojure/lang/PersistentHashSet.java
index 60794b97..9f216010 100644
--- a/src/jvm/clojure/lang/PersistentHashSet.java
+++ b/src/jvm/clojure/lang/PersistentHashSet.java
@@ -63,6 +63,10 @@ public IPersistentSet cons(Object o){
return new PersistentHashSet(meta(),impl.assoc(o,o));
}
+public IPersistentCollection empty(){
+ return EMPTY.withMeta(meta());
+}
+
public PersistentHashSet withMeta(IPersistentMap meta){
return new PersistentHashSet(meta, impl);
}
diff --git a/src/jvm/clojure/lang/PersistentList.java b/src/jvm/clojure/lang/PersistentList.java
index 112eede6..cd86b033 100644
--- a/src/jvm/clojure/lang/PersistentList.java
+++ b/src/jvm/clojure/lang/PersistentList.java
@@ -88,6 +88,10 @@ public PersistentList cons(Object o){
return new PersistentList(meta(), o, this, _count + 1);
}
+public IPersistentCollection empty(){
+ return EMPTY.withMeta(meta());
+}
+
public PersistentList withMeta(IPersistentMap meta){
if(meta != _meta)
return new PersistentList(meta, _first, _rest, _count);
diff --git a/src/jvm/clojure/lang/PersistentQueue.java b/src/jvm/clojure/lang/PersistentQueue.java
index 054b21af..53f35479 100644
--- a/src/jvm/clojure/lang/PersistentQueue.java
+++ b/src/jvm/clojure/lang/PersistentQueue.java
@@ -99,6 +99,10 @@ public PersistentQueue cons(Object o){
return new PersistentQueue(meta(), f, (r != null ? r : PersistentVector.EMPTY).cons(o));
}
+public IPersistentCollection empty(){
+ return EMPTY.withMeta(meta());
+}
+
public PersistentQueue withMeta(IPersistentMap meta){
return new PersistentQueue(meta, f, r);
}
diff --git a/src/jvm/clojure/lang/PersistentStructMap.java b/src/jvm/clojure/lang/PersistentStructMap.java
index 2b371ffc..2b651c1b 100644
--- a/src/jvm/clojure/lang/PersistentStructMap.java
+++ b/src/jvm/clojure/lang/PersistentStructMap.java
@@ -177,6 +177,10 @@ public ISeq seq(){
return new Seq(null, def.keys, vals, 0, ext);
}
+public IPersistentCollection empty(){
+ return construct(def, null);
+}
+
static class Seq extends ASeq{
final int i;
final ISeq keys;
diff --git a/src/jvm/clojure/lang/PersistentTreeMap.java b/src/jvm/clojure/lang/PersistentTreeMap.java
index fb9df3ad..a89cab38 100644
--- a/src/jvm/clojure/lang/PersistentTreeMap.java
+++ b/src/jvm/clojure/lang/PersistentTreeMap.java
@@ -126,6 +126,10 @@ public ISeq seq(){
return null;
}
+public IPersistentCollection empty(){
+ return EMPTY.withMeta(meta());
+}
+
public ISeq rseq() throws Exception{
if(_count > 0)
return Seq.create(tree, false, _count);
diff --git a/src/jvm/clojure/lang/PersistentTreeSet.java b/src/jvm/clojure/lang/PersistentTreeSet.java
index 8ffdb0d9..9055a05f 100644
--- a/src/jvm/clojure/lang/PersistentTreeSet.java
+++ b/src/jvm/clojure/lang/PersistentTreeSet.java
@@ -63,6 +63,10 @@ public IPersistentSet cons(Object o){
return new PersistentTreeSet(meta(),impl.assoc(o,o));
}
+public IPersistentCollection empty(){
+ return EMPTY.withMeta(meta());
+}
+
public ISeq rseq() throws Exception{
return APersistentMap.KeySeq.create(((Reversible) impl).rseq());
}
diff --git a/src/jvm/clojure/lang/PersistentVector.java b/src/jvm/clojure/lang/PersistentVector.java
index ca00fc76..f6158791 100644
--- a/src/jvm/clojure/lang/PersistentVector.java
+++ b/src/jvm/clojure/lang/PersistentVector.java
@@ -139,6 +139,10 @@ public PersistentVector cons(Object val){
return new PersistentVector(meta(), cnt + 1, newshift, newroot, new Object[]{val});
}
+public IPersistentCollection empty(){
+ return EMPTY.withMeta(meta());
+}
+
private Object[] pushTail(int level, Object[] arr, Object[] tailNode, Box expansion){
Object newchild;
if(level == 0)