Beispiel #1
0
        static int pushline(LuaState L, int firstline)
        {
            CharPtr buffer = new char[Lua.LUA_MAXINPUT];
            CharPtr b      = new CharPtr(buffer);
            int     l;
            CharPtr prmt = get_prompt(L, firstline);

            if (!Lua.lua_readline(L, b, prmt))
            {
                return(0);                 /* no input */
            }
            l = Lua.strlen(b);
            if (l > 0 && b[l - 1] == '\n')                 /* line ends with newline? */
            {
                b[l - 1] = '\0';                           /* remove it */
            }
            if ((firstline != 0) && (b[0] == '='))         /* first line starts with `=' ? */
            {
                Lua.LuaPushFString(L, "return %s", b + 1); /* change it to `return' */
            }
            else
            {
                Lua.LuaPushString(L, b);
            }
            Lua.lua_freeline(L, b);
            return(1);
        }
Beispiel #2
0
        static int getargs(LuaState L, string[] argv, int n)
        {
            int narg;
            int i;
            int argc = argv.Length;             /* count total number of arguments */

            narg = argc - (n + 1);              /* number of arguments to the script */
            Lua.LuaLCheckStack(L, narg + 3, "too many arguments to script");
            for (i = n + 1; i < argc; i++)
            {
                Lua.LuaPushString(L, argv[i]);
            }
            Lua.LuaCreateTable(L, narg, n + 1);
            for (i = 0; i < argc; i++)
            {
                Lua.LuaPushString(L, argv[i]);
                Lua.LuaRawSetI(L, -2, i - n);
            }
            return(narg);
        }
Beispiel #3
0
 static int dolibrary(LuaState L, CharPtr name)
 {
     Lua.LuaGetGlobal(L, "require");
     Lua.LuaPushString(L, name);
     return(report(L, docall(L, 1, 1)));
 }