q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7ea7542e9ede038bc17835747e3ecd4334199dba

commit 7ea7542e9ede038bc17835747e3ecd4334199dba
Author: Daniel Kolesa <[email protected]>
Date:   Mon Jun 23 14:16:12 2014 +0100

    elua: eo_prefix fix + add method name deduplication to lua generator
---
 src/bin/elua/modules/lualian.lua | 18 ++++++++++++++++--
 src/bindings/luajit/eolian.lua   |  2 +-
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/bin/elua/modules/lualian.lua b/src/bin/elua/modules/lualian.lua
index 31d0d72..73b1067 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 9640a2f..661a134 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,

-- 


Reply via email to