diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cli/runtime/RestFn1.cs | 18 | ||||
-rw-r--r-- | src/cli/runtime/RestFn2.cs | 24 | ||||
-rw-r--r-- | src/cli/runtime/RestFn3.cs | 31 | ||||
-rw-r--r-- | src/cli/runtime/RestFn4.cs | 39 | ||||
-rw-r--r-- | src/cli/runtime/RestFn5.cs | 48 | ||||
-rw-r--r-- | src/org/clojure/runtime/RestFn1.java | 14 | ||||
-rw-r--r-- | src/org/clojure/runtime/RestFn2.java | 16 | ||||
-rw-r--r-- | src/org/clojure/runtime/RestFn3.java | 25 | ||||
-rw-r--r-- | src/org/clojure/runtime/RestFn4.java | 33 | ||||
-rw-r--r-- | src/org/clojure/runtime/RestFn5.java | 42 |
10 files changed, 225 insertions, 65 deletions
diff --git a/src/cli/runtime/RestFn1.cs b/src/cli/runtime/RestFn1.cs index 60f59747..822058f5 100644 --- a/src/cli/runtime/RestFn1.cs +++ b/src/cli/runtime/RestFn1.cs @@ -20,12 +20,18 @@ public abstract class RestFn1 : AFn{ public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Cons rest) /*throws Exception*/; override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ - { - if(arglist == null) - throwArity(); - return doInvoke(tld, arglist.first - , arglist.rest); - } + {
+ switch (RT.boundedLength(arglist, 1))
+ {
+ case 0:
+ return invoke(tld);
+ case 1:
+ return invoke(tld, arglist.first);
+ default:
+ return doInvoke(tld, arglist.first
+ , arglist.rest);
+ }
+ } override public Object invoke(ThreadLocalData tld, Object arg1) /*throws Exception*/ { diff --git a/src/cli/runtime/RestFn2.cs b/src/cli/runtime/RestFn2.cs index 8cfe865e..bc528dfa 100644 --- a/src/cli/runtime/RestFn2.cs +++ b/src/cli/runtime/RestFn2.cs @@ -20,13 +20,23 @@ public abstract class RestFn2 : AFn{ public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Cons rest) /*throws Exception*/; override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ - { - if(RT.boundedLength(arglist, 2) < 2) - throwArity(); - return doInvoke(tld, arglist.first - , (arglist = arglist.rest).first - , arglist.rest); - + {
+ switch (RT.boundedLength(arglist, 2))
+ {
+ case 0:
+ return invoke(tld);
+ case 1:
+ return invoke(tld, arglist.first);
+ case 2:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ );
+ default:
+ return doInvoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , arglist.rest);
+
+ } } override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2) /*throws Exception*/ diff --git a/src/cli/runtime/RestFn3.cs b/src/cli/runtime/RestFn3.cs index 91e5fac4..b236724c 100644 --- a/src/cli/runtime/RestFn3.cs +++ b/src/cli/runtime/RestFn3.cs @@ -20,14 +20,29 @@ public abstract class RestFn3 : AFn{ public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Cons rest) /*throws Exception*/; override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ - { - if(RT.boundedLength(arglist, 3) < 3) - throwArity(); - return doInvoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , arglist.rest); - + {
+ switch (RT.boundedLength(arglist, 3))
+ {
+ case 0:
+ return invoke(tld);
+ case 1:
+ return invoke(tld, arglist.first);
+ case 2:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ );
+ case 3:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ );
+ default:
+ return doInvoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , arglist.rest);
+
+ } } diff --git a/src/cli/runtime/RestFn4.cs b/src/cli/runtime/RestFn4.cs index de118d66..04dfb33f 100644 --- a/src/cli/runtime/RestFn4.cs +++ b/src/cli/runtime/RestFn4.cs @@ -21,15 +21,36 @@ public abstract class RestFn4 : AFn{ /*throws Exception*/; override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ - { - if(RT.boundedLength(arglist, 4) < 4) - throwArity(); - return doInvoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , arglist.rest); - + {
+ switch (RT.boundedLength(arglist, 4))
+ {
+ case 0:
+ return invoke(tld);
+ case 1:
+ return invoke(tld, arglist.first);
+ case 2:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ );
+ case 3:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ );
+ case 4:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ );
+ default:
+ return doInvoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , arglist.rest);
+
+ } } override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) /*throws Exception*/ diff --git a/src/cli/runtime/RestFn5.cs b/src/cli/runtime/RestFn5.cs index fb5eec1a..e4ea5fe7 100644 --- a/src/cli/runtime/RestFn5.cs +++ b/src/cli/runtime/RestFn5.cs @@ -22,16 +22,44 @@ public abstract class RestFn5 : AFn{ /*throws Exception*/; override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ - { - if(RT.boundedLength(arglist, 5) < 5) - throwArity(); - return doInvoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , arglist.rest); - + {
+ switch (RT.boundedLength(arglist, 5))
+ {
+ case 0:
+ return invoke(tld);
+ case 1:
+ return invoke(tld, arglist.first);
+ case 2:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ );
+ case 3:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ );
+ case 4:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ );
+ case 5:
+ return invoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ );
+ default:
+ return doInvoke(tld, arglist.first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , (arglist = arglist.rest).first
+ , arglist.rest);
+
+ } } override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) diff --git a/src/org/clojure/runtime/RestFn1.java b/src/org/clojure/runtime/RestFn1.java index 6031d455..f763b0c4 100644 --- a/src/org/clojure/runtime/RestFn1.java +++ b/src/org/clojure/runtime/RestFn1.java @@ -18,11 +18,17 @@ protected abstract Object doInvoke(ThreadLocalData tld, Object arg1, Cons rest) public Object applyTo(ThreadLocalData tld, Cons arglist) throws Exception { - if(arglist == null) - throwArity(); - return doInvoke(tld, arglist.first + switch(RT.boundedLength(arglist, 1)) + { + case 0: + return invoke(tld); + case 1: + return invoke(tld,arglist.first); + default: + return doInvoke(tld, arglist.first , arglist.rest); - } + } + } public Object invoke(ThreadLocalData tld, Object arg1) throws Exception { diff --git a/src/org/clojure/runtime/RestFn2.java b/src/org/clojure/runtime/RestFn2.java index b244657a..8f12ade0 100644 --- a/src/org/clojure/runtime/RestFn2.java +++ b/src/org/clojure/runtime/RestFn2.java @@ -18,12 +18,22 @@ protected abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2 public Object applyTo(ThreadLocalData tld, Cons arglist) throws Exception { - if(RT.boundedLength(arglist, 2) < 2) - throwArity(); - return doInvoke(tld, arglist.first + switch(RT.boundedLength(arglist, 2)) + { + case 0: + return invoke(tld); + case 1: + return invoke(tld,arglist.first); + case 2: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + ); + default: + return doInvoke(tld, arglist.first , (arglist = arglist.rest).first , arglist.rest); + } } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2) throws Exception diff --git a/src/org/clojure/runtime/RestFn3.java b/src/org/clojure/runtime/RestFn3.java index cd254af6..9efcbc3e 100644 --- a/src/org/clojure/runtime/RestFn3.java +++ b/src/org/clojure/runtime/RestFn3.java @@ -18,13 +18,28 @@ protected abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2 public Object applyTo(ThreadLocalData tld, Cons arglist) throws Exception { - if(RT.boundedLength(arglist, 3) < 3) - throwArity(); - return doInvoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first + switch(RT.boundedLength(arglist, 3)) + { + case 0: + return invoke(tld); + case 1: + return invoke(tld,arglist.first); + case 2: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + ); + case 3: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + ); + default: + return doInvoke(tld, arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first , arglist.rest); + } } diff --git a/src/org/clojure/runtime/RestFn4.java b/src/org/clojure/runtime/RestFn4.java index c6886bb4..1114bce1 100644 --- a/src/org/clojure/runtime/RestFn4.java +++ b/src/org/clojure/runtime/RestFn4.java @@ -19,14 +19,35 @@ protected abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2 public Object applyTo(ThreadLocalData tld, Cons arglist) throws Exception { - if(RT.boundedLength(arglist, 4) < 4) - throwArity(); - return doInvoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first + switch(RT.boundedLength(arglist, 4)) + { + case 0: + return invoke(tld); + case 1: + return invoke(tld,arglist.first); + case 2: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + ); + case 3: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + ); + case 4: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + ); + default: + return doInvoke(tld, arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first , arglist.rest); + } } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception diff --git a/src/org/clojure/runtime/RestFn5.java b/src/org/clojure/runtime/RestFn5.java index b1fef34b..7b8b414a 100644 --- a/src/org/clojure/runtime/RestFn5.java +++ b/src/org/clojure/runtime/RestFn5.java @@ -20,15 +20,43 @@ protected abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2 public Object applyTo(ThreadLocalData tld, Cons arglist) throws Exception { - if(RT.boundedLength(arglist, 5) < 5) - throwArity(); - return doInvoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first + switch(RT.boundedLength(arglist, 5)) + { + case 0: + return invoke(tld); + case 1: + return invoke(tld,arglist.first); + case 2: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + ); + case 3: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + ); + case 4: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + ); + case 5: + return invoke(tld,arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + ); + default: + return doInvoke(tld, arglist.first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first + , (arglist = arglist.rest).first , arglist.rest); + } } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) |