elua: class unregister + keep track of Eo_Class

This commit is contained in:
Daniel Kolesa 2014-09-24 13:49:39 +01:00
parent d74943f247
commit 15d9fec0e0
1 changed files with 16 additions and 2 deletions

View File

@ -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