2
0

_hx_anon.lua 743 B

12345678910111213141516171819202122232425262728
  1. local function _hx_anon_newindex(t,k,v) t.__fields__[k] = true; rawset(t,k,v); end
  2. local _hx_anon_mt = {__newindex=_hx_anon_newindex}
  3. local function _hx_a(...)
  4. local __fields__ = {};
  5. local ret = {__fields__ = __fields__};
  6. local max = select('#',...);
  7. local tab = {...};
  8. local cur = 1;
  9. while cur < max do
  10. local v = tab[cur];
  11. __fields__[v] = true;
  12. ret[v] = tab[cur+1];
  13. cur = cur + 2
  14. end
  15. return setmetatable(ret, _hx_anon_mt)
  16. end
  17. local function _hx_e()
  18. return setmetatable({__fields__ = {}}, _hx_anon_mt)
  19. end
  20. local function _hx_o(obj)
  21. return setmetatable(obj, _hx_anon_mt)
  22. end
  23. local function _hx_new(prototype)
  24. return setmetatable({__fields__ = {}}, {__newindex=_hx_anon_newindex, __index=prototype})
  25. end