From 15d9fec0e00cc4b2a632f43711f629c8f9683da3 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Wed, 24 Sep 2014 13:49:39 +0100 Subject: [PATCH] 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 -- 2.7.4