diff options
author | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2016-08-16 14:37:45 +0100 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2016-08-16 14:37:45 +0100 |
commit | 206d323281d8420dbfab5bc52cecb2948e6d8b53 (patch) | |
tree | a4ff5fbacbc349edecf3f43923c185f733076157 | |
parent | 6d52d1db2b2b85eda6dc16124d319d25e975f49c (diff) | |
download | efl-206d323281d8420dbfab5bc52cecb2948e6d8b53.tar.gz |
docs: add Expression node type
-rw-r--r-- | src/scripts/elua/apps/docgen/doctree.lua | 49 | ||||
-rw-r--r-- | src/scripts/elua/apps/docgen/serializers.lua | 2 |
2 files changed, 47 insertions, 4 deletions
diff --git a/src/scripts/elua/apps/docgen/doctree.lua b/src/scripts/elua/apps/docgen/doctree.lua index 7188423516..f8760ccd58 100644 --- a/src/scripts/elua/apps/docgen/doctree.lua +++ b/src/scripts/elua/apps/docgen/doctree.lua @@ -372,7 +372,11 @@ M.Function = Node:clone { end, return_default_value_get = function(self, ft) - return self.func:return_default_value_get(ft) + local v = self.func:return_default_value_get(ft) + if not v then + return nil + end + return M.Expression(v) end, return_doc_get = function(self, ft) @@ -426,7 +430,11 @@ M.Parameter = Node:clone { end, default_value_get = function(self) - return self.param:default_value_get() + local v = self.param:default_value_get() + if not v then + return nil + end + return M.Expression(v) end, name_get = function(self) @@ -541,7 +549,11 @@ M.EnumField = Node:clone { end, value_get = function(self, force) - return self.field:value_get(force) + local v = self.field:value_get(force) + if not v then + return nil + end + return M.Expression(v) end } @@ -835,6 +847,37 @@ M.Variable = Node:clone { end } +M.Expression = Node:clone { + __ctor = function(self, expr) + self.expr = expr + assert(self.expr) + end, + + eval = function(self, mask) + return self.expr:eval(mask) + end, + + eval_enum = function(self) + return self.expr:eval(eolian.expression_mask.INT) + end, + + eval_type = function(self, tp) + return self.expr:eval_type(tp) + end, + + serialize = function(self) + return self.expr:serialize() + end, + + type_get = function(self) + return self.expr:type_get() + end, + + value_get = function(self) + return self.expr:value_get() + end +} + local decl_to_nspace = function(decl) local dt = eolian.declaration_type local decltypes = { diff --git a/src/scripts/elua/apps/docgen/serializers.lua b/src/scripts/elua/apps/docgen/serializers.lua index e39abe769f..ece712845f 100644 --- a/src/scripts/elua/apps/docgen/serializers.lua +++ b/src/scripts/elua/apps/docgen/serializers.lua @@ -195,7 +195,7 @@ M.get_typedecl_cstr = function(tp) local val = fld:value_get() if val then buf[#buf + 1] = " = " - local ev = val:eval(eolian.expression_mask.INT) + local ev = val:eval_enum() local lit = ev:to_literal() buf[#buf + 1] = lit local ser = val:serialize() |