Ejemplo n.º 1
0
        static void dotty(LuaState L)
        {
            int     status;
            CharPtr oldprogname = progname;

            progname = null;
            while ((status = loadline(L)) != -1)
            {
                if (status == 0)
                {
                    status = docall(L, 0, 0);
                }
                report(L, status);
                if (status == 0 && Lua.LuaGetTop(L) > 0)
                {                  /* any result to print? */
                    Lua.LuaGetGlobal(L, "print");
                    Lua.LuaInsert(L, 1);
                    if (Lua.LuaPCall(L, Lua.LuaGetTop(L) - 1, 0, 0) != 0)
                    {
                        l_message(progname, Lua.LuaPushFString(L,
                                                               "error calling " + Lua.LUA_QL("print").ToString() + " (%s)",
                                                               Lua.LuaToString(L, -1)));
                    }
                }
            }
            Lua.LuaSetTop(L, 0);              /* clear stack */
            Lua.fputs("\n", Lua.stdout);
            Lua.fflush(Lua.stdout);
            progname = oldprogname;
        }
Ejemplo n.º 2
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);
        }