From 5140ea5c81670200a258e233b2bf77aec42afb4a Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Tue, 12 Sep 2023 10:02:06 +0200 Subject: [PATCH] cpp2ffi: correct embeded_structs for untagged structs (ImNodes needs that) --- generator/cpp2ffi.lua | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/generator/cpp2ffi.lua b/generator/cpp2ffi.lua index a45d5a4..1743206 100644 --- a/generator/cpp2ffi.lua +++ b/generator/cpp2ffi.lua @@ -1669,15 +1669,17 @@ function M.Parser() end end if it.parent then --and (it.parent.re_name == "struct_re" or it.parent.re_name == "typedef_st_re" then - local embededst = (it.re_name == "struct_re" and it.item:match("struct%s+(%S+)")) + local embededst = (it.re_name == "struct_re" and it.item:match("struct%s+([^%s{]+)")) or (it.re_name == "typedef_st_re" and it.item:match("%b{}%s*(%S+)%s*;")) --TODO nesting namespace and class - local parname = get_parents_name(it) - if it.parent.re_name == "struct_re" then - --needed by cimnodes with struct tag name equals member name - self.embeded_structs[embededst] = "struct "..parname..embededst - else - self.embeded_structs[embededst] = parname..embededst + if embededst then --discards false which can happen with untagged structs + local parname = get_parents_name(it) + if it.parent.re_name == "struct_re" then + --needed by cimnodes with struct tag name equals member name + self.embeded_structs[embededst] = "struct "..parname..embededst + else + self.embeded_structs[embededst] = parname..embededst + end end end elseif it.re_name == "namespace_re" or it.re_name == "union_re" or it.re_name == "functype_re" then