123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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)
- local res = {}
- local 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
|