"use strict"; const { is_luastring, luastring_eq, luastring_from, to_luastring } = require('./defs.js'); const { lua_assert } = require("./llimits.js"); class TString { constructor(L, str) { this.hash = null; this.realstring = str; } getstr() { return this.realstring; } tsslen() { return this.realstring.length; } } const luaS_eqlngstr = function(a, b) { lua_assert(a instanceof TString); lua_assert(b instanceof TString); return a == b || luastring_eq(a.realstring, b.realstring); }; /* converts strings (arrays) to a consistent map key make sure this doesn't conflict with any of the anti-collision strategies in ltable */ const luaS_hash = function(str) { lua_assert(is_luastring(str)); let len = str.length; let s = "|"; for (let i=0; i