From 8fee1a6fe7848f057403a7339c7a1d0bf160044d Mon Sep 17 00:00:00 2001 From: Victor Bombi Date: Thu, 3 Sep 2020 20:25:38 +0200 Subject: [PATCH] new generator move embeded_structs detection to gen_structs_and_enums --- generator/cpp2ffi.lua | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/generator/cpp2ffi.lua b/generator/cpp2ffi.lua index 2eb317b..ba7889e 100644 --- a/generator/cpp2ffi.lua +++ b/generator/cpp2ffi.lua @@ -958,10 +958,7 @@ function M.Parser() if itnsp.re_name == "function_re" or itnsp.re_name == "functionD_re" then self:parseFunction(stname,itnsp.item,nil,itnsp.locat) elseif itnsp.re_name == "struct_re" then - --get embeded_structs local embededst = itnsp.item:match("struct%s+(%S+)") - self.embeded_structs[embededst] = stname.."::"..embededst - print("embeded_structs",embededst) local itemsemarr = itnsp.childs --assert(not itemsem.struct_re,"two level embed struct") for iemb,itemb in ipairs(itemsemarr) do @@ -1082,9 +1079,15 @@ function M.Parser() if not structname then print("NO NAME",cleanst,it.item) end --if not void stname or templated if structname and not self.typenames[structname] then - table.insert(outtab,cleanst) - table.insert(typedefs_table,"typedef struct "..structname.." "..structname..";\n") - self.typedefs_dict[structname]="struct "..structname + table.insert(outtab,cleanst) + table.insert(typedefs_table,"typedef struct "..structname.." "..structname..";\n") + self.typedefs_dict[structname]="struct "..structname + end + if it.parent and it.parent.re_name == "struct_re" then + --TODO nesting more levels and namespace + local stname = it.parent.item:match("struct%s+(%S+)") + local embededst = it.item:match("struct%s+(%S+)") + self.embeded_structs[embededst] = stname.."::"..embededst end elseif it.re_name == "namespace_re" or it.re_name == "union_re" or it.re_name == "functype_re" then --nop