_hx_anon.lua 952 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. local function _hx_obj_newindex(t,k,v)
  2. t.__fields__[k] = true
  3. rawset(t,k,v)
  4. end
  5. local _hx_obj_mt = {__newindex=_hx_obj_newindex, __tostring=_hx_tostring}
  6. local function _hx_a(...)
  7. local __fields__ = {};
  8. local ret = {__fields__ = __fields__};
  9. local max = select('#',...);
  10. local tab = {...};
  11. local cur = 1;
  12. while cur < max do
  13. local v = tab[cur];
  14. __fields__[v] = true;
  15. ret[v] = tab[cur+1];
  16. cur = cur + 2
  17. end
  18. return setmetatable(ret, _hx_obj_mt)
  19. end
  20. local function _hx_e()
  21. return setmetatable({__fields__ = {}}, _hx_obj_mt)
  22. end
  23. local function _hx_o(obj)
  24. return setmetatable(obj, _hx_obj_mt)
  25. end
  26. function _hx_field_arr(obj)
  27. local res = {}
  28. local idx = 0
  29. if obj.__fields__ ~= nil then
  30. obj = obj.__fields__
  31. end
  32. for k,v in pairs(obj) do
  33. if _hx_hidden[k] == nil then
  34. res[idx] = k
  35. idx = idx + 1
  36. end
  37. end
  38. return _hx_tab_array(res, idx)
  39. end