cpp2ffi: add forced_opaque (cimnodes_editor)

This commit is contained in:
sonoro1234
2026-05-11 15:01:51 +02:00
parent e90e027c82
commit d24c440621

View File

@@ -1769,6 +1769,7 @@ function M.Parser()
par.skipped = {} par.skipped = {}
par.UDTs = {} par.UDTs = {}
par.opaque_structs = {} par.opaque_structs = {}
par.forced_opaque = {}
par.save_output = save_output par.save_output = save_output
par.genConversors = genConversions par.genConversors = genConversions
@@ -2022,11 +2023,16 @@ function M.Parser()
it.opaque_struct = get_parents_name(it)..it.name it.opaque_struct = get_parents_name(it)..it.name
self.opaque_structs[it.name] = it.opaque_struct self.opaque_structs[it.name] = it.opaque_struct
end end
if self.forced_opaque[it.name] then
print("--make forced opaque opaque derived",it.name)
it.opaque_struct = get_parents_name(it)..it.name
self.opaque_structs[it.name] = it.opaque_struct
end
for j,child in ipairs(it.childs) do for j,child in ipairs(it.childs) do
-- if child.re_name == "vardef_re" and child.item:match"using" then -- if child.re_name == "vardef_re" and child.item:match"using" then
-- print("=====using",child.item) -- print("=====using",child.item)
-- end -- end
if child.re_name == "vardef_re" and child.item:match"std::" then if (child.re_name == "vardef_re") and child.item:match"std::" then
print("--make opaque",it.name,child.item) print("--make opaque",it.name,child.item)
--M.prtable(itparent) --M.prtable(itparent)
--it.opaque_struct = (itparent and itparent.name .."::" or "")..it.name --it.opaque_struct = (itparent and itparent.name .."::" or "")..it.name
@@ -2121,7 +2127,7 @@ function M.Parser()
--save_data("./preparse"..tostring(self):gsub("table: ","")..".c",txt) --save_data("./preparse"..tostring(self):gsub("table: ","")..".c",txt)
--]] --]]
self.itemsarr = par:parseItemsR2(txt) self.itemsarr = par:parseItemsR2(txt)
save_data("./itemsarr.lua",ToStr(self.itemsarr)) save_data("./itemsarr.lua",M.serializeTableF(self.itemsarr))--ToStr(self.itemsarr))
itemsarr = self.itemsarr itemsarr = self.itemsarr
---find opaque_structs ---find opaque_structs
self:Listing(itemsarr,function(it) self:Listing(itemsarr,function(it)