local Iterator = iterator.Iterator
M.Ls_Iterator = Iterator:clone {
- __ctor = function(self, dir)
- return Iterator.__ctor(self, eina.eina_file_ls(dir))
+ __ctor = function(self, selfmt, dir)
+ return Iterator.__ctor(self, selfmt, eina.eina_file_ls(dir))
end,
next = function(self)
end
M.Stat_Ls_Iterator = Iterator:clone {
- __ctor = function(self, dir)
- return Iterator.__ctor(self, eina.eina_file_stat_ls(dir))
+ __ctor = function(self, selfmt, dir)
+ return Iterator.__ctor(self, selfmt, eina.eina_file_stat_ls(dir))
end,
next = direct_info_iterator_next
}
M.stat_ls = M.Stat_Ls_Iterator
M.Direct_Ls_Iterator = Iterator:clone {
- __ctor = function(self, dir)
- return Iterator.__ctor(self, eina.eina_file_direct_ls(dir))
+ __ctor = function(self, selfmt, dir)
+ return Iterator.__ctor(self, selfmt, eina.eina_file_direct_ls(dir))
end,
next = direct_info_iterator_next
}
end
M.Xattr_Iterator = Iterator:clone {
- __ctor = function(self, file)
- return Iterator.__ctor(self, eina.eina_file_xattr_get(file))
+ __ctor = function(self, selfmt, file)
+ return Iterator.__ctor(self, selfmt, eina.eina_file_xattr_get(file))
end,
next = function(self)
local v = Iterator.next(self)
}
M.Xattr_Value_Iterator = Iterator:clone {
- __ctor = function(self, file)
- return Iterator.__ctor(self, eina.eina_file_xattr_value_get(file))
+ __ctor = function(self, selfmt, file)
+ return Iterator.__ctor(self, selfmt,
+ eina.eina_file_xattr_value_get(file))
end,
next = function(self)
local v = Iterator.next(self)
}
M.Line_Iterator = Iterator:clone {
- __ctor = function(self, file)
- return Iterator.__ctor(self, eina.eina_file_map_lines(file))
+ __ctor = function(self, selfmt, file)
+ return Iterator.__ctor(self, selfmt, eina.eina_file_map_lines(file))
end,
next = function(self)
local v = Iterator.next(self)
cutil.init_module(init, shutdown)
-M.Iterator = util.Object:clone {
- __ctor = function(self, iter)
+local dgetmt = debug.getmetatable
+
+M.Iterator = util.Readonly_Object:clone {
+ __ctor = function(self, selfmt, iter)
-- prevent null stuff
if iter == nil then iter = nil end
if iter then ffi.gc(iter, iter.free) end
- self.__eq = function(self, other)
- return self.__iterator == other.__iterator
+ selfmt.__eq = function(self, other)
+ return selfmt.__iterator == dgetmt(other).__iterator
end
- self.__call = function(self)
+ selfmt.__call = function(self)
return self:next()
end
- self.__iterator = iter
+ selfmt.__iterator = iter
end,
free = function(self)
+ self = dgetmt(self)
if not self.__iterator then return end
self.__iterator:free()
self.__iterator = nil
end,
- disown = function(self)
- local iter = self.__iterator
- self.__iterator = nil
- return ier
- end,
-
- rebase = function(self, iter)
- self:free()
- self.__iterator = iter:disown()
- end,
-
next = function(self)
+ self = dgetmt(self)
if not self.__iterator then return nil end
return self.__iterator:next()
end,
lock = function(self)
+ self = dgetmt(self)
if not self.__iterator then return false end
return self.__iterator:lock()
end,
unlock = function(self)
+ self = dgetmt(self)
if not self.__iterator then return false end
return self.__iterator:unlock()
end,
container_get = function(self)
+ self = dgetmt(self)
if not self.__iterator then return nil end
return self.__iterator:container_get()
end
local Iterator = iterator.Iterator
+local dgetmt = debug.getmetatable
+
M.Iterator = Iterator:clone {
- __ctor = function(self, list)
- self.__list = list
- return Iterator.__ctor(self, eina.eina_list_iterator_new(list.__list))
+ __ctor = function(self, selfmt, list)
+ if list == nil then return Iterator.__ctor(self, selfmt, nil) end
+ selfmt.__list = list
+ return Iterator.__ctor(self, selfmt,
+ eina.eina_list_iterator_new(dgetmt(list).__list))
end,
next = function(self)
}
M.Reverse_Iterator = Iterator:clone {
- __ctor = function(self, list)
- self.__list = list
- return Iterator.__ctor(self, eina.eina_list_iterator_reversed_new(
- list.__list))
+ __ctor = function(self, selfmt, list)
+ if list == nil then return Iterator.__ctor(self, selfmt, nil) end
+ selfmt.__list = list
+ return Iterator.__ctor(self, selfmt,
+ eina.eina_list_iterator_reversed_new(dgetmt(list).__list))
end,
next = function(self)
local Accessor = accessor.Accessor
M.Accessor = Accessor:clone {
- __ctor = function(self, list)
- self.__list = list
- return Accessor.__ctor(self, eina.eina_list_accessor_new(list.__list))
+ __ctor = function(self, selfmt, list)
+ if list == nil then return Accessor.__ctor(self, selfmt, nil) end
+ selfmt.__list = list
+ return Accessor.__ctor(self, selfmt,
+ eina.eina_list_accessor_new(dgetmt(list).__list))
end,
data_get = function(self, pos)
}
})
-local dgetmt = debug.getmetatable
-
local List_Base = util.Readonly_Object:clone {
__ctor = function(self, selfmt, list, freefunc)
if list and freefunc then
cutil.init_module(init, shutdown)
+local dgetmt = debug.getmetatable
+
local Iterator = iterator.Iterator
M.Tiler_Iterator = Iterator:clone {
- __ctor = function(self, tiler)
- return Iterator.__ctor(self, eina.eina_tiler_iterator_new(tiler))
+ __ctor = function(self, selfmt, tiler)
+ return Iterator.__ctor(self, selfmt,
+ eina.eina_tiler_iterator_new(tiler))
end,
next = function(self)
}
M.Tile_Grid_Slicer_Iterator = Iterator:clone {
- __ctor = function(self, x, y, w, h, tile_w, tile_h)
- return Iterator.__ctor(self, eina.eina_tile_grid_slicer_iterator_new(
- x, y, w, h, tile_w, tile_h))
+ __ctor = function(self, selfmt, x, y, w, h, tile_w, tile_h)
+ return Iterator.__ctor(self, selfmt,
+ eina.eina_tile_grid_slicer_iterator_new(x, y, w, h, tile_w, tile_h))
end,
next = function(self)
local Iterator = iterator.Iterator
M.Iterator = Iterator:clone {
- __ctor = function(self, file)
- return Iterator.__ctor(self, eina.eina_xattr_ls(file))
+ __ctor = function(self, selfmt, file)
+ return Iterator.__ctor(self, selfmt, eina.eina_xattr_ls(file))
end,
next = function(self)
local v = Iterator.next(self)
M.ls = M.Iterator
M.Value_Iterator = Iterator:clone {
- __ctor = function(self, file)
- return Iterator.__ctor(self, eina.eina_xattr_value_ls(file))
+ __ctor = function(self, selfmt, file)
+ return Iterator.__ctor(self, selfmt, eina.eina_xattr_value_ls(file))
end,
next = function(self)
local v = Iterator.next(self)