Comparison

util/multitable.lua @ 650:674531bcb5c4

Added util.multitable.set
author Waqas Hussain <waqas20@gmail.com>
date Sat, 27 Dec 2008 08:27:26 +0500
parent 615:4ae3e81513f3
child 758:b1885732e979
comparison
equal deleted inserted replaced
649:5f8382768530 650:674531bcb5c4
45 t = tab; 45 t = tab;
46 end 46 end
47 t_insert(t, (select(count, ...))); 47 t_insert(t, (select(count, ...)));
48 end 48 end
49 49
50 local function set(self, ...)
51 local t = self.data;
52 local count = select('#', ...);
53 for n = 1,count-2 do
54 local key = select(n, ...);
55 local tab = t[key];
56 if not tab then tab = {}; t[key] = tab; end
57 t = tab;
58 end
59 t[(select(count-1, ...))] = (select(count, ...));
60 end
61
50 local function r(t, n, _end, ...) 62 local function r(t, n, _end, ...)
51 if t == nil then return; end 63 if t == nil then return; end
52 if n > _end then 64 local k = select(n, ...);
53 for key in pairs(t) do 65 if n == _end then
54 t[key] = nil; 66 t[k] = nil;
55 end 67 return;
56 end 68 end
57 local k = select(n, ...);
58 if k then 69 if k then
59 v = t[k]; 70 v = t[k];
60 if v then 71 if v then
61 r(v, n+1, _end, ...); 72 r(v, n+1, _end, ...);
62 if not next(v) then 73 if not next(v) then
85 function new() 96 function new()
86 return { 97 return {
87 data = {}; 98 data = {};
88 get = get; 99 get = get;
89 add = add; 100 add = add;
101 set = set;
90 remove = remove; 102 remove = remove;
91 }; 103 };
92 end 104 end
93 105
94 return _M; 106 return _M;