diff options
author | Benoit Giannangeli <benoit.giannangeli@boursorama.fr> | 2017-02-16 12:54:22 +0100 |
---|---|---|
committer | Benoit Giannangeli <benoit.giannangeli@boursorama.fr> | 2017-02-16 12:55:35 +0100 |
commit | 8f913dd74957ef18e144f15b78c3e55893744218 (patch) | |
tree | a47ff729efa6474c99d5371ec06272bed47a8417 /src/lapi.js | |
parent | 573a9c3b39bf1570a575ce3f077a33e752439165 (diff) | |
download | fengari-8f913dd74957ef18e144f15b78c3e55893744218.tar.gz fengari-8f913dd74957ef18e144f15b78c3e55893744218.tar.bz2 fengari-8f913dd74957ef18e144f15b78c3e55893744218.zip |
lua_tonumber, lua_tointeger, lua_tostring, lua_toboolean
Diffstat (limited to 'src/lapi.js')
-rw-r--r-- | src/lapi.js | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/lapi.js b/src/lapi.js index dc60984..6aba915 100644 --- a/src/lapi.js +++ b/src/lapi.js @@ -9,11 +9,11 @@ const ltm = require('./ltm.js'); const lfunc = require('./lfunc.js'); const lua = require('./lua.js'); const lstate = require('./lstate.js'); +const lvm = require('./lvm.js'); const nil = ldo.nil; const MAXUPVAL = lfunc.MAXUPVAL; const CT = lua.constant_types; const TS = lua.thread_status; -const l_isfalse = lobject.l_isfalse; const TValue = lobject.TValue; const CClosure = lobject.CClosure; @@ -169,7 +169,28 @@ const lua_pushlightuserdata = function(L, p) { const lua_toboolean = function(L, idx) { let o = index2addr(L, idx); - return !l_isfalse(o); + return !o.l_isfalse(); +}; + +const lua_tolstring = function(L, idx, len) { + let o = index2addr(L, idx); + + if (!o.ttisstring() && !o.ttisnumber()) + return null; + + return len !== null ? `${o.value}`.substr(0, len) : `${o.value}`; +}; + +const lua_tostring = function(L, idx) { + return lua_tolstring(L, idx, null); +}; + +const lua_tointeger = function(L, idx) { + return lvm.tointeger(index2addr(L, idx)) +}; + +const lua_tonumber = function(L, idx) { + return lvm.tonumber(index2addr(L, idx)) }; const f_call = function(L, ud) { @@ -251,4 +272,9 @@ module.exports.lua_version = lua_version; module.exports.lua_atpanic = lua_atpanic; module.exports.lua_gettop = lua_gettop; module.exports.lua_typename = lua_typename; -module.exports.lua_type = lua_type;
\ No newline at end of file +module.exports.lua_type = lua_type; +module.exports.lua_tonumber = lua_tonumber; +module.exports.lua_tointeger = lua_tointeger; +module.exports.lua_toboolean = lua_toboolean; +module.exports.lua_tolstring = lua_tolstring; +module.exports.lua_tostring = lua_tostring;
\ No newline at end of file |