diff options
Diffstat (limited to 'src')
35 files changed, 396 insertions, 300 deletions
diff --git a/src/cli/runtime/AFn.cs b/src/cli/runtime/AFn.cs index ceaec67d..0b7ef7ca 100644 --- a/src/cli/runtime/AFn.cs +++ b/src/cli/runtime/AFn.cs @@ -49,54 +49,54 @@ virtual public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Obje return throwArity(); } -virtual public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) +virtual public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args) /*throws Exception*/ { return throwArity(); } -virtual public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ +virtual public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ { return applyToHelper(this,tld,arglist); } -static public Object applyToHelper(IFn ifn,ThreadLocalData tld, Cons arglist) /*throws Exception*/ +static public Object applyToHelper(IFn ifn,ThreadLocalData tld, ISeq arglist) /*throws Exception*/ { switch(RT.boundedLength(arglist, 5)) { case 0:
return ifn.invoke(tld); case 1:
- return ifn.invoke(tld, arglist.first); + return ifn.invoke(tld, arglist.first()); case 2:
- return ifn.invoke(tld, arglist.first - , (arglist = arglist.rest).first + return ifn.invoke(tld, arglist.first() + , (arglist = arglist.rest()).first() ); case 3:
- return ifn.invoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first + return ifn.invoke(tld, arglist.first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() ); case 4:
- return ifn.invoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first + return ifn.invoke(tld, arglist.first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() ); case 5:
- return ifn.invoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first + return ifn.invoke(tld, arglist.first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() ); default:
- return ifn.invoke(tld, arglist.first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , (arglist = arglist.rest).first - , arglist.rest); + return ifn.invoke(tld, arglist.first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() + , (arglist = arglist.rest()).first() + , arglist.rest()); } } diff --git a/src/cli/runtime/Accessor.cs b/src/cli/runtime/Accessor.cs index b63e5e7c..5c6948db 100644 --- a/src/cli/runtime/Accessor.cs +++ b/src/cli/runtime/Accessor.cs @@ -20,9 +20,9 @@ public Object invoke(ThreadLocalData tld) /*throws Exception*/ { return AFn.throwArity();
}
/**
* Indexer implements IFn for attr access
* This single arg version is the getter
* @param tld
* @param obj - must be AMap
* @return the value of the attr or nil if not found
* @throws Exception
*/
public Object invoke(ThreadLocalData tld, Object obj) //throws Exception
{
- return Reflector.invokeInstanceMember(memberName, obj);
}
/**
* Indexer implements IFn for attr access
* This two arg version is the setter
* @param tld
* @param obj - must be AMap
* @param val
* @return val
* @throws Exception
*/
public Object invoke(ThreadLocalData tld, Object obj, Object val) //throws Exception
{
return Reflector.invokeInstanceMember(memberName,obj,val);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3) //throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) //throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5)
//throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args)
//throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5,args);
}
+ return Reflector.invokeInstanceMember(memberName, obj);
}
/**
* Indexer implements IFn for attr access
* This two arg version is the setter
* @param tld
* @param obj - must be AMap
* @param val
* @return val
* @throws Exception
*/
public Object invoke(ThreadLocalData tld, Object obj, Object val) //throws Exception
{
return Reflector.invokeInstanceMember(memberName,obj,val);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3) //throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) //throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5)
//throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
//throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5,args);
}
-public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ {
+public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ {
return AFn.applyToHelper(this, tld, arglist);
}
}
diff --git a/src/cli/runtime/Cons.cs b/src/cli/runtime/Cons.cs index e097aafb..9b1030fa 100644 --- a/src/cli/runtime/Cons.cs +++ b/src/cli/runtime/Cons.cs @@ -15,33 +15,42 @@ using System; namespace org.clojure.runtime
{ -public class Cons : Obj,Iter
+public class Cons : ISeq, ISequential
{ -public readonly Object first; -public readonly Cons rest; +private readonly Object _first; +private readonly ISeq _rest; -public Cons(Object first, Cons rest) +public Cons(Object first, ISeq rest) { - this.first = first; - this.rest = rest; + this._first = first; + this._rest = rest; }
-#region Iter Members
+#region ISeq Members
-public object get()
+public object first()
{
- return first;
+ return _first;
}
-public Iter iterate()
+public ISeq rest()
{
- return rest;
+ return _rest;
}
#endregion
- } +
+#region ISequential Members
+
+public ISeq seq()
+ {
+ return this;
+ }
+
+#endregion
+ } } diff --git a/src/cli/runtime/IFn.cs b/src/cli/runtime/IFn.cs index e96fd902..f2e86341 100644 --- a/src/cli/runtime/IFn.cs +++ b/src/cli/runtime/IFn.cs @@ -30,8 +30,8 @@ Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object /*throws Exception*/; Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, - Cons args) /*throws Exception*/; + ISeq args) /*throws Exception*/; -Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/; +Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/; } } diff --git a/src/cli/runtime/ISeq.cs b/src/cli/runtime/ISeq.cs new file mode 100644 index 00000000..cd7d9134 --- /dev/null +++ b/src/cli/runtime/ISeq.cs @@ -0,0 +1,22 @@ +/**
+ * 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.
+ */
+
+using System;
+
+namespace org.clojure.runtime
+ {
+ public interface ISeq
+ {
+
+ Object first();
+
+ ISeq rest();
+ }
+ }
diff --git a/src/cli/runtime/ISequential.cs b/src/cli/runtime/ISequential.cs new file mode 100644 index 00000000..66d5023e --- /dev/null +++ b/src/cli/runtime/ISequential.cs @@ -0,0 +1,22 @@ +/**
+ * 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.
+ */
+using System;
+
+
+namespace org.clojure.runtime
+ {
+
+ public interface ISequential
+ {
+
+ ISeq seq();
+
+ }
+ }
diff --git a/src/cli/runtime/Keyword.cs b/src/cli/runtime/Keyword.cs index 903a8619..d4158540 100644 --- a/src/cli/runtime/Keyword.cs +++ b/src/cli/runtime/Keyword.cs @@ -42,13 +42,13 @@ public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, return AFn.throwArity();
}
-public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args)
+public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
/*throws Exception*/
{
return AFn.throwArity();
}
-public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ {
+public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ {
return AFn.applyToHelper(this, tld, arglist);
} } diff --git a/src/cli/runtime/PersistentTree.cs b/src/cli/runtime/PersistentTree.cs index 61f18157..b4686264 100644 --- a/src/cli/runtime/PersistentTree.cs +++ b/src/cli/runtime/PersistentTree.cs @@ -729,7 +729,7 @@ public void Reset() #endregion
} - /*
+ //*
[STAThread] static public void Main(String[] args){ if(args.Length != 1)
@@ -778,7 +778,7 @@ static public void Main(String[] args){ Console.Error.WriteLine("count = " + set.count());
Console.WriteLine("Building Hashtable");
- Hashtable od = new Hashtable(1001);
+ Hashtable od = Hashtable.Synchronized(new Hashtable(1001));
start = DateTime.Now;
for (int i = 0; i < ints.Length; i++)
{
diff --git a/src/cli/runtime/RT.cs b/src/cli/runtime/RT.cs index ef60aa77..06455b47 100644 --- a/src/cli/runtime/RT.cs +++ b/src/cli/runtime/RT.cs @@ -52,18 +52,18 @@ public class RT return null;
}
- static public Object equal(Object arg1, Object arg2) {
- if(arg1 == null)
- return arg2 == null ? T : null;
- else if(arg2 == null)
- return null;
- return (eql(arg1,arg2) != null
- || (arg1 is Cons
- && arg2 is Cons
- && equal(((Cons)arg1).first,((Cons)arg2).first)!=null
- && equal(((Cons)arg1).rest,((Cons)arg2).rest)!=null))
- ?T:null;
- }
+ //static public Object equal(Object arg1, Object arg2) {
+ // if(arg1 == null)
+ // return arg2 == null ? T : null;
+ // else if(arg2 == null)
+ // return null;
+ // return (eql(arg1,arg2) != null
+ // || (arg1 is Cons
+ // && arg2 is Cons
+ // && equal(((Cons)arg1).first(),((Cons)arg2).first())!=null
+ // && equal(((Cons)arg1).rest(),((Cons)arg2).rest())!=null))
+ // ?T:null;
+ // }
static public Iter iter(Object coll)
{
@@ -163,7 +163,7 @@ public class RT {
return Convert.ToDouble(x);
}
-static public Cons cons(Object x, Cons y)
+static public Cons cons(Object x, ISeq y)
{
return new Cons(x, y);
}
@@ -198,27 +198,27 @@ static public Cons list(Object arg1, Object arg2, Object arg3, Object arg4, Obje return listStar(arg1, arg2, arg3, arg4, arg5, null);
}
-static public Cons listStar(Object arg1, Cons rest)
+static public Cons listStar(Object arg1, ISeq rest)
{
return cons(arg1, rest);
}
-static public Cons listStar(Object arg1, Object arg2, Cons rest)
+static public Cons listStar(Object arg1, Object arg2, ISeq rest)
{
return cons(arg1, cons(arg2, rest));
}
-static public Cons listStar(Object arg1, Object arg2, Object arg3, Cons rest)
+static public Cons listStar(Object arg1, Object arg2, Object arg3, ISeq rest)
{
return cons(arg1, cons(arg2, cons(arg3, rest)));
}
-static public Cons listStar(Object arg1, Object arg2, Object arg3, Object arg4, Cons rest)
+static public Cons listStar(Object arg1, Object arg2, Object arg3, Object arg4, ISeq rest)
{
return cons(arg1, cons(arg2, cons(arg3, cons(arg4, rest))));
}
-static public Cons listStar(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons rest)
+static public Cons listStar(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq rest)
{
return cons(arg1, cons(arg2, cons(arg3, cons(arg4, cons(arg5, rest)))));
}
@@ -231,20 +231,20 @@ static public Cons arrayToList(Object[] a) return ret;
}
-static public int length(Cons list)
+static public int length(ISeq list)
{
int i = 0;
- for(Cons c = list; c != null; c = c.rest)
+ for(ISeq c = list; c != null; c = c.rest())
{
i++;
}
return i;
}
-static public int boundedLength(Cons list, int limit)
+static public int boundedLength(ISeq list, int limit)
{
int i = 0;
- for(Cons c = list; c != null && i <= limit; c = c.rest)
+ for(ISeq c = list; c != null && i <= limit; c = c.rest())
{
i++;
}
@@ -347,7 +347,7 @@ static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2, Ob }
static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4,
- Object arg5, Cons args) /**/
+ Object arg5, ISeq args) /**/
{
if(tld == null)
tld = ThreadLocalData.get();
@@ -357,9 +357,9 @@ static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2, Ob tld.mvArray[2] = arg3;
tld.mvArray[3] = arg4;
tld.mvArray[4] = arg5;
- for(int i = 5; args != null && i < ThreadLocalData.MULTIPLE_VALUES_LIMIT; i++, args = args.rest)
+ for(int i = 5; args != null && i < ThreadLocalData.MULTIPLE_VALUES_LIMIT; i++, args = args.rest())
{
- tld.mvArray[i] = args.first;
+ tld.mvArray[i] = args.first();
}
if(args != null)
throw new ArgumentException("Too many arguments to values (> ThreadLocalData.MULTIPLE_VALUES_LIMIT)");
diff --git a/src/cli/runtime/Reflector.cs b/src/cli/runtime/Reflector.cs index a2894285..a4088a31 100644 --- a/src/cli/runtime/Reflector.cs +++ b/src/cli/runtime/Reflector.cs @@ -127,7 +127,7 @@ public static Object invokeInstanceMember(String name, Object target) //throws E return prepRet(p.GetValue(target, new Object[]{boxArg(p.GetIndexParameters()[0].ParameterType,arg1)}));
p.SetValue(target,boxArg(p.PropertyType,arg1),null);
return arg1;
- }
return invokeInstanceMethod(name, target, new Object[]{arg1});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2) //throws Exception
{
return invokeInstanceMethod(name, target, new Object[]{arg1, arg2});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2, Object arg3)
//throws Exception
{
return invokeInstanceMethod(name, target, new Object[]{arg1, arg2, arg3});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2, Object arg3,
Object arg4)
//throws Exception
{
return invokeInstanceMethod(name, target, new Object[]{arg1, arg2, arg3, arg4});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2, Object arg3,
Object arg4,
Cons arglist)
//throws Exception
{
Object[] args = new Object[4 + RT.length(arglist)];
args[0] = arg1;
args[1] = arg2;
args[2] = arg3;
args[3] = arg4;
for(int i = 4; arglist != null; i++, arglist = arglist.rest)
args[i] = arglist.first;
return invokeInstanceMethod(name, target, args);
}
+ }
return invokeInstanceMethod(name, target, new Object[]{arg1});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2) //throws Exception
{
return invokeInstanceMethod(name, target, new Object[]{arg1, arg2});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2, Object arg3)
//throws Exception
{
return invokeInstanceMethod(name, target, new Object[]{arg1, arg2, arg3});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2, Object arg3,
Object arg4)
//throws Exception
{
return invokeInstanceMethod(name, target, new Object[]{arg1, arg2, arg3, arg4});
}
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2, Object arg3,
Object arg4,
ISeq arglist)
//throws Exception
{
Object[] args = new Object[4 + RT.length(arglist)];
args[0] = arg1;
args[1] = arg2;
args[2] = arg3;
args[3] = arg4;
for(int i = 4; arglist != null; i++, arglist = arglist.rest())
args[i] = arglist.first();
return invokeInstanceMethod(name, target, args);
}
public static FieldInfo getField(Type t, string name,bool statics)
{
diff --git a/src/cli/runtime/RestFn0.cs b/src/cli/runtime/RestFn0.cs index 578a8c44..7ef2dc4f 100644 --- a/src/cli/runtime/RestFn0.cs +++ b/src/cli/runtime/RestFn0.cs @@ -18,9 +18,9 @@ namespace org.clojure.runtime public abstract class RestFn0 : AFn
{ -public abstract Object doInvoke(ThreadLocalData tld, Cons rest) /*throws Exception*/; +public abstract Object doInvoke(ThreadLocalData tld, ISeq rest) /*throws Exception*/; -override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ +override public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ { return doInvoke(tld, arglist); } @@ -56,7 +56,7 @@ override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Obj return doInvoke(tld, RT.list(arg1, arg2, arg3, arg4, arg5)); } -override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) +override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args) /*throws Exception*/ { return doInvoke(tld, RT.listStar(arg1, arg2, arg3, arg4, arg5, args)); diff --git a/src/cli/runtime/RestFn1.cs b/src/cli/runtime/RestFn1.cs index 822058f5..e61ecdd0 100644 --- a/src/cli/runtime/RestFn1.cs +++ b/src/cli/runtime/RestFn1.cs @@ -17,19 +17,19 @@ namespace org.clojure.runtime public abstract class RestFn1 : AFn{ -public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Cons rest) /*throws Exception*/; +public abstract Object doInvoke(ThreadLocalData tld, Object arg1, ISeq rest) /*throws Exception*/; -override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ +override public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ {
switch (RT.boundedLength(arglist, 1))
{
case 0:
return invoke(tld);
case 1:
- return invoke(tld, arglist.first);
+ return invoke(tld, arglist.first());
default:
- return doInvoke(tld, arglist.first
- , arglist.rest);
+ return doInvoke(tld, arglist.first()
+ , arglist.rest());
}
} @@ -59,7 +59,7 @@ override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Obj return doInvoke(tld, arg1, RT.list(arg2, arg3, arg4, arg5)); } -override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) +override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args) /*throws Exception*/ { return doInvoke(tld, arg1, RT.listStar(arg2, arg3, arg4, arg5, args)); diff --git a/src/cli/runtime/RestFn2.cs b/src/cli/runtime/RestFn2.cs index bc528dfa..29d14761 100644 --- a/src/cli/runtime/RestFn2.cs +++ b/src/cli/runtime/RestFn2.cs @@ -17,24 +17,24 @@ namespace org.clojure.runtime public abstract class RestFn2 : AFn{
- public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Cons rest) /*throws Exception*/; + public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, ISeq rest) /*throws Exception*/; -override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ +override public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ {
switch (RT.boundedLength(arglist, 2))
{
case 0:
return invoke(tld);
case 1:
- return invoke(tld, arglist.first);
+ return invoke(tld, arglist.first());
case 2:
- return invoke(tld, arglist.first
- , (arglist = arglist.rest).first
+ return invoke(tld, arglist.first()
+ , (arglist = arglist.rest()).first()
);
default:
- return doInvoke(tld, arglist.first
- , (arglist = arglist.rest).first
- , arglist.rest);
+ return doInvoke(tld, arglist.first()
+ , (arglist = arglist.rest()).first()
+ , arglist.rest());
} } @@ -60,7 +60,7 @@ override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Obj return doInvoke(tld, arg1, arg2, RT.list(arg3, arg4, arg5)); } -override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) +override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args) /*throws Exception*/ { return doInvoke(tld, arg1, arg2, RT.listStar(arg3, arg4, arg5, args)); diff --git a/src/cli/runtime/RestFn3.cs b/src/cli/runtime/RestFn3.cs index b236724c..3f7be0e2 100644 --- a/src/cli/runtime/RestFn3.cs +++ b/src/cli/runtime/RestFn3.cs @@ -17,30 +17,30 @@ namespace org.clojure.runtime public abstract class RestFn3 : AFn{
- public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Cons rest) /*throws Exception*/; + public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, ISeq rest) /*throws Exception*/; -override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ +override public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ {
switch (RT.boundedLength(arglist, 3))
{
case 0:
return invoke(tld);
case 1:
- return invoke(tld, arglist.first);
+ return invoke(tld, arglist.first());
case 2:
- return invoke(tld, arglist.first
- , (arglist = arglist.rest).first
+ return invoke(tld, arglist.first()
+ , (arglist = arglist.rest()).first()
);
case 3:
- return invoke(tld, arglist.first
- , (arglist = arglist.rest).first
- , (arglist = arglist.rest).first
+ 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);
+ return doInvoke(tld, arglist.first()
+ , (arglist = arglist.rest()).first()
+ , (arglist = arglist.rest()).first()
+ , arglist.rest());
} } @@ -62,7 +62,7 @@ override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Obj return doInvoke(tld, arg1, arg2, arg3, RT.list(arg4, arg5)); } -override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) +override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args) /*throws Exception*/ { return doInvoke(tld, arg1, arg2, arg3, RT.listStar(arg4, arg5, args)); diff --git a/src/cli/runtime/RestFn4.cs b/src/cli/runtime/RestFn4.cs index 04dfb33f..29b0a21f 100644 --- a/src/cli/runtime/RestFn4.cs +++ b/src/cli/runtime/RestFn4.cs @@ -17,38 +17,38 @@ namespace org.clojure.runtime public abstract class RestFn4 : AFn{
- public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Cons rest) + public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, ISeq rest) /*throws Exception*/; -override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ +override public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ {
switch (RT.boundedLength(arglist, 4))
{
case 0:
return invoke(tld);
case 1:
- return invoke(tld, arglist.first);
+ return invoke(tld, arglist.first());
case 2:
- return invoke(tld, arglist.first
- , (arglist = arglist.rest).first
+ return invoke(tld, arglist.first()
+ , (arglist = arglist.rest()).first()
);
case 3:
- return invoke(tld, arglist.first
- , (arglist = arglist.rest).first
- , (arglist = arglist.rest).first
+ 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
+ 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);
+ return doInvoke(tld, arglist.first()
+ , (arglist = arglist.rest()).first()
+ , (arglist = arglist.rest()).first()
+ , (arglist = arglist.rest()).first()
+ , arglist.rest());
} } @@ -64,7 +64,7 @@ override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Obj return doInvoke(tld, arg1, arg2, arg3, arg4, RT.list(arg5)); } -override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) +override public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args) /*throws Exception*/ { return doInvoke(tld, arg1, arg2, arg3, arg4, RT.listStar(arg5, args)); diff --git a/src/cli/runtime/RestFn5.cs b/src/cli/runtime/RestFn5.cs index e4ea5fe7..74092dc0 100644 --- a/src/cli/runtime/RestFn5.cs +++ b/src/cli/runtime/RestFn5.cs @@ -18,46 +18,46 @@ namespace org.clojure.runtime public abstract class RestFn5 : AFn{
public abstract Object doInvoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, - Cons rest) + ISeq rest) /*throws Exception*/; -override public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ +override public Object applyTo(ThreadLocalData tld, ISeq arglist) /*throws Exception*/ |