docs: add Type to doctree and remove direct eolian api usages
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Tue, 16 Aug 2016 13:53:04 +0000 (14:53 +0100)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Tue, 16 Aug 2016 13:53:04 +0000 (14:53 +0100)
src/scripts/elua/apps/docgen/doctree.lua
src/scripts/elua/apps/docgen/serializers.lua

index 92cb8a8..5a7077a 100644 (file)
@@ -368,7 +368,11 @@ M.Function = Node:clone {
     end,
 
     return_type_get = function(self, ft)
-        return self.func:return_type_get(ft)
+        local v = self.func:return_type_get(ft)
+        if not v then
+            return nil
+        end
+        return M.Type(v)
     end,
 
     return_default_value_get = function(self, ft)
@@ -426,7 +430,11 @@ M.Parameter = Node:clone {
     end,
 
     type_get = function(self)
-        return self.param:type_get()
+        local v = self.param:type_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
     end,
 
     default_value_get = function(self)
@@ -473,7 +481,11 @@ M.Event = Node:clone {
     end,
 
     type_get = function(self)
-        return self.event:type_get()
+        local v = self.event:type_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
     end,
 
     doc_get = function(self)
@@ -526,7 +538,11 @@ M.StructField = Node:clone {
     end,
 
     type_get = function(self)
-        return self.field:type_get()
+        local v = self.field:type_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
     end
 }
 
@@ -557,6 +573,103 @@ M.EnumField = Node:clone {
     end
 }
 
+M.Type = Node:clone {
+    UNKNOWN = eolian.type_type.UNKNOWN,
+    VOID = eolian.type_type.VOID,
+    REGULAR = eolian.type_type.REGULAR,
+    COMPLEX = eolian.type_type.COMPLEX,
+    POINTER = eolian.type_type.POINTER,
+    CLASS = eolian.type_type.CLASS,
+    STATIC_ARRAY = eolian.type_type.STATIC_ARRAY,
+    TERMINATED_ARRAY = eolian.type_type.TERMINATED_ARRAY,
+    UNDEFINED = eolian.type_type.UNDEFINED,
+
+    __ctor = function(self, tp)
+        self.type = tp
+        assert(self.type)
+    end,
+
+    type_get = function(self)
+        return self.type:type_get()
+    end,
+
+    file_get = function(self)
+        return self.type:file_get()
+    end,
+
+    base_type_get = function(self)
+        local v = self.type:base_type_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
+    end,
+
+    next_type_get = function(self)
+        local v = self.type:next_type_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
+    end,
+
+    typedecl_get = function(self)
+        local v = self.type:typedecl_get()
+        if not v then
+            return nil
+        end
+        return M.Typedecl(v)
+    end,
+
+    aliased_base_get = function(self)
+        local v = self.type:aliased_base_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
+    end,
+
+    class_get = function(self)
+        return self.type:class_get()
+    end,
+
+    array_size_get = function(self)
+        return self.type_array_size_get()
+    end,
+
+    is_own = function(self)
+        return self.type:is_own()
+    end,
+
+    is_const = function(self)
+        return self.type:is_const()
+    end,
+
+    is_ref = function(self)
+        return self.type:is_ref()
+    end,
+
+    c_type_get = function(self)
+        return self.type:c_type_get()
+    end,
+
+    name_get = function(self)
+        return self.type:name_get()
+    end,
+
+    full_name_get = function(self)
+        return self.type:full_name_get()
+    end,
+
+    namespaces_get = function(self)
+        return self.type:namespaces_get()
+    end,
+
+    free_func_get = function(self)
+        return self.type:free_func_get()
+    end
+}
+
 M.Typedecl = Node:clone {
     UNKNOWN = eolian.typedecl_type.UNKNOWN,
     STRUCT = eolian.typedecl_type.STRUCT,
@@ -628,11 +741,19 @@ M.Typedecl = Node:clone {
     end,
 
     base_type_get = function(self)
-        return self.typedecl:base_type_get()
+        local v = self.typedecl:base_type_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
     end,
 
     aliased_base_get = function(self)
-        return self.typedecl:aliased_base_get()
+        local v = self.typedecl:aliased_base_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
     end,
 
     is_extern = function(self)
@@ -769,7 +890,11 @@ M.Variable = Node:clone {
     end,
 
     base_type_get = function(self)
-        return self.variable:base_type_get()
+        local v = self.variable:base_type_get()
+        if not v then
+            return nil
+        end
+        return M.Type(v)
     end,
 
     value_get = function(self)
index ece7128..b480a50 100644 (file)
@@ -1,4 +1,3 @@
-local eolian = require("eolian")
 local keyref = require("docgen.keyref")
 local dtree = require("docgen.doctree")
 
@@ -35,17 +34,16 @@ local wrap_type_attrs = function(tp, str)
 end
 
 M.get_type_str = function(tp)
-    local tps = eolian.type_type
     local tpt = tp:type_get()
-    if tpt == tps.UNKNOWN then
+    if tpt == tp.UNKNOWN then
         error("unknown type: " .. tp:full_name_get())
-    elseif tpt == tps.VOID then
+    elseif tpt == tp.VOID then
         return wrap_type_attrs(tp, "void")
-    elseif tpt == tps.UNDEFINED then
+    elseif tpt == tp.UNDEFINED then
         return wrap_type_attrs(tp, "__undefined_type")
-    elseif tpt == tps.REGULAR or tpt == tps.CLASS then
+    elseif tpt == tp.REGULAR or tpt == tp.CLASS then
         return wrap_type_attrs(tp, tp:full_name_get())
-    elseif tpt == tps.COMPLEX then
+    elseif tpt == tp.COMPLEX then
         local stypes = {}
         local stp = tp:base_type_get()
         while stp do
@@ -54,18 +52,18 @@ M.get_type_str = function(tp)
         end
         return wrap_type_attrs(tp, tp:full_name_get() .. "<"
             .. table.concat(stypes, ", ") .. ">")
-    elseif tpt == tps.POINTER then
+    elseif tpt == tp.POINTER then
         local btp = tp:base_type_get()
         local suffix = " *"
-        if btp:type_get() == tps.POINTER then
+        if btp:type_get() == tp.POINTER then
             suffix = "*"
         end
         return wrap_type_attrs(tp, M.get_type_str(btp) .. suffix)
-    elseif tpt == tps.STATIC_ARRAY then
+    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 == tps.TERMINATED_ARRAY then
+    elseif tpt == tp.TERMINATED_ARRAY then
         return wrap_type_attrs(tp, "terminated_array<"
             .. M.get_type_str(tp:base_type_get()) .. ">")
     end