예제 #1
0
        public Func <NamedDataType, NamedDataType> VisitFunction(FunctionDeclarator function)
        {
            var fn = function.Declarator.Accept(this);

            return((nt) =>
            {
                var parameters = function.Parameters
                                 .Select(p => ConvertParameter(p))
                                 .ToArray();

                // Special case for C, where foo(void) means a function with no parameters,
                // not a function with one parameter of type "void".
                if (FirstParameterVoid(parameters))
                {
                    parameters = new Argument_v1[0];
                }

                Argument_v1 ret = null;
                if (nt.DataType != null)
                {
                    ret = new Argument_v1
                    {
                        Type = nt.DataType,
                    };
                }
                nt.DataType = new SerializedSignature
                {
                    Convention = callingConvention != CTokenType.None
                        ? callingConvention.ToString().ToLower()
                        : null,
                    ReturnValue = ret,
                    Arguments = parameters.ToArray(),
                };
                return fn(nt);
            });
        }
예제 #2
0
 public string VisitFunction(FunctionDeclarator function)
 {
     return(function.Declarator.Accept(this));
 }