Ejemplo n.º 1
0
        // return `ReturnType', `FuncName', `ParameterTypes'
        private static int FFI_ParseSignature(ILuaState lua)
        {
            var signature = lua.ToString(1);
            var result    = FuncSignatureParser.Parse(lua, signature);

            if (result.ReturnType != null)
            {
                lua.PushString(result.ReturnType);
            }
            else
            {
                lua.PushNil();
            }
            lua.PushString(result.FuncName);
            if (result.ParameterTypes != null)
            {
                lua.NewTable();
                for (int i = 0; i < result.ParameterTypes.Length; ++i)
                {
                    lua.PushString(result.ParameterTypes[i]);
                    lua.RawSetI(-2, i + 1);
                }
            }
            else
            {
                lua.PushNil();
            }
            return(3);
        }
Ejemplo n.º 2
0
            public static FuncSignature Parse(
                ILuaState lua, string signature)
            {
                var loadinfo = new StringLoadInfo(signature);

                var parser = new FuncSignatureParser();

                parser.Lexer  = new LLex(lua, loadinfo, signature);
                parser.Result = new FuncSignature();

                return(parser.parse(signature));
            }
Ejemplo n.º 3
0
            public static FuncSignature Parse(
				ILuaState lua, string signature )
            {
                var loadinfo = new StringLoadInfo( signature );

                var parser = new FuncSignatureParser();
                parser.Lexer = new LLex( lua, loadinfo, signature );
                parser.Result = new FuncSignature();

                return parser.parse( signature );
            }