local function _hx_obj_newindex(t,k,v) t.__fields__[k] = true rawset(t,k,v) end local _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) end local function _hx_e() return setmetatable({__fields__ = {}}, _hx_obj_mt) end local function _hx_o(obj) return setmetatable(obj, _hx_obj_mt) end local function _hx_new(prototype) return setmetatable({__fields__ = {}}, {__newindex=_hx_obj_newindex, __index=prototype, __tostring=_hx_tostring}) end function _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