aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lapi.js8
-rw-r--r--src/lobject.js14
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;