public DynamicMetaObject/*!*/ Invoke(PythonInvokeBinder/*!*/ pythonInvoke, Expression/*!*/ codeContext, DynamicMetaObject/*!*/ target, DynamicMetaObject/*!*/[]/*!*/ args) { DynamicMetaObject translated = BuiltinFunction.TranslateArguments(pythonInvoke, codeContext, target, args, false, Value.Name); if (translated != null) { return translated; } return InvokeWorker(pythonInvoke, args, codeContext); }
public static Expression/*!*/ Invoke(BinderState/*!*/ binder, Type/*!*/ resultType, CallSignature signature, params Expression/*!*/[]/*!*/ args) { PythonInvokeBinder invoke = new PythonInvokeBinder(binder, signature); switch(args.Length) { case 0: return Ast.Dynamic(invoke, resultType, AstUtils.CodeContext()); case 1: return Ast.Dynamic(invoke, resultType, AstUtils.CodeContext(), args[0]); case 2: return Ast.Dynamic(invoke, resultType, AstUtils.CodeContext(), args[0], args[1]); case 3: return Ast.Dynamic(invoke, resultType, AstUtils.CodeContext(), args[0], args[1], args[2]); default: return Ast.Dynamic( invoke, resultType, new ReadOnlyCollection<Expression>(ArrayUtils.Insert(AstUtils.CodeContext(), args)) ); } }
private static BaseMethodBinding GetMethodBinding <T>(Binding.PythonInvokeBinder binder, Type[] typeArgs, BaseMethodBinding binding) where T : class { #region Generated Python Selfless Method Caller Switch // *** BEGIN GENERATED CODE *** // generated by function: selfless_method_caller_switch from: generate_calls.py switch (typeArgs.Length) { case 1: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <>).MakeGenericType(typeArgs), binder); break; case 2: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <,>).MakeGenericType(typeArgs), binder); break; case 3: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, ,>).MakeGenericType(typeArgs), binder); break; case 4: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , ,>).MakeGenericType(typeArgs), binder); break; case 5: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , ,>).MakeGenericType(typeArgs), binder); break; case 6: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , , ,>).MakeGenericType(typeArgs), binder); break; case 7: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , , , ,>).MakeGenericType(typeArgs), binder); break; case 8: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , , , , ,>).MakeGenericType(typeArgs), binder); break; case 9: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , , , , , ,>).MakeGenericType(typeArgs), binder); break; case 10: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , , , , , , ,>).MakeGenericType(typeArgs), binder); break; case 11: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , , , , , , , ,>).MakeGenericType(typeArgs), binder); break; case 12: binding = (BaseMethodBinding)Activator.CreateInstance(typeof(MethodBinding <, , , , , , , , , , ,>).MakeGenericType(typeArgs), binder); break; } // *** END GENERATED CODE *** #endregion return(binding); }
public DynamicMetaObject/*!*/ Invoke(PythonInvokeBinder/*!*/ pythonInvoke, Expression/*!*/ codeContext, DynamicMetaObject/*!*/ target, DynamicMetaObject/*!*/[]/*!*/ args) { return InvokeWorker(pythonInvoke, codeContext, args); }
public DynamicMetaObject/*!*/ Invoke(PythonInvokeBinder/*!*/ pythonInvoke, Expression/*!*/ codeContext, DynamicMetaObject/*!*/ target, DynamicMetaObject/*!*/[]/*!*/ args) { return new FunctionBinderHelper(pythonInvoke, this, codeContext, args).MakeMetaObject(); }
Binding.FastBindResult <T> Binding.IFastInvokable.MakeInvokeBinding <T>(CallSite <T> site, Binding.PythonInvokeBinder binder, CodeContext context, object[] args) { // TODO: We can process any signature that isn't * or ** args for the 1st argument if (binder.Signature.IsSimple) { BaseMethodBinding binding = null; if (__self__ == null) { if (args.Length != 0) { binding = GetMethodBinding <T>(binder, GetTypeArgsSelfless <T>(), binding); if (binding != null) { return(new FastBindResult <T>( (T)(object)binding.GetSelflessTarget(), true )); } } } else { var selfBinder = GetSelfBinder(binder, context); if (args.Length == 0) { binding = new MethodBinding(selfBinder); } else { binding = GetMethodBinding <T>(selfBinder, GetTypeArgs <T>(), binding); } if (binding != null) { return(new FastBindResult <T>( (T)(object)binding.GetSelfTarget(), true )); } } } return(new Binding.FastBindResult <T>()); }
private static PythonInvokeBinder GetSelfBinder(Binding.PythonInvokeBinder binder, CodeContext context) { return(context.LanguageContext.Invoke( new CallSignature(ArrayUtils.Insert(new Argument(ArgumentType.Simple), binder.Signature.GetArgumentInfos())) )); }
internal PythonInvokeBinder/*!*/ Invoke(CallSignature signature) { if (_invokeBinders == null) { Interlocked.CompareExchange( ref _invokeBinders, new Dictionary<CallSignature, PythonInvokeBinder>(), null ); } lock (_invokeBinders) { PythonInvokeBinder res; if (!_invokeBinders.TryGetValue(signature, out res)) { _invokeBinders[signature] = res = new PythonInvokeBinder(this, signature); } return res; } }
public DynamicMetaObject /*!*/ Invoke(PythonInvokeBinder /*!*/ pythonInvoke, Expression /*!*/ codeContext, DynamicMetaObject /*!*/ target, DynamicMetaObject /*!*/[] /*!*/ args) { return(InvokeWorker(pythonInvoke, codeContext, args)); }