| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | local function _hx_obj_newindex(t,k,v)    t.__fields__[k] = true    rawset(t,k,v)endlocal _hx_obj_mt = {__newindex=_hx_obj_newindex, __tostring=_hx_tostring}local function _hx_a(...)  local __fields__ = {};  local ret = {__fields__ = __fields__};  local max = select('#',...);  local tab = {...};  local cur = 1;  while cur < max do    local v = tab[cur];    __fields__[v] = true;    ret[v] = tab[cur+1];    cur = cur + 2  end  return setmetatable(ret, _hx_obj_mt)endlocal function _hx_e()  return setmetatable({__fields__ = {}}, _hx_obj_mt)endlocal function _hx_o(obj)  return setmetatable(obj, _hx_obj_mt)endlocal function _hx_new(prototype)  return setmetatable({__fields__ = {}}, {__newindex=_hx_obj_newindex, __index=prototype, __tostring=_hx_tostring})endfunction _hx_field_arr(obj)    res = {}    idx = 0    if obj.__fields__ ~= nil then        obj = obj.__fields__    end    for k,v in pairs(obj) do        if _hx_hidden[k] == nil then            res[idx] = k            idx = idx + 1        end    end    return _hx_tab_array(res, idx)end
 |