public OptimizedFunctionAny(string name, MethodInfo[] infos, MethodBase[] targets, FunctionType functionType) : base(name, targets, functionType) { for (int i = 0; i < infos.Length; i++) { Debug.Assert(infos[i].IsStatic); switch (infos[i].GetParameters().Length) { case 0: target0 = IronPython.Compiler.CodeGen.CreateDelegate(infos[i], typeof(CallTarget0)) as CallTarget0; break; case 1: if (!infos[i].GetParameters()[0].ParameterType.HasElementType) { target1 = IronPython.Compiler.CodeGen.CreateDelegate(infos[i], typeof(CallTarget1)) as CallTarget1; } else { targetN = IronPython.Compiler.CodeGen.CreateDelegate(infos[i], typeof(CallTargetN)) as CallTargetN; } break; case 2: target2 = IronPython.Compiler.CodeGen.CreateDelegate(infos[i], typeof(CallTarget2)) as CallTarget2; break; case 3: target3 = IronPython.Compiler.CodeGen.CreateDelegate(infos[i], typeof(CallTarget3)) as CallTarget3; break; case 4: target4 = IronPython.Compiler.CodeGen.CreateDelegate(infos[i], typeof(CallTarget4)) as CallTarget4; break; case 5: target5 = IronPython.Compiler.CodeGen.CreateDelegate(infos[i], typeof(CallTarget5)) as CallTarget5; break; } } }
public OptimizedFunctionAny(OptimizedFunctionAny from) : base(from) { target0 = from.target0; target1 = from.target1; target2 = from.target2; target3 = from.target3; target4 = from.target4; target5 = from.target5; targetN = from.targetN; }
ProcedureInfo GetProcedureInfoInternal(string proc, string importspec) { if (string.IsNullOrEmpty(proc)) { throw new ArgumentException("proc cannot be null or empty"); } if (string.IsNullOrEmpty(importspec)) { throw new ArgumentException("importspec cannot be null or empty"); } try { Callable c = @"(lambda (maker) (let ((p (eval {0} {1}))) (let ((forms (call-with-values (lambda () (procedure-form p)) vector))) (maker (symbol->string {0}) forms))))".Eval <Callable>(SymbolTable.StringToObject(proc), importspec.Eval()); CallTarget2 maker = (n, forms) => { var f = forms as object[]; List <string> ff = new List <string>(); foreach (Cons fc in f) { ff.Add(fc.PrettyPrint.TrimEnd('\n')); } var pi = new ProcedureInfo { Name = n as string, Forms = ff.ToArray() }; return(pi); }; return(c.Call(Closure.Create(maker)) as ProcedureInfo); } catch (Exception ex) { throw new EvaluationException(ex.ToString()); } }
SymbolBinding[] GetBindingsInternal(string importspec) { if (string.IsNullOrEmpty(importspec)) { throw new ArgumentException("importspec cannot be null or empty"); } try { Callable c = @"(lambda (maker) (map (lambda (b) (maker (car b) (cdr b))) (environment-bindings {0})))".Eval <Callable>(importspec.Eval()); CallTarget2 maker = (n, t) => { return(new SymbolBinding { Name = SymbolTable.IdToString((SymbolId)n), Type = (BindingType)Enum.Parse(typeof(BindingType), SymbolTable.IdToString((SymbolId)t), true), }); }; var r = c.Call(Closure.Create(maker)) as IEnumerable; List <SymbolBinding> sbs = new List <SymbolBinding>(); foreach (SymbolBinding sb in r) { sbs.Add(sb); } return(sbs.ToArray()); } catch (Exception ex) { throw new EvaluationException(ex.ToString()); } }
public BinaryOperator(string symbol, CallTarget2 target, CallTarget2 inPlaceTarget, int precedence) : base(symbol, precedence) { this.target = target; this.inPlaceTarget = inPlaceTarget; }
public DivisionOperator(string symbol, CallTarget2 target, CallTarget2 inPlaceTarget, CallTarget2 targetTrue, CallTarget2 inPlaceTargetTrue, int precedence) : base(symbol, target, inPlaceTarget, precedence) { this.targetTrue = targetTrue; this.inPlaceTargetTrue = inPlaceTargetTrue; }
public OpsReflectedType(string name, Type baseType, Type opsType, Type extensibleType, CallTarget2 optimizedCtor) : this(name, baseType, opsType, extensibleType) { optCtor2 = optimizedCtor; }
public OpsReflectedType(string name, Type baseType, Type opsType, Type extensibleType, CallTarget2 optimizedCtor) : this(name, baseType, opsType, extensibleType) { optCtor2 = optimizedCtor; }
public DivisionOperator(string symbol, CallTarget2 target, CallTarget2 inPlaceTarget, CallTarget2 targetTrue, CallTarget2 inPlaceTargetTrue, int precedence) : base(symbol, target, inPlaceTarget, precedence) { this.targetTrue = targetTrue; this.inPlaceTargetTrue = inPlaceTargetTrue; }
public Function2(PythonModule globals, string name, CallTarget2 target, string[] argNames, object[] defaults) : base(globals, name, argNames, defaults) { this.target = target; }
public OptimizedFunction2(OptimizedFunction2 from) : base(from) { target = from.target; }
public OptimizedFunction2(string name, MethodInfo info, MethodBase[] targets, FunctionType functionType) : base(name, targets, functionType) { target = IronPython.Compiler.CodeGen.CreateDelegate(info, typeof(CallTarget2)) as CallTarget2; }
public FastCallable2(string name, CallTarget2 target) { this.target2 = target; this.name = name; }
public static Func <A1, A2, R> MakeTyped <A1, A2, R>(CallTarget2 f) { return((a1, a2) => Unbox <R>(f(a1, a2))); }
public Function2(PythonModule globals, string name, CallTarget2 target, string[] argNames, object[] defaults) : base(globals, name, argNames, defaults) { this.target = target; }
public static Action <A1, A2> MakeVoidTyped <A1, A2>(CallTarget2 f) { return((a1, a2) => f(a1, a2)); }
public BinaryOperator(string symbol, CallTarget2 target, CallTarget2 inPlaceTarget, int precedence) : base(symbol, precedence) { this.target = target; this.inPlaceTarget = inPlaceTarget; }