aboutsummaryrefslogtreecommitdiff
path: root/src/ldblib.js
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2017-04-26 17:55:37 +1000
committerdaurnimator <quae@daurnimator.com>2017-04-26 18:06:57 +1000
commitb688ef577a10e8b6f2cf948faaa8d1af70c7949c (patch)
tree0ff07d75f65442b92d8a95259b9ab6845e66b27a /src/ldblib.js
parent53bd1fcc4b90f24427064419354ad07c552a93d5 (diff)
downloadfengari-b688ef577a10e8b6f2cf948faaa8d1af70c7949c.tar.gz
fengari-b688ef577a10e8b6f2cf948faaa8d1af70c7949c.tar.bz2
fengari-b688ef577a10e8b6f2cf948faaa8d1af70c7949c.zip
Export lapi.js functions from lua.js
Diffstat (limited to 'src/ldblib.js')
-rw-r--r--src/ldblib.js165
1 files changed, 82 insertions, 83 deletions
diff --git a/src/ldblib.js b/src/ldblib.js
index 62422a8..c5ef8d4 100644
--- a/src/ldblib.js
+++ b/src/ldblib.js
@@ -3,7 +3,6 @@
const assert = require('assert');
const lua = require('./lua.js');
-const lapi = require('./lapi.js');
const lauxlib = require('./lauxlib.js');
const ldebug = require('./ldebug.js');
@@ -13,36 +12,36 @@ const ldebug = require('./ldebug.js');
** checked.
*/
const checkstack = function(L, L1, n) {
- if (L !== L1 && !lapi.lua_checkstack(L1, n))
+ if (L !== L1 && !lua.lua_checkstack(L1, n))
lauxlib.luaL_error(L, lua.to_luastring("stack overflow", true));
};
const db_getregistry = function(L) {
- lapi.lua_pushvalue(L, lua.LUA_REGISTRYINDEX);
+ lua.lua_pushvalue(L, lua.LUA_REGISTRYINDEX);
return 1;
};
const db_getmetatable = function(L) {
lauxlib.luaL_checkany(L, 1);
- if (!lapi.lua_getmetatable(L, 1)) {
- lapi.lua_pushnil(L); /* no metatable */
+ if (!lua.lua_getmetatable(L, 1)) {
+ lua.lua_pushnil(L); /* no metatable */
}
return 1;
};
const db_setmetatable = function(L) {
- const t = lapi.lua_type(L, 2);
+ const t = lua.lua_type(L, 2);
lauxlib.luaL_argcheck(L, t == lua.LUA_TNIL || t == lua.LUA_TTABLE, 2, lua.to_luastring("nil or table expected", true));
- lapi.lua_settop(L, 2);
- lapi.lua_setmetatable(L, 1);
+ lua.lua_settop(L, 2);
+ lua.lua_setmetatable(L, 1);
return 1; /* return 1st argument */
};
const db_getuservalue = function(L) {
- if (lapi.lua_type(L, 1) !== lua.LUA_TUSERDATA)
- lapi.lua_pushnil(L);
+ if (lua.lua_type(L, 1) !== lua.LUA_TUSERDATA)
+ lua.lua_pushnil(L);
else
- lapi.lua_getuservalue(L, 1);
+ lua.lua_getuservalue(L, 1);
return 1;
};
@@ -50,8 +49,8 @@ const db_getuservalue = function(L) {
const db_setuservalue = function(L) {
lauxlib.luaL_checktype(L, 1, lua.LUA_TUSERDATA);
lauxlib.luaL_checkany(L, 2);
- lapi.lua_settop(L, 2);
- lapi.lua_setuservalue(L, 1);
+ lua.lua_settop(L, 2);
+ lua.lua_setuservalue(L, 1);
return 1;
};
@@ -62,10 +61,10 @@ const db_setuservalue = function(L) {
** access their other arguments)
*/
const getthread = function(L) {
- if (lapi.lua_isthread(L, 1)) {
+ if (lua.lua_isthread(L, 1)) {
return {
arg: 1,
- thread: lapi.lua_tothread(L, 1)
+ thread: lua.lua_tothread(L, 1)
};
} else {
return {
@@ -81,18 +80,18 @@ const getthread = function(L) {
** value can be a string, an int, or a boolean.
*/
const settabss = function(L, k, v) {
- lapi.lua_pushstring(L, v);
- lapi.lua_setfield(L, -2, k);
+ lua.lua_pushstring(L, v);
+ lua.lua_setfield(L, -2, k);
};
const settabsi = function(L, k, v) {
- lapi.lua_pushinteger(L, v);
- lapi.lua_setfield(L, -2, k);
+ lua.lua_pushinteger(L, v);
+ lua.lua_setfield(L, -2, k);
};
const settabsb = function(L, k, v) {
- lapi.lua_pushboolean(L, v);
- lapi.lua_setfield(L, -2, k);
+ lua.lua_pushboolean(L, v);
+ lua.lua_setfield(L, -2, k);
};
@@ -105,10 +104,10 @@ const settabsb = function(L, k, v) {
*/
const treatstackoption = function(L, L1, fname) {
if (L == L1)
- lapi.lua_rotate(L, -2, 1); /* exchange object and table */
+ lua.lua_rotate(L, -2, 1); /* exchange object and table */
else
- lapi.lua_xmove(L1, L, 1); /* move object to the "main" stack */
- lapi.lua_setfield(L, -2, fname); /* put object into table */
+ lua.lua_xmove(L1, L, 1); /* move object to the "main" stack */
+ lua.lua_setfield(L, -2, fname); /* put object into table */
};
/*
@@ -124,20 +123,20 @@ const db_getinfo = function(L) {
let L1 = thread.thread;
let options = lauxlib.luaL_optstring(L, arg + 2, lua.to_luastring("flnStu", true));
checkstack(L, L1, 3);
- if (lapi.lua_isfunction(L, arg + 1)) { /* info about a function? */
+ if (lua.lua_isfunction(L, arg + 1)) { /* info about a function? */
options = ['>'.charCodeAt(0)].concat(options); /* add '>' to 'options' */
- lapi.lua_pushvalue(L, arg + 1); /* move function to 'L1' stack */
- lapi.lua_xmove(L, L1, 1);
+ lua.lua_pushvalue(L, arg + 1); /* move function to 'L1' stack */
+ lua.lua_xmove(L, L1, 1);
} else { /* stack level */
if (!ldebug.lua_getstack(L1, lauxlib.luaL_checkinteger(L, arg + 1), ar)) {
- lapi.lua_pushnil(L); /* level out of range */
+ lua.lua_pushnil(L); /* level out of range */
return 1;
}
}
if (!ldebug.lua_getinfo(L1, options, ar))
lauxlib.luaL_argerror(L, arg + 2, lua.to_luastring("invalid option", true));
- lapi.lua_newtable(L); /* table to collect results */
+ lua.lua_newtable(L); /* table to collect results */
if (options.indexOf('S'.charCodeAt(0)) > -1) {
settabss(L, lua.to_luastring("source", true), ar.source.value);
settabss(L, lua.to_luastring("short_src", true), ar.short_src);
@@ -170,24 +169,24 @@ const db_getlocal = function(L) {
let arg = thread.arg;
let ar = new lua.lua_Debug();
let nvar = lauxlib.luaL_checkinteger(L, arg + 2); /* local-variable index */
- if (lapi.lua_isfunction(L, arg + 1)) {
- lapi.lua_pushvalue(L, arg + 1); /* push function */
- lapi.lua_pushstring(L, ldebug.lua_getlocal(L, null, nvar)); /* push local name */
+ if (lua.lua_isfunction(L, arg + 1)) {
+ lua.lua_pushvalue(L, arg + 1); /* push function */
+ lua.lua_pushstring(L, ldebug.lua_getlocal(L, null, nvar)); /* push local name */
return 1; /* return only name (there is no value) */
} else { /* stack-level argument */
let level = lauxlib.luaL_checkinteger(L, arg + 1);
if (!ldebug.lua_getstack(L1, level, ar)) /* out of range? */
- return lauxlib.luaL_argerror(L, arg+1, lapi.to_luastring("level out of range", true));
+ return lauxlib.luaL_argerror(L, arg+1, lua.to_luastring("level out of range", true));
checkstack(L, L1, 1);
let name = ldebug.lua_getlocal(L1, ar, nvar);
if (name) {
- lapi.lua_xmove(L1, L, 1); /* move local value */
- lapi.lua_pushstring(L, name.value); /* push name */
- lapi.lua_rotate(L, -2, 1); /* re-order */
+ lua.lua_xmove(L1, L, 1); /* move local value */
+ lua.lua_pushstring(L, name.value); /* push name */
+ lua.lua_rotate(L, -2, 1); /* re-order */
return 2;
}
else {
- lapi.lua_pushnil(L); /* no name (nor value) */
+ lua.lua_pushnil(L); /* no name (nor value) */
return 1;
}
}
@@ -203,13 +202,13 @@ const db_setlocal = function(L) {
if (!ldebug.lua_getstack(L1, level, ar)) /* out of range? */
return lauxlib.luaL_argerror(L, arg + 1, "level out of range");
lauxlib.luaL_checkany(L, arg + 3);
- lapi.lua_settop(L, arg + 3);
+ lua.lua_settop(L, arg + 3);
checkstack(L, L1, 1);
- lapi.lua_xmove(L, L1, 1);
+ lua.lua_xmove(L, L1, 1);
let name = ldebug.lua_setlocal(L1, ar, nvar);
if (name === null)
- lapi.lua_pop(L1, 1); /* pop value (if not popped by 'lua_setlocal') */
- lapi.lua_pushstring(L, name.value);
+ lua.lua_pop(L1, 1); /* pop value (if not popped by 'lua_setlocal') */
+ lua.lua_pushstring(L, name.value);
return 1;
};
@@ -219,10 +218,10 @@ const db_setlocal = function(L) {
const auxupvalue = function(L, get) {
let n = lauxlib.luaL_checkinteger(L, 2); /* upvalue index */
lauxlib.luaL_checktype(L, 1, lua.LUA_TFUNCTION); /* closure */
- let name = get ? lapi.lua_getupvalue(L, 1, n) : lapi.lua_setupvalue(L, 1, n);
+ let name = get ? lua.lua_getupvalue(L, 1, n) : lua.lua_setupvalue(L, 1, n);
if (name === null) return 0;
- lapi.lua_pushstring(L, name);
- lapi.lua_insert(L, -(get+1)); /* no-op if get is false */
+ lua.lua_pushstring(L, name);
+ lua.lua_insert(L, -(get+1)); /* no-op if get is false */
return get + 1;
};
@@ -243,22 +242,22 @@ const db_setupvalue = function(L) {
const checkupval = function(L, argf, argnup) {
let nup = lauxlib.luaL_checkinteger(L, argnup); /* upvalue index */
lauxlib.luaL_checktype(L, argf, lua.LUA_TFUNCTION); /* closure */
- lauxlib.luaL_argcheck(L, (lapi.lua_getupvalue(L, argf, nup) !== null), argnup, lua.to_luastring("invalid upvalue index", true));
+ lauxlib.luaL_argcheck(L, (lua.lua_getupvalue(L, argf, nup) !== null), argnup, lua.to_luastring("invalid upvalue index", true));
return nup;
};
const db_upvalueid = function(L) {
let n = checkupval(L, 1, 2);
- lapi.lua_pushlightuserdata(L, lapi.lua_upvalueid(L, 1, n));
+ lua.lua_pushlightuserdata(L, lua.lua_upvalueid(L, 1, n));
return 1;
};
const db_upvaluejoin = function(L) {
let n1 = checkupval(L, 1, 2);
let n2 = checkupval(L, 3, 4);
- lauxlib.luaL_argcheck(L, !lapi.lua_iscfunction(L, 1), 1, lua.to_luastring("Lua function expected", true));
- lauxlib.luaL_argcheck(L, !lapi.lua_iscfunction(L, 3), 3, lua.to_luastring("Lua function expected", true));
- lapi.lua_upvaluejoin(L, 1, n1, 3, n2);
+ lauxlib.luaL_argcheck(L, !lua.lua_iscfunction(L, 1), 1, lua.to_luastring("Lua function expected", true));
+ lauxlib.luaL_argcheck(L, !lua.lua_iscfunction(L, 3), 3, lua.to_luastring("Lua function expected", true));
+ lua.lua_upvaluejoin(L, 1, n1, 3, n2);
return 0;
};
@@ -275,15 +274,15 @@ const hooknames = ["call", "return", "line", "count", "tail call"].map(e => lua.
** thread (if there is one)
*/
const hookf = function(L, ar) {
- lapi.lua_rawgetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY);
- lapi.lua_pushthread(L);
- if (lapi.lua_rawget(L, -2) === lua.LUA_TFUNCTION) { /* is there a hook function? */
- lapi.lua_pushstring(L, hooknames[ar.event]); /* push event name */
+ lua.lua_rawgetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY);
+ lua.lua_pushthread(L);
+ if (lua.lua_rawget(L, -2) === lua.LUA_TFUNCTION) { /* is there a hook function? */
+ lua.lua_pushstring(L, hooknames[ar.event]); /* push event name */
if (ar.currentline >= 0)
- lapi.lua_pushinteger(L, ar.currentline); /* push current line */
- else lapi.lua_pushnil(L);
+ lua.lua_pushinteger(L, ar.currentline); /* push current line */
+ else lua.lua_pushnil(L);
assert(ldebug.lua_getinfo(L, ["l".charCodeAt(0), "S".charCodeAt(0)], ar));
- lapi.lua_call(L, 2, 0); /* call hook function */
+ lua.lua_call(L, 2, 0); /* call hook function */
}
};
@@ -315,8 +314,8 @@ const db_sethook = function(L) {
let thread = getthread(L);
let L1 = thread.thread;
let arg = thread.arg;
- if (lapi.lua_isnoneornil(L, arg+1)) { /* no hook? */
- lapi.lua_settop(L, arg+1);
+ if (lua.lua_isnoneornil(L, arg+1)) { /* no hook? */
+ lua.lua_settop(L, arg+1);
func = null; mask = 0; count = 0; /* turn off hooks */
}
else {
@@ -325,19 +324,19 @@ const db_sethook = function(L) {
count = lauxlib.luaL_optinteger(L, arg + 3, 0);
func = hookf; mask = makemask(smask, count);
}
- if (lapi.lua_rawgetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY) === lua.LUA_TNIL) {
- lapi.lua_createtable(L, 0, 2); /* create a hook table */
- lapi.lua_pushvalue(L, -1);
- lapi.lua_rawsetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY); /* set it in position */
- lapi.lua_pushstring(L, ["k".charCodeAt(0)]);
- lapi.lua_setfield(L, -2, lua.to_luastring("__mode", true)); /** hooktable.__mode = "k" */
- lapi.lua_pushvalue(L, -1);
- lapi.lua_setmetatable(L, -2); /* setmetatable(hooktable) = hooktable */
+ if (lua.lua_rawgetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY) === lua.LUA_TNIL) {
+ lua.lua_createtable(L, 0, 2); /* create a hook table */
+ lua.lua_pushvalue(L, -1);
+ lua.lua_rawsetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY); /* set it in position */
+ lua.lua_pushstring(L, ["k".charCodeAt(0)]);
+ lua.lua_setfield(L, -2, lua.to_luastring("__mode", true)); /** hooktable.__mode = "k" */
+ lua.lua_pushvalue(L, -1);
+ lua.lua_setmetatable(L, -2); /* setmetatable(hooktable) = hooktable */
}
checkstack(L, L1, 1);
- lapi.lua_pushthread(L1); lapi.lua_xmove(L1, L, 1); /* key (thread) */
- lapi.lua_pushvalue(L, arg + 1); /* value (hook function) */
- lapi.lua_rawset(L, -3); /* hooktable[L1] = new Lua hook */
+ lua.lua_pushthread(L1); lua.lua_xmove(L1, L, 1); /* key (thread) */
+ lua.lua_pushvalue(L, arg + 1); /* value (hook function) */
+ lua.lua_rawset(L, -3); /* hooktable[L1] = new Lua hook */
ldebug.lua_sethook(L1, func, mask, count);
return 0;
};
@@ -350,18 +349,18 @@ const db_gethook = function(L) {
let mask = ldebug.lua_gethookmask(L1);
let hook = ldebug.lua_gethook(L1);
if (hook === null) /* no hook? */
- lapi.lua_pushnil(L);
+ lua.lua_pushnil(L);
else if (hook !== hookf) /* external hook? */
- lapi.lua_pushliteral(L, "external hook");
+ lua.lua_pushliteral(L, "external hook");
else { /* hook table must exist */
- lapi.lua_rawgetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY);
+ lua.lua_rawgetp(L, lua.LUA_REGISTRYINDEX, HOOKKEY);
checkstack(L, L1, 1);
- lapi.lua_pushthread(L1); lapi.lua_xmove(L1, L, 1);
- lapi.lua_rawget(L, -2); /* 1st result = hooktable[L1] */
- lapi.lua_remove(L, -2); /* remove hook table */
+ lua.lua_pushthread(L1); lua.lua_xmove(L1, L, 1);
+ lua.lua_rawget(L, -2); /* 1st result = hooktable[L1] */
+ lua.lua_remove(L, -2); /* remove hook table */
}
- lapi.lua_pushstring(L, unmakemask(mask, buff)); /* 2nd result = mask */
- lapi.lua_pushinteger(L, ldebug.lua_gethookcount(L1)); /* 3rd result = count */
+ lua.lua_pushstring(L, unmakemask(mask, buff)); /* 2nd result = mask */
+ lua.lua_pushinteger(L, ldebug.lua_gethookcount(L1)); /* 3rd result = count */
return 3;
};
@@ -369,9 +368,9 @@ const db_traceback = function(L) {
let thread = getthread(L);
let L1 = thread.thread;
let arg = thread.arg;
- let msg = lapi.lua_tostring(L, arg + 1);
- if (msg === null && !lapi.lua_isnoneornil(L, arg + 1)) /* non-string 'msg'? */
- lapi.lua_pushvalue(L, arg + 1); /* return it untouched */
+ let msg = lua.lua_tostring(L, arg + 1);
+ if (msg === null && !lua.lua_isnoneornil(L, arg + 1)) /* non-string 'msg'? */
+ lua.lua_pushvalue(L, arg + 1); /* return it untouched */
else {
let level = lauxlib.luaL_optinteger(L, arg + 2, L === L1 ? 1 : 0);
lauxlib.luaL_traceback(L, L1, msg, level);
@@ -423,10 +422,10 @@ if (typeof require === "function") {
let buffer = lua.to_luastring(input);
if (lauxlib.luaL_loadbuffer(L, buffer, buffer.length, lua.to_luastring("=(debug command)", true))
- || lapi.lua_pcall(L, 0, 0, 0)) {
- lauxlib.lua_writestringerror(`${lapi.lua_tojsstring(L, -1)}\n`);
+ || lua.lua_pcall(L, 0, 0, 0)) {
+ lauxlib.lua_writestringerror(`${lua.lua_tojsstring(L, -1)}\n`);
}
- lapi.lua_settop(L, 0); /* remove eventual returns */
+ lua.lua_settop(L, 0); /* remove eventual returns */
}
};