2
0

_hx_anon.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. local function _hx_new(prototype)
  27. return setmetatable({__fields__ = {}}, {__newindex=_hx_obj_newindex, __index=prototype, __tostring=_hx_tostring})
  28. end
  29. function _hx_field_arr(obj)
  30. res = {}
  31. idx = 0
  32. if obj.__fields__ ~= nil then
  33. obj = obj.__fields__
  34. end
  35. for k,v in pairs(obj) do
  36. if _hx_hidden[k] == nil then
  37. res[idx] = k
  38. idx = idx + 1
  39. end
  40. end
  41. return _hx_tab_array(res, idx)
  42. end