q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2255508b0b32f9f7f52f2f3e08f92e655023dc78
commit 2255508b0b32f9f7f52f2f3e08f92e655023dc78 Author: Daniel Kolesa <d.kol...@samsung.com> Date: Wed Feb 25 13:33:28 2015 +0000 elua: extra generator info for inheritance handling (and easy lookups) --- src/scripts/elua/modules/lualian.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/scripts/elua/modules/lualian.lua b/src/scripts/elua/modules/lualian.lua index 03a1d32..5514852 100644 --- a/src/scripts/elua/modules/lualian.lua +++ b/src/scripts/elua/modules/lualian.lua @@ -380,10 +380,11 @@ local gen_ns = function(klass, s) end local Mixin = Node:clone { - __ctor = function(self, klass, ch, evs) + __ctor = function(self, iface, klass, ch, evs) self.klass = klass self.children = ch self.events = evs + self.iface = iface end, generate = function(self, s) @@ -399,6 +400,13 @@ local Mixin = Node:clone { s:write("__body = {\n") self:gen_children(s) s:write("}\n") + + local knu = self.klass:full_name_get():gsub("%.", "_") + if not self.iface then + s:write(("__body[\"__mixin_%s\"] = true\n"):format(knu)) + else + s:write(("__body[\"__iface_%s\"] = true\n"):format(knu)) + end end, gen_ffi = function(self, s) @@ -633,8 +641,8 @@ local gen_contents = function(klass) return cnt, evs end -local gen_mixin = function(klass) - return Mixin(klass, gen_contents(klass)) +local gen_mixin = function(klass, iface) + return Mixin(iface, klass, gen_contents(klass)) end local gen_class = function(klass) @@ -688,7 +696,7 @@ M.generate = function(fname, fstream) local ct = eolian.class_type local cl if tp == ct.MIXIN or tp == ct.INTERFACE then - cl = gen_mixin(klass) + cl = gen_mixin(klass, tp == ct.INTERFACE) elseif tp == ct.REGULAR or tp == ct.ABSTRACT then cl = gen_class(klass) else --