elua: eolian binding fix plus support namespaces in the lualian generator
authorDaniel Kolesa <d.kolesa@samsung.com>
Thu, 5 Jun 2014 08:58:58 +0000 (09:58 +0100)
committerDaniel Kolesa <d.kolesa@samsung.com>
Tue, 10 Jun 2014 14:48:53 +0000 (15:48 +0100)
src/bin/elua/modules/lualian.lua
src/bindings/luajit/eolian.lua

index 49d3325..fc8a451 100644 (file)
@@ -427,8 +427,18 @@ local Mixin = Node:clone {
         self:gen_ffi(s)
         s:write("]]\n\n")
 
+        local nspaces = self.klass:namespaces_list_get()
+        local ename
+        if #nspaces > 0 then
+            table.remove(nspaces, 1)
+            nspaces[#nspaces + 1] = self.klass:name_get()
+            ename = table.concat(nspaces, "_")
+        else
+            ename = self.klass:name_get()
+        end
+
         s:write(("M.%s = eo.class_register(\"%s\", {\n"):format(
-            self.klass:name_get(), self.klass:name_get()))
+            ename, self.klass:full_name_get()))
 
         self:gen_children(s)
 
@@ -476,10 +486,20 @@ local Class = Node:clone {
         self:gen_ffi(s)
         s:write("]]\n\n")
 
+        local nspaces = self.klass:namespaces_list_get()
+        local ename
+        if #nspaces > 0 then
+            table.remove(nspaces, 1)
+            nspaces[#nspaces + 1] = self.klass:name_get()
+            ename = table.concat(nspaces, "_")
+        else
+            ename = self.klass:name_get()
+        end
+
         s:write(([[
 local Parent = eo.class_get("%s")
 M.%s = eo.class_register("%s", Parent:clone {
-]]):format(self.parent, self.klass:name_get(), self.klass:name_get()))
+]]):format(self.parent, ename, self.klass:full_name_get()))
 
         self:gen_children(s)
 
@@ -487,7 +507,7 @@ M.%s = eo.class_register("%s", Parent:clone {
 
         for i, v in ipairs(self.mixins) do
             s:write(("\nM.%s:mixin(eo.class_get(\"%s\"))\n")
-                :format(self.klass:name_get(), v))
+                :format(ename, v))
         end
     end,
 
@@ -538,7 +558,7 @@ end
 
 cutil.init_module(init, shutdown)
 
-]]):format(self.fname, self.klass:name_get(), modn, self.libname,
+]]):format(self.fname, self.klass:full_name_get(), modn, self.libname,
         self.libname))
 
         self:gen_children(s)
index 835bc19..12dad43 100644 (file)
@@ -57,7 +57,7 @@ ffi.cdef [[
     const char *eolian_class_file_get(const Eolian_Class *klass);
     const char *eolian_class_full_name_get(const Eolian_Class *klass);
     const char *eolian_class_name_get(const Eolian_Class *klass);
-    const Eina_List *eolian_class_namespaces_list_get(const Eolian_Class klass);
+    const Eina_List *eolian_class_namespaces_list_get(const Eolian_Class *klass);
     Eolian_Class_Type eolian_class_type_get(const Eolian_Class *klass);
     const Eina_List *eolian_class_names_list_get(void);
     const char *eolian_class_description_get(const Eolian_Class *klass);