summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cli/runtime/RestFn1.cs18
-rw-r--r--src/cli/runtime/RestFn2.cs24
-rw-r--r--src/cli/runtime/RestFn3.cs31
-rw-r--r--src/cli/runtime/RestFn4.cs39
-rw-r--r--src/cli/runtime/RestFn5.cs48
-rw-r--r--src/org/clojure/runtime/RestFn1.java14
-rw-r--r--src/org/clojure/runtime/RestFn2.java16
-rw-r--r--src/org/clojure/runtime/RestFn3.java25
-rw-r--r--src/org/clojure/runtime/RestFn4.java33
-rw-r--r--src/org/clojure/runtime/RestFn5.java42
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)