summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@samsung.com>2014-06-23 14:16:12 +0100
committerDaniel Kolesa <d.kolesa@samsung.com>2014-06-23 14:16:12 +0100
commit7ea7542e9ede038bc17835747e3ecd4334199dba (patch)
tree8a6f8110e36dbd5aae7bb87bb1c9959cce9c0e94
parent471b4435b4757d94b7ff6ebf27ff6bfea2fa4325 (diff)
downloadefl-7ea7542e9ede038bc17835747e3ecd4334199dba.tar.gz
elua: eo_prefix fix + add method name deduplication to lua generator
-rw-r--r--src/bin/elua/modules/lualian.lua18
-rw-r--r--src/bindings/luajit/eolian.lua2
2 files changed, 17 insertions, 3 deletions
diff --git a/src/bin/elua/modules/lualian.lua b/src/bin/elua/modules/lualian.lua
index 31d0d7223c..73b1067db1 100644
--- a/src/bin/elua/modules/lualian.lua
+++ b/src/bin/elua/modules/lualian.lua
@@ -122,6 +122,20 @@ local typeconv = function(tps, expr, isin)
return build_calln(tps, expr, false)
end
+local dedup_name = function(classn, funcn)
+ local suffix = classn:match(".+_(.+)" ) or classn
+ local prefix = funcn:match("([^_]+)_.+") or funcn
+ if prefix == suffix then
+ if classn == suffix then
+ return funcn
+ else
+ return classn:match("(.+_).+") .. funcn
+ end
+ else
+ return classn .. "_" .. funcn
+ end
+end
+
local Node = util.Object:clone {
generate = function(self, s)
end,
@@ -170,7 +184,7 @@ local Method = Node:clone {
local allocs = {}
proto.allocs = allocs
- proto.full_name = self.parent_node.prefix .. "_" .. proto.name
+ proto.full_name = dedup_name(self.parent_node.prefix, proto.name)
local dirs = eolian.parameter_dir
@@ -266,7 +280,7 @@ local Property = Method:clone {
local allocs = {}
proto.allocs = allocs
- proto.full_name = self.parent_node.prefix .. "_" .. proto.name
+ proto.full_name = dedup_name(self.parent_node.prefix, proto.name)
.. proto.suffix
local dirs = eolian.parameter_dir
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index 9640a2fe90..661a13400c 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -400,7 +400,7 @@ M.Class = ffi.metatype("Eolian_Class", {
if v == nil then
local buf = self:namespaces_list_get()
buf[#buf + 1] = self:name_get()
- return table.concat(buf, "_")
+ return table.concat(buf, "_"):lower()
end
return ffi.string(v)
end,