q66 pushed a commit to branch master.

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

commit d11cc5ddb578f763e73e3a04f7f3610d213d4a5c
Author: Daniel Kolesa <[email protected]>
Date:   Wed Aug 17 13:42:29 2016 +0100

    docs: move type serializer into doctree
---
 src/scripts/elua/apps/docgen/doctree.lua     | 56 +++++++++++++++++++++++++++
 src/scripts/elua/apps/docgen/serializers.lua | 58 +---------------------------
 src/scripts/elua/apps/gendoc.lua             |  6 +--
 3 files changed, 61 insertions(+), 59 deletions(-)

diff --git a/src/scripts/elua/apps/docgen/doctree.lua 
b/src/scripts/elua/apps/docgen/doctree.lua
index ef412fa..1531d98 100644
--- a/src/scripts/elua/apps/docgen/doctree.lua
+++ b/src/scripts/elua/apps/docgen/doctree.lua
@@ -573,6 +573,23 @@ M.EnumField = Node:clone {
     end
 }
 
+local wrap_type_attrs = function(tp, str)
+    if tp:is_const() then
+        str = "const(" .. str .. ")"
+    end
+    if tp:is_own() then
+        str = "own(" .. str .. ")"
+    end
+    local ffunc = tp:free_func_get()
+    if ffunc then
+        str = "free(" .. str .. ", " .. ffunc .. ")"
+    end
+    if tp:is_ref() then
+        str = "ref(" .. str .. ")"
+    end
+    return str
+end
+
 M.Type = Node:clone {
     UNKNOWN = eolian.type_type.UNKNOWN,
     VOID = eolian.type_type.VOID,
@@ -667,6 +684,45 @@ M.Type = Node:clone {
 
     free_func_get = function(self)
         return self.type:free_func_get()
+    end,
+
+    -- utils
+
+    serialize = function(self)
+        local tpt = self:type_get()
+        if tpt == self.UNKNOWN then
+            error("unknown type: " .. self:full_name_get())
+        elseif tpt == self.VOID then
+            return wrap_type_attrs(self, "void")
+        elseif tpt == self.UNDEFINED then
+            return wrap_type_attrs(self, "__undefined_type")
+        elseif tpt == self.REGULAR or tpt == self.CLASS then
+            return wrap_type_attrs(self, self:full_name_get())
+        elseif tpt == self.COMPLEX then
+            local stypes = {}
+            local stp = self:base_type_get()
+            while stp do
+                stypes[#stypes + 1] = stp:serialize()
+                stp = stp:next_type_get()
+            end
+            return wrap_type_attrs(self, self:full_name_get() .. "<"
+                .. table.concat(stypes, ", ") .. ">")
+        elseif tpt == self.POINTER then
+            local btp = self:base_type_get()
+            local suffix = " *"
+            if btp:type_get() == self.POINTER then
+                suffix = "*"
+            end
+            return wrap_type_attrs(self, btp:serialize() .. suffix)
+        elseif tpt == self.STATIC_ARRAY then
+            return wrap_type_attrs(self, "static_array<"
+                .. self:base_type_get():serialize() .. ", "
+                .. self:array_size_get() .. ">")
+        elseif tpt == self.TERMINATED_ARRAY then
+            return wrap_type_attrs(self, "terminated_array<"
+                .. self:base_type_get():serialize() .. ">")
+        end
+        error("unhandled type type: " .. tpt)
     end
 }
 
diff --git a/src/scripts/elua/apps/docgen/serializers.lua 
b/src/scripts/elua/apps/docgen/serializers.lua
index c82de93..bc2b78c 100644
--- a/src/scripts/elua/apps/docgen/serializers.lua
+++ b/src/scripts/elua/apps/docgen/serializers.lua
@@ -3,60 +3,6 @@ local dtree = require("docgen.doctree")
 
 local M = {}
 
-local wrap_type_attrs = function(tp, str)
-    if tp:is_const() then
-        str = "const(" .. str .. ")"
-    end
-    if tp:is_own() then
-        str = "own(" .. str .. ")"
-    end
-    local ffunc = tp:free_func_get()
-    if ffunc then
-        str = "free(" .. str .. ", " .. ffunc .. ")"
-    end
-    if tp:is_ref() then
-        str = "ref(" .. str .. ")"
-    end
-    return str
-end
-
-M.get_type_str = function(tp)
-    local tpt = tp:type_get()
-    if tpt == tp.UNKNOWN then
-        error("unknown type: " .. tp:full_name_get())
-    elseif tpt == tp.VOID then
-        return wrap_type_attrs(tp, "void")
-    elseif tpt == tp.UNDEFINED then
-        return wrap_type_attrs(tp, "__undefined_type")
-    elseif tpt == tp.REGULAR or tpt == tp.CLASS then
-        return wrap_type_attrs(tp, tp:full_name_get())
-    elseif tpt == tp.COMPLEX then
-        local stypes = {}
-        local stp = tp:base_type_get()
-        while stp do
-            stypes[#stypes + 1] = M.get_type_str(stp)
-            stp = stp:next_type_get()
-        end
-        return wrap_type_attrs(tp, tp:full_name_get() .. "<"
-            .. table.concat(stypes, ", ") .. ">")
-    elseif tpt == tp.POINTER then
-        local btp = tp:base_type_get()
-        local suffix = " *"
-        if btp:type_get() == tp.POINTER then
-            suffix = "*"
-        end
-        return wrap_type_attrs(tp, M.get_type_str(btp) .. suffix)
-    elseif tpt == tp.STATIC_ARRAY then
-        return wrap_type_attrs(tp, "static_array<"
-            .. M.get_type_str(tp:base_type_get()) .. ", "
-            .. tp:array_size_get() .. ">")
-    elseif tpt == tp.TERMINATED_ARRAY then
-        return wrap_type_attrs(tp, "terminated_array<"
-            .. M.get_type_str(tp:base_type_get()) .. ">")
-    end
-    error("unhandled type type: " .. tpt)
-end
-
 local add_typedecl_attrs = function(tp, buf)
     if tp:is_extern() then
         buf[#buf + 1] = "@extern "
@@ -92,7 +38,7 @@ M.get_typedecl_str = function(tp)
             buf[#buf + 1] = "    "
             buf[#buf + 1] = fld:name_get()
             buf[#buf + 1] = ": "
-            buf[#buf + 1] = M.get_type_str(fld:type_get())
+            buf[#buf + 1] = fld:type_get():serialize()
             buf[#buf + 1] = ";\n"
         end
         buf[#buf + 1] = "}"
@@ -128,7 +74,7 @@ M.get_typedecl_str = function(tp)
         add_typedecl_attrs(tp, buf)
         buf[#buf + 1] = tp:full_name_get()
         buf[#buf + 1] = ": "
-        buf[#buf + 1] = M.get_type_str(tp:base_type_get())
+        buf[#buf + 1] = tp:base_type_get():serialize()
         buf[#buf + 1] = ";"
         return table.concat(buf)
     end
diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua
index 9755e71..09d7fb0 100644
--- a/src/scripts/elua/apps/gendoc.lua
+++ b/src/scripts/elua/apps/gendoc.lua
@@ -134,7 +134,7 @@ local gen_func_param = function(fp, buf, nodir)
     if not nodir then buf[#buf + 1] = dirs[fp:direction_get()] end
     buf[#buf + 1] = fp:name_get()
     buf[#buf + 1] = ": "
-    buf[#buf + 1] = ser.get_type_str(fp:type_get())
+    buf[#buf + 1] = fp:type_get():serialize()
     local dval = fp:default_value_get()
     if dval then
         buf[#buf + 1] = " ("
@@ -160,7 +160,7 @@ local gen_func_return = function(fp, ftype, buf, indent)
     end
     buf[#buf + 1] = indent and ("    "):rep(indent) or "    "
     buf[#buf + 1] = "return: "
-    buf[#buf + 1] = ser.get_type_str(rett)
+    buf[#buf + 1] = rett:serialize()
     local dval = fp:return_default_value_get(ftype)
     if dval then
         buf[#buf + 1] = " ("
@@ -1025,7 +1025,7 @@ build_event = function(ev, cl)
     local etp = ev:type_get()
     if etp then
         buf[#buf + 1] = ": "
-        buf[#buf + 1] = ser.get_type_str(etp)
+        buf[#buf + 1] = etp:serialize()
     end
 
     buf[#buf + 1] = ";"

-- 


Reply via email to