コード例 #1
0
        public Method ConvertToIrisMethod()
        {
            IrisType returnType = _signature.ReturnType;

            Variable[] parameters = GetParameters();

            if (IsStatic)
            {
                return(CreateMethodHelper(returnType, parameters));
            }
            else
            {
                // Iris can call instance methods by passing "this" as parameter 0
                Variable[] staticParams = new Variable[parameters.Length + 1];
                IrisType   instanceType = DeclaringType.ConvertToIrisType();

                if (instanceType == IrisType.Integer || instanceType == IrisType.Boolean)
                {
                    instanceType = instanceType.MakeByRefType();
                }

                staticParams[0] = new Variable(instanceType, "this");
                Array.Copy(parameters, 0, staticParams, 1, parameters.Length);
                return(CreateMethodHelper(returnType, staticParams));
            }
        }