q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=15d9fec0e00cc4b2a632f43711f629c8f9683da3

commit 15d9fec0e00cc4b2a632f43711f629c8f9683da3
Author: Daniel Kolesa <[email protected]>
Date:   Wed Sep 24 13:49:39 2014 +0100

    elua: class unregister + keep track of Eo_Class
---
 src/bindings/luajit/eo.lua | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/bindings/luajit/eo.lua b/src/bindings/luajit/eo.lua
index a74bee4..741c4bc 100644
--- a/src/bindings/luajit/eo.lua
+++ b/src/bindings/luajit/eo.lua
@@ -104,6 +104,8 @@ ffi.cdef [[
     void  eo_key_data_del(const char *key);
 
     Eina_Iterator *eo_children_iterator_new(void);
+
+    const Eo_Class *eo_base_class_get(void);
 ]]
 
 local cutil = require("cutil")
@@ -116,9 +118,11 @@ local eo
 local init = function()
     eo = util.lib_load("eo")
     eo.eo_init()
+    M.class_register("Eo.Base", M.Base, eo.eo_base_class_get())
 end
 
 local shutdown = function()
+    M.class_unregister("Eo.Base")
     eo.eo_shutdown()
     util.lib_unload("eo")
 end
@@ -132,16 +136,27 @@ local getfuncname = function(info)
 end
 
 local classes = {}
+local eo_classes = {}
 
 M.class_get = function(name)
     return classes[name]
 end
 
-M.class_register = function(name, val)
+M.eo_class_get = function(name)
+    return eo_classes[name]
+end
+
+M.class_register = function(name, val, addr)
     classes[name] = val
+    eo_classes[name] = addr
     return val
 end
 
+M.class_unregister = function(name)
+    classes[name] = nil
+    eo_classes[name] = nil
+end
+
 M.__ctor_common = function(self, klass, parent, ctor, loff, ...)
     local info    = getinfo(2 + (loff or 0), "nlSf")
     local source  = info.source
@@ -192,6 +207,5 @@ ffi.metatype("Eo", {
 
 M.Base = util.Object:clone {
 }
-M.class_register("Eo.Base", M.Base)
 
 return M

-- 


Reply via email to