forked from enlightenment/efl
elua: class unregister + keep track of Eo_Class
This commit is contained in:
parent
d74943f247
commit
15d9fec0e0
|
@ -104,6 +104,8 @@ ffi.cdef [[
|
||||||
void eo_key_data_del(const char *key);
|
void eo_key_data_del(const char *key);
|
||||||
|
|
||||||
Eina_Iterator *eo_children_iterator_new(void);
|
Eina_Iterator *eo_children_iterator_new(void);
|
||||||
|
|
||||||
|
const Eo_Class *eo_base_class_get(void);
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local cutil = require("cutil")
|
local cutil = require("cutil")
|
||||||
|
@ -116,9 +118,11 @@ local eo
|
||||||
local init = function()
|
local init = function()
|
||||||
eo = util.lib_load("eo")
|
eo = util.lib_load("eo")
|
||||||
eo.eo_init()
|
eo.eo_init()
|
||||||
|
M.class_register("Eo.Base", M.Base, eo.eo_base_class_get())
|
||||||
end
|
end
|
||||||
|
|
||||||
local shutdown = function()
|
local shutdown = function()
|
||||||
|
M.class_unregister("Eo.Base")
|
||||||
eo.eo_shutdown()
|
eo.eo_shutdown()
|
||||||
util.lib_unload("eo")
|
util.lib_unload("eo")
|
||||||
end
|
end
|
||||||
|
@ -132,16 +136,27 @@ local getfuncname = function(info)
|
||||||
end
|
end
|
||||||
|
|
||||||
local classes = {}
|
local classes = {}
|
||||||
|
local eo_classes = {}
|
||||||
|
|
||||||
M.class_get = function(name)
|
M.class_get = function(name)
|
||||||
return classes[name]
|
return classes[name]
|
||||||
end
|
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
|
classes[name] = val
|
||||||
|
eo_classes[name] = addr
|
||||||
return val
|
return val
|
||||||
end
|
end
|
||||||
|
|
||||||
|
M.class_unregister = function(name)
|
||||||
|
classes[name] = nil
|
||||||
|
eo_classes[name] = nil
|
||||||
|
end
|
||||||
|
|
||||||
M.__ctor_common = function(self, klass, parent, ctor, loff, ...)
|
M.__ctor_common = function(self, klass, parent, ctor, loff, ...)
|
||||||
local info = getinfo(2 + (loff or 0), "nlSf")
|
local info = getinfo(2 + (loff or 0), "nlSf")
|
||||||
local source = info.source
|
local source = info.source
|
||||||
|
@ -192,6 +207,5 @@ ffi.metatype("Eo", {
|
||||||
|
|
||||||
M.Base = util.Object:clone {
|
M.Base = util.Object:clone {
|
||||||
}
|
}
|
||||||
M.class_register("Eo.Base", M.Base)
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
Loading…
Reference in New Issue