diff options
author | Rich Hickey <richhickey@gmail.com> | 2006-08-04 23:13:37 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2006-08-04 23:13:37 +0000 |
commit | ae23e1e284833c61924cc09f4053ded4cc96cc44 (patch) | |
tree | db4d68569df44ec84825093ded8febed442accc6 /src/jvm/clojure | |
parent | b47c234ac5a398894c8f3ce5dc7c06a5e7926e10 (diff) |
added Sequential, Associative
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/Associative.java | 20 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Cons.java | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/IPersistentCollection.java | 1 | ||||
-rw-r--r-- | src/jvm/clojure/lang/IPersistentMap.java | 11 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentArray.java | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 5 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Sequential.java | 13 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Tuple.java | 4 |
8 files changed, 52 insertions, 10 deletions
diff --git a/src/jvm/clojure/lang/Associative.java b/src/jvm/clojure/lang/Associative.java new file mode 100644 index 00000000..72318bdb --- /dev/null +++ b/src/jvm/clojure/lang/Associative.java @@ -0,0 +1,20 @@ +package clojure.lang;
+
+/**
+ * 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.
+ */
+public interface Associative {
+boolean contains(Object key);
+
+IMapEntry find(Object key);
+
+IPersistentMap put(Object key, Object val);
+
+Object get(Object key);
+}
diff --git a/src/jvm/clojure/lang/Cons.java b/src/jvm/clojure/lang/Cons.java index 9d2895a1..aac9fe36 100644 --- a/src/jvm/clojure/lang/Cons.java +++ b/src/jvm/clojure/lang/Cons.java @@ -31,6 +31,10 @@ public ISeq rest() { return _rest; } +public int count() { + return 1 + RT.count(_rest); +} + public ISeq seq() { return this; } diff --git a/src/jvm/clojure/lang/IPersistentCollection.java b/src/jvm/clojure/lang/IPersistentCollection.java index 0506ba78..d66901d8 100644 --- a/src/jvm/clojure/lang/IPersistentCollection.java +++ b/src/jvm/clojure/lang/IPersistentCollection.java @@ -13,6 +13,7 @@ package clojure.lang; public interface IPersistentCollection {
+int count();
ISeq seq() throws Exception;
}
diff --git a/src/jvm/clojure/lang/IPersistentMap.java b/src/jvm/clojure/lang/IPersistentMap.java index a70af0c2..21158133 100644 --- a/src/jvm/clojure/lang/IPersistentMap.java +++ b/src/jvm/clojure/lang/IPersistentMap.java @@ -11,21 +11,12 @@ package clojure.lang;
-public interface IPersistentMap extends Iterable, IPersistentCollection {
+public interface IPersistentMap extends Iterable, IPersistentCollection, Associative {
-int count();
-
-boolean contains(Object key);
-
-IMapEntry find(Object key);
IPersistentMap add(Object key, Object val) throws Exception;
-IPersistentMap put(Object key, Object val);
-
IPersistentMap remove(Object key);
-Object get(Object key);
-
int capacity();
}
diff --git a/src/jvm/clojure/lang/PersistentArray.java b/src/jvm/clojure/lang/PersistentArray.java index 2f5a5813..154a18a9 100644 --- a/src/jvm/clojure/lang/PersistentArray.java +++ b/src/jvm/clojure/lang/PersistentArray.java @@ -239,6 +239,10 @@ public PersistentArray(IArray init) { data.master.load = load; } +public int count(){ + return data.master.array.length; +} + public int length(){ return data.master.array.length; } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 68f81982..77aa943f 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -386,4 +386,9 @@ static public Object setValues(Object... vals) return null; } +public static int count(Object o) { + if(o == null) + return 0; + return ((IPersistentCollection)o).count(); +} } diff --git a/src/jvm/clojure/lang/Sequential.java b/src/jvm/clojure/lang/Sequential.java new file mode 100644 index 00000000..24417533 --- /dev/null +++ b/src/jvm/clojure/lang/Sequential.java @@ -0,0 +1,13 @@ +package clojure.lang;
+
+/**
+ * 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.
+ */
+public interface Sequential {
+}
diff --git a/src/jvm/clojure/lang/Tuple.java b/src/jvm/clojure/lang/Tuple.java index 41e0048b..479e31bc 100644 --- a/src/jvm/clojure/lang/Tuple.java +++ b/src/jvm/clojure/lang/Tuple.java @@ -26,6 +26,10 @@ public Tuple(Object... init){ this.array = init; } +public int count() { + return array.length; +} + public int length() { return array.length; } |