diff options
-rw-r--r-- | src/lapi.js | 8 | ||||
-rw-r--r-- | src/lobject.js | 14 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/lapi.js b/src/lapi.js index 8e0c491..ae9fa89 100644 --- a/src/lapi.js +++ b/src/lapi.js @@ -511,13 +511,7 @@ const lua_createtable = function(L, narray, nrec) { }; const luaS_newudata = function(L, size) { - return { - id: L.l_G.id_counter++, - metatable: null, - uservalue: new lobject.TValue(CT.LUA_TNIL, null), - len: size, - data: Object.create(null) // ignores size argument - }; + return new lobject.Udata(L, size); }; const lua_newuserdata = function(L, size) { diff --git a/src/lobject.js b/src/lobject.js index 8c70985..119e20e 100644 --- a/src/lobject.js +++ b/src/lobject.js @@ -214,6 +214,19 @@ class CClosure { } +class Udata { + + constructor(L, size) { + this.id = L.l_G.id_counter++; + + this.metatable = null; + this.uservalue = new TValue(CT.LUA_TNIL, null); + this.len = size; + this.data = Object.create(null); // ignores size argument + } + +} + /* ** Description of a local variable for function prototypes ** (used for debug information) @@ -630,6 +643,7 @@ module.exports.LUA_TDEADKEY = LUA_TDEADKEY; module.exports.LUA_TPROTO = LUA_TPROTO; module.exports.LocVar = LocVar; module.exports.TValue = TValue; +module.exports.Udata = Udata; module.exports.UTF8BUFFSZ = UTF8BUFFSZ; module.exports.luaO_arith = luaO_arith; module.exports.luaO_chunkid = luaO_chunkid; |