summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-07-31 15:37:51 +0000
committerRich Hickey <richhickey@gmail.com>2007-07-31 15:37:51 +0000
commitdf5c458d0a4ce0fe590f6ce981bd62c19c15558f (patch)
tree8a5d61f111a9ddcc984a42061de154a0307d2225 /src
parentfaa1146288b03e82451943a3f7fd6e927bb1acc7 (diff)
made IFns Callable
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/AFn.java5
-rw-r--r--src/jvm/clojure/lang/IFn.java12
-rw-r--r--src/jvm/clojure/lang/InstanceMemberInvoker.java4
-rw-r--r--src/jvm/clojure/lang/Keyword.java4
-rw-r--r--src/jvm/clojure/lang/LockingTransaction.java6
-rw-r--r--src/jvm/clojure/lang/Ref.java4
-rw-r--r--src/jvm/clojure/lang/StaticMemberInvoker.java4
7 files changed, 31 insertions, 8 deletions
diff --git a/src/jvm/clojure/lang/AFn.java b/src/jvm/clojure/lang/AFn.java
index e38a9916..f2c473d9 100644
--- a/src/jvm/clojure/lang/AFn.java
+++ b/src/jvm/clojure/lang/AFn.java
@@ -21,6 +21,11 @@ public AFn(IPersistentMap meta){
public AFn(){
}
+
+public Object call() throws Exception{
+ return invoke();
+}
+
public Object invoke() throws Exception{
return throwArity();
}
diff --git a/src/jvm/clojure/lang/IFn.java b/src/jvm/clojure/lang/IFn.java
index ab8d108c..353ce96d 100644
--- a/src/jvm/clojure/lang/IFn.java
+++ b/src/jvm/clojure/lang/IFn.java
@@ -12,7 +12,9 @@
package clojure.lang;
-public interface IFn {
+import java.util.concurrent.Callable;
+
+public interface IFn extends Callable{
public Object invoke() throws Exception;
@@ -29,7 +31,7 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6) throws Exception;
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7)
- throws Exception;
+ throws Exception;
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8) throws Exception;
@@ -51,7 +53,7 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14)
- throws Exception;
+ throws Exception;
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
@@ -76,13 +78,13 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20)
- throws Exception;
+ throws Exception;
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20,
Object... args)
- throws Exception;
+ throws Exception;
public Object applyTo(ISeq arglist) throws Exception;
}
diff --git a/src/jvm/clojure/lang/InstanceMemberInvoker.java b/src/jvm/clojure/lang/InstanceMemberInvoker.java
index fe6a48c3..2a888c46 100644
--- a/src/jvm/clojure/lang/InstanceMemberInvoker.java
+++ b/src/jvm/clojure/lang/InstanceMemberInvoker.java
@@ -19,6 +19,10 @@ public InstanceMemberInvoker(String className, String memberName){
this.memberName = memberName;
}
+public Object call() throws Exception{
+ return invoke();
+}
+
public Object invoke() throws Exception{
return AFn.throwArity();
}
diff --git a/src/jvm/clojure/lang/Keyword.java b/src/jvm/clojure/lang/Keyword.java
index 5be8af38..73f4889a 100644
--- a/src/jvm/clojure/lang/Keyword.java
+++ b/src/jvm/clojure/lang/Keyword.java
@@ -55,6 +55,10 @@ public String toString(){
return ":" + sym;
}
+public Object call() throws Exception{
+ return AFn.throwArity();
+}
+
public Object invoke() throws Exception{
return AFn.throwArity();
}
diff --git a/src/jvm/clojure/lang/LockingTransaction.java b/src/jvm/clojure/lang/LockingTransaction.java
index 8ee7678d..5ba5b586 100644
--- a/src/jvm/clojure/lang/LockingTransaction.java
+++ b/src/jvm/clojure/lang/LockingTransaction.java
@@ -57,6 +57,9 @@ public static class Info{
//transactions will consume a point for init, for each retry, and on commit if writing
final private static AtomicInteger lastPoint = new AtomicInteger();
+void getReadPoint(){
+ readPoint = lastPoint.incrementAndGet();
+}
long getCommitPoint(){
return lastPoint.incrementAndGet();
@@ -87,9 +90,6 @@ final HashMap<Ref, Object> vals = new HashMap<Ref, Object>();
final HashSet<Ref> sets = new HashSet<Ref>();
final TreeMap<Ref, ArrayList<IFn>> commutes = new TreeMap<Ref, ArrayList<IFn>>();
-void getReadPoint(){
- readPoint = lastPoint.incrementAndGet();
-}
//returns the most recent val
Object lock(Ref ref) throws Exception{
diff --git a/src/jvm/clojure/lang/Ref.java b/src/jvm/clojure/lang/Ref.java
index 9488da06..2396ff6b 100644
--- a/src/jvm/clojure/lang/Ref.java
+++ b/src/jvm/clojure/lang/Ref.java
@@ -177,6 +177,10 @@ final public IFn fn(){
return (IFn) cachedVal();
}
+public Object call() throws Exception{
+ return invoke();
+}
+
public Object invoke() throws Exception{
return fn().invoke();
}
diff --git a/src/jvm/clojure/lang/StaticMemberInvoker.java b/src/jvm/clojure/lang/StaticMemberInvoker.java
index 305d0319..ba5cf28b 100644
--- a/src/jvm/clojure/lang/StaticMemberInvoker.java
+++ b/src/jvm/clojure/lang/StaticMemberInvoker.java
@@ -19,6 +19,10 @@ public StaticMemberInvoker(String className, String memberName){
this.memberName = memberName;
}
+public Object call() throws Exception{
+ return invoke();
+}
+
public Object invoke() throws Exception{
return Reflector.invokeStaticMethod(memberName, className);
}