From 053280dfff63a74cc56a3e493671bee4bb6c60e4 Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Tue, 16 Jun 2026 20:01:06 +0200 Subject: [PATCH] cpp2ffi: std:string return with static and assign --- generator/cpp2ffi.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/generator/cpp2ffi.lua b/generator/cpp2ffi.lua index 7980af7..105a24b 100644 --- a/generator/cpp2ffi.lua +++ b/generator/cpp2ffi.lua @@ -1518,6 +1518,7 @@ local function ADDnonUDT(FP) --assert(def.ret:match"%*","return opaque struct without pointer") --M.prtable(def) --error"return opaque struct without pointer" + print("opaque in return================") def.nonUDT = "opaque" def.ret = def.ret.."*" --def.ret:gsub(rets,rets.."_opq") else @@ -3643,7 +3644,8 @@ local function ImGui_f_implementation(def) elseif def.nonUDT == 2 then insert(outtab," return reinterpret_cast<"..def.ret..">("..ptret..namespace..def.funcname..def.call_args..");\n") elseif def.nonUDT == "string" then - insert(outtab," static std::string str = "..ptret..namespace..def.funcname..def.call_args..";\n") + insert(outtab," static std::string str;\n") + insert(outtab," str.assign("..ptret.."self->"..def.funcname..def.call_args..");\n") insert(outtab," return str.c_str();\n") elseif def.nonUDT == "opaque" then insert(outtab," static auto opq = "..ptret..namespace..def.funcname..def.call_args..";\n") @@ -3687,7 +3689,8 @@ local function struct_f_implementation(def) elseif def.nonUDT == 2 then insert(outtab," return reinterpret_cast<"..def.ret..">("..ptret.."self->"..def.funcname..def.call_args..");\n") elseif def.nonUDT == "string" then - insert(outtab," static std::string str = "..ptret.."self->"..def.funcname..def.call_args..";\n") + insert(outtab," static std::string str;\n") + insert(outtab," str.assign("..ptret.."self->"..def.funcname..def.call_args..");\n") insert(outtab," return str.c_str();\n") elseif def.nonUDT == "opaque" then insert(outtab," static auto opq = "..ptret.."self->"..def.funcname..def.call_args..";\n")