Esempio n. 1
0
        public static string GetReturnCSharpType(this IMethodLike callable, IndentWriter writer)
        {
            var retVal = callable.ReturnValue;

            if (retVal == null)
            {
                return("void");
            }

            // TODO: Handle marshalling.

            // Try getting the array return value, then the type one.
            var retSymbol = retVal.Resolve(writer.Options);

            return(retSymbol.CSharpType);
        }
Esempio n. 2
0
        public static ParametersResult BuildParameters(this IMethodLike callable, GenerationOptions opts, bool appendInstanceParameters)
        {
            var parameters         = callable.Parameters;
            var marshalTypeAndName = new List <string>(parameters.Count);
            var typeAndName        = new List <string> (parameters.Count);
            var parameterNames     = new List <string> (parameters.Count);

            for (int i = 0; i < parameters.Count; ++i)
            {
                var parameter = parameters [i];
                if (!appendInstanceParameters)
                {
                    if (parameter is InstanceParameter)
                    {
                        continue;
                    }

                    // HACK: Make this proper
                    if (i == 0 && callable is Function)
                    {
                        continue;
                    }
                }

                var symbol = parameter.Resolve(opts);
                marshalTypeAndName.Add(symbol.CSharpType + " " + parameter.Name);
                typeAndName.Add(symbol.CSharpType + (parameter.Array != null ? "[]" : "") + " " + parameter.Name);
                parameterNames.Add(parameter.Name);
            }

            // PERF: Use an array as the string[] overload of Join is way more efficient than the IEnumerable<string> one.
            string marshalParameterString = string.Join(", ", marshalTypeAndName.ToArray());
            string parameterString        = string.Join(", ", typeAndName.ToArray());
            string baseParams             = string.Join(", ", parameterNames.ToArray());

            return(new ParametersResult(marshalParameterString, parameterString, baseParams));
        }