@@ -511,8 +511,8 @@ func (p CppParameter) renderReturnTypeZig(zfs *zigFileState, isSlot bool) (strin
511511 // C calling convention limitations
512512 origRet := ret
513513
514- ret = strings .ReplaceAll (ret , "[][]const u8" , "[*] [*:0]const u8" )
515- ret = strings .ReplaceAll (ret , "[][]u8" , "[*] [*:0]u8" )
514+ ret = strings .ReplaceAll (ret , "[][]const u8" , "?[*:null]? [*:0]const u8" )
515+ ret = strings .ReplaceAll (ret , "[][]u8" , "?[*:null]? [*:0]u8" )
516516 ret = strings .ReplaceAll (ret , "[]const u8" , "[*:0]const u8" )
517517 ret = strings .ReplaceAll (ret , "[]u8" , "[*:0]u8" )
518518 ret = strings .ReplaceAll (ret , "[]i32" , "[*:-1]i32" )
@@ -1209,14 +1209,26 @@ func (zfs *zigFileState) emitCabiToZig(assignExpr string, rt CppParameter, rvalu
12091209 keyParam = e .EnumTypeZig
12101210 }
12111211
1212- keyType := kParam
1212+ var keyType , maybeKeyCast , maybeKeyCastClose , maybeValCast , maybeValCastClose , valType string
1213+
12131214 if _ , ok := KnownClassnames [kType .ParameterType ]; ok {
1214- keyType = "QtC." + kType .ParameterType
1215+ keyType = kType .RenderTypeZig (zfs , true , true )
1216+ maybeKeyCast = "@ptrCast("
1217+ maybeKeyCastClose = ")"
1218+ } else if kType .IntType () {
1219+ keyType = kType .RenderTypeZig (zfs , true , false )
1220+ } else {
1221+ keyType = kParam
12151222 }
12161223
1217- vParam := vType .RenderTypeZig (zfs , false , true )
1218- if _ , ok := KnownClassnames [vParam ]; ok {
1219- vParam = "QtC." + vParam
1224+ if _ , ok := KnownClassnames [vType .ParameterType ]; ok {
1225+ valType = vType .RenderTypeZig (zfs , true , true )
1226+ maybeValCast = "@ptrCast("
1227+ maybeValCastClose = ")"
1228+ } else if vType .IntType () {
1229+ valType = vType .RenderTypeZig (zfs , true , false )
1230+ } else {
1231+ valType = vType .RenderTypeZig (zfs , true , true )
12201232 }
12211233
12221234 afterword += "var " + namePrefix + "_ret: map_" + keyParam + "_" + vType .RenderTypeMapZig (zfs , false ) + "= .empty;\n "
@@ -1233,7 +1245,7 @@ func (zfs *zigFileState) emitCabiToZig(assignExpr string, rt CppParameter, rvalu
12331245 afterword += "}\n "
12341246
12351247 afterword += "const " + namePrefix + "_keys: [*]" + keyType + " = @ptrCast(@alignCast(" + namePrefix + "_map.keys));\n "
1236- afterword += "const " + namePrefix + "_values: [*]" + vParam + " = @ptrCast(@alignCast(" + namePrefix + "_map.values));\n "
1248+ afterword += "const " + namePrefix + "_values: [*]" + valType + " = @ptrCast(@alignCast(" + namePrefix + "_map.values));\n "
12371249
12381250 afterword += "var i: usize = 0;\n "
12391251 afterword += "while (i < " + namePrefix + "_map.len) : (i += 1) {\n "
@@ -1244,7 +1256,7 @@ func (zfs *zigFileState) emitCabiToZig(assignExpr string, rt CppParameter, rvalu
12441256 afterword += namePrefix + "_ret.put(allocator, " + namePrefix + "_entry_slice, " + namePrefix + `_value) catch @panic("` + lowerClass + "." + zfs .currentMethodName + `: Memory allocation failed");` + "\n "
12451257 } else {
12461258 afterword += "const " + namePrefix + "_value = " + namePrefix + "_values[i];\n "
1247- afterword += namePrefix + "_ret.put(allocator, " + namePrefix + "_key, " + namePrefix + ` _value) catch @panic("` + lowerClass + "." + zfs .currentMethodName + `: Memory allocation failed");` + "\n "
1259+ afterword += namePrefix + "_ret.put(allocator, " + maybeKeyCast + namePrefix + "_key" + maybeKeyCastClose + " , " + maybeValCast + namePrefix + " _value" + maybeValCastClose + ` ) catch @panic("` + lowerClass + "." + zfs .currentMethodName + `: Memory allocation failed");` + "\n "
12481260 }
12491261
12501262 afterword += "}\n "
@@ -2085,7 +2097,7 @@ const qtc = @import("qt6c");%%_IMPORTLIBS_%% %%_STRUCTDEFS_%%
20852097 pageUrl := getPageUrl (DtorPage , ifv (isSpecialCase , zigStructName , getPageName (zigStructName ))+ maybeCharts , "" , zigStructName )
20862098 ret .WriteString (ifv (pageUrl != "" , pageUrl + "\n ///\n " , "\n " ) +
20872099 "/// Delete this object from C++ memory.\n ///\n " +
2088- "/// ## Parameter: \n ///\n " +
2100+ "/// ## Parameter:\n ///\n " +
20892101 "/// ` self: QtC." + zigStructName + " `\n ///\n " +
20902102 " pub fn QDelete(self: ?*anyopaque) void {\n " +
20912103 "qtc." + zigStructName + "_Delete(@ptrCast(self));\n }" )
0 commit comments