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); }
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); }
static int dolibrary(LuaState L, CharPtr name) { Lua.LuaGetGlobal(L, "require"); Lua.LuaPushString(L, name); return(report(L, docall(L, 1, 1))); }