elua: wrap iteration functions in closures for extra encapsulation
authorDaniel Kolesa <quaker66@gmail.com>
Mon, 14 Apr 2014 09:00:48 +0000 (10:00 +0100)
committerDaniel Kolesa <d.kolesa@samsung.com>
Tue, 10 Jun 2014 14:48:47 +0000 (15:48 +0100)
src/bindings/luajit/eina/file.lua
src/bindings/luajit/eina/tiler.lua
src/bindings/luajit/eina/xattr.lua

index 3130ae6..b1747a3 100644 (file)
@@ -154,7 +154,7 @@ end
 
 local Iterator = iterator.Iterator
 
-M.Ls_Iterator = Iterator:clone {
+local Ls_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, dir)
         return Iterator.__ctor(self, selfmt, eina.eina_file_ls(dir))
     end,
@@ -168,7 +168,7 @@ M.Ls_Iterator = Iterator:clone {
     end
 }
 
-M.ls = M.Ls_Iterator
+M.ls = function(dir) return Ls_Iterator(dir) end
 
 local file_type_map = {
     [C.EINA_FILE_UNKNOWN] = "unknown",
@@ -214,23 +214,23 @@ local direct_info_iterator_next = function(self)
     return Direct_Info(path, ns, nl, tp), self:container_get()
 end
 
-M.Stat_Ls_Iterator = Iterator:clone {
+local Stat_Ls_Iterator = Iterator:clone {
     __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.stat_ls = function(dir) return Stat_Ls_Iterator(dir) end
 
-M.Direct_Ls_Iterator = Iterator:clone {
+local Direct_Ls_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, dir)
         return Iterator.__ctor(self, selfmt, eina.eina_file_direct_ls(dir))
     end,
     next = direct_info_iterator_next
 }
 
-M.direct_ls = M.Direct_Ls_Iterator
+M.direct_ls = function(dir) return Direct_Ls_Iterator(dir) end
 
 M.path_sanitize = function(path)
     local v = eina.eina_file_path_sanitize(path)
@@ -258,7 +258,7 @@ M.copy = function(source, destination, flags, cb)
     return v ~= 0
 end
 
-M.Xattr_Iterator = Iterator:clone {
+local Xattr_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, file)
         return Iterator.__ctor(self, selfmt, eina.eina_file_xattr_get(file))
     end,
@@ -269,7 +269,7 @@ M.Xattr_Iterator = Iterator:clone {
     end
 }
 
-M.Xattr_Value_Iterator = Iterator:clone {
+local Xattr_Value_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, file)
         return Iterator.__ctor(self, selfmt,
             eina.eina_file_xattr_value_get(file))
@@ -291,7 +291,7 @@ M.populate     = {
     REMOVE     = 5
 }
 
-M.Line_Iterator = Iterator:clone {
+local Line_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, file)
         return Iterator.__ctor(self, selfmt, eina.eina_file_map_lines(file))
     end,
@@ -346,8 +346,8 @@ M.File = ffi.metatype("Eina_File", {
             return ffi.string(eina.eina_file_filename_get(self))
         end,
 
-        xattr_get = M.Xattr_Iterator,
-        xattr_value_get = M.Xattr_Value_Iterator,
+        xattr_get = function(self) return Xattr_Iterator(self) end,
+        xattr_value_get = function(self) Xattr_Value_Iterator(self) end,
 
         map_all = function(self, rule, raw)
             local v = ffi.cast("char*", eina.eina_file_map_all(self, rule or 0))
@@ -385,7 +385,7 @@ M.File = ffi.metatype("Eina_File", {
             return eina.eina_file_map_faulted(self, map) ~= 0
         end,
 
-        lines = M.Line_Iterator
+        lines = function(self) return Line_Iterator(self) end
     }
 })
 
index 99e4545..fb022bc 100644 (file)
@@ -64,7 +64,7 @@ local dgetmt = debug.getmetatable
 
 local Iterator = iterator.Iterator
 
-M.Tiler_Iterator = Iterator:clone {
+local Tiler_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, tiler)
         return Iterator.__ctor(self, selfmt,
             eina.eina_tiler_iterator_new(tiler))
@@ -77,7 +77,7 @@ M.Tiler_Iterator = Iterator:clone {
     end
 }
 
-M.Tile_Grid_Slicer_Iterator = Iterator:clone {
+local Tile_Grid_Slicer_Iterator = Iterator:clone {
     __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))
@@ -128,11 +128,9 @@ M.Tiler = ffi.metatype("Eina_Tiler", {
 
         clear = function(self) eina.eina_tiler_clear(self) end,
 
-        each = function(self)
+        iterator = function(self)
             return M.Tiler_Iterator(self)
-        end,
-
-        Iterator = M.Tiler_Iterator
+        endd
     }
 })
 
@@ -157,7 +155,9 @@ M.Tile_Grid_Slicer = ffi.metatype("Eina_Tile_Grid_Slicer", {
             end
         end,
 
-        Iterator = M.Tile_Grid_Slicer_Iterator
+        Iterator = function(x, y, w, h, tw, th)
+            return Tile_Grid_Slicer_Iterator(x, y, w, h, tw, th)
+        end
     }
 })
 
index de62301..3a75bf7 100644 (file)
@@ -63,7 +63,7 @@ cutil.init_module(init, shutdown)
 
 local Iterator = iterator.Iterator
 
-M.Iterator = Iterator:clone {
+local Name_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, file)
         return Iterator.__ctor(self, selfmt, eina.eina_xattr_ls(file))
     end,
@@ -74,9 +74,9 @@ M.Iterator = Iterator:clone {
     end
 }
 
-M.ls = M.Iterator
+M.ls = function(file) return Name_Iterator(file) end
 
-M.Value_Iterator = Iterator:clone {
+local Value_Iterator = Iterator:clone {
     __ctor = function(self, selfmt, file)
         return Iterator.__ctor(self, selfmt, eina.eina_xattr_value_ls(file))
     end,
@@ -88,7 +88,7 @@ M.Value_Iterator = Iterator:clone {
     end
 }
 
-M.value_ls = M.Value_Iterator
+M.value_ls = function(file) return Value_Iterator(file) end
 
 M.copy = function(src, dst)
     return eina.eina_xatr_copy(src, dst) ~= 0