cpp2ffi: take struct name; inside namespace (needed by imnodes)

This commit is contained in:
Victor Bombi
2020-10-02 21:19:33 +02:00
parent 246c0e580f
commit 8c6dbf6de7

View File

@@ -1151,13 +1151,17 @@ function M.Parser()
local processer = function(it) local processer = function(it)
if it.re_name == "typedef_re" or it.re_name == "functypedef_re" or it.re_name == "vardef_re" then if it.re_name == "typedef_re" or it.re_name == "functypedef_re" or it.re_name == "vardef_re" then
if not it.parent then if not it.parent or it.parent.re_name=="namespace_re" then
table.insert(outtabpre,it.item) table.insert(outtabpre,it.item)
-- add typedef after struct name -- add typedef after struct name
if it.re_name == "vardef_re" and it.item:match"^%s*struct" then if it.re_name == "vardef_re" and it.item:match"^%s*struct" then
local stname = it.item:match("struct%s*(%S+)%s*;") local stname = it.item:match("struct%s*(%S+)%s*;")
table.insert(typedefs_table,"typedef struct "..stname.." "..stname..";\n") table.insert(typedefs_table,"typedef struct "..stname.." "..stname..";\n")
self.typedefs_dict[stname]="struct "..stname self.typedefs_dict[stname]="struct "..stname
if it.parent then --must be struct name; inside namespace
local parname = get_parents_name(it)
self.embeded_structs[stname] = parname..stname
end
end end
end end
elseif it.re_name == "enum_re" then elseif it.re_name == "enum_re" then