Example #1
0
        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;

                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>());
        }
Example #2
0
        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);
        }