forked from enlightenment/efl
elua: properly support _class_get funcs in lualian
This commit is contained in:
parent
dee98ea248
commit
17c9aeb80c
|
@ -362,11 +362,12 @@ local gen_ns = function(klass, s)
|
||||||
end
|
end
|
||||||
|
|
||||||
local Mixin = Node:clone {
|
local Mixin = Node:clone {
|
||||||
__ctor = function(self, klass, ch, evs)
|
__ctor = function(self, klass, iface, ch, evs)
|
||||||
self.klass = klass
|
self.klass = klass
|
||||||
self.prefix = klass:eo_prefix_get()
|
self.prefix = klass:eo_prefix_get()
|
||||||
self.children = ch
|
self.children = ch
|
||||||
self.events = evs
|
self.events = evs
|
||||||
|
self.is_iface = iface
|
||||||
end,
|
end,
|
||||||
|
|
||||||
generate = function(self, s)
|
generate = function(self, s)
|
||||||
|
@ -385,7 +386,9 @@ local Mixin = Node:clone {
|
||||||
end,
|
end,
|
||||||
|
|
||||||
gen_ffi = function(self, s)
|
gen_ffi = function(self, s)
|
||||||
s:write(" const Eo_Class *", self.prefix, "_class_get(void);\n")
|
local prefix = self.is_iface and "interface" or "mixin"
|
||||||
|
s:write(" const Eo_Class *", self.prefix, "_", prefix,
|
||||||
|
"_get(void);\n")
|
||||||
for i, v in ipairs(self.children) do
|
for i, v in ipairs(self.children) do
|
||||||
v.parent_node = self
|
v.parent_node = self
|
||||||
v:gen_ffi(s)
|
v:gen_ffi(s)
|
||||||
|
@ -554,8 +557,8 @@ local gen_contents = function(klass)
|
||||||
return cnt, evs
|
return cnt, evs
|
||||||
end
|
end
|
||||||
|
|
||||||
local gen_mixin = function(kliass)
|
local gen_mixin = function(klass, iface)
|
||||||
return Mixin(klass, gen_contents(klass))
|
return Mixin(klass, iface, gen_contents(klass))
|
||||||
end
|
end
|
||||||
|
|
||||||
local gen_class = function(klass)
|
local gen_class = function(klass)
|
||||||
|
@ -606,7 +609,7 @@ M.generate = function(fname, libname, fstream)
|
||||||
local ct = eolian.class_type
|
local ct = eolian.class_type
|
||||||
local cl
|
local cl
|
||||||
if tp == ct.MIXIN or tp == ct.INTERFACE then
|
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
|
elseif tp == ct.REGULAR or tp == ct.ABSTRACT then
|
||||||
cl = gen_class(klass)
|
cl = gen_class(klass)
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue