@@ -2120,6 +2120,24 @@ void CppGenerator::writeCustomConverterRegister(TextStream &s,
21202120 }
21212121}
21222122
2123+ void CppGenerator::writeTemplateCustomConverterRegister (TextStream &s,
2124+ const AbstractMetaType &type,
2125+ QString converter)
2126+ {
2127+ auto customConversion = CustomConversion::getCustomConversion (type.typeEntry ());
2128+ if (!customConversion || customConversion->targetToNativeConversions ().isEmpty ())
2129+ return ;
2130+ if (converter.isEmpty ())
2131+ converter = converterVar;
2132+ const QString typeName = fixedCppTypeName (type);
2133+ for (const auto &conv : customConversion->targetToNativeConversions ()) {
2134+ const QString &sourceTypeName = conv.sourceTypeName ();
2135+ QString toCpp = pythonToCppFunctionName (sourceTypeName, typeName);
2136+ QString isConv = convertibleToCppFunctionName (sourceTypeName, typeName);
2137+ writeAddPythonToCppConversion (s, converter, toCpp, isConv);
2138+ }
2139+ }
2140+
21232141void CppGenerator::writeContainerConverterFunctions (TextStream &s,
21242142 const AbstractMetaType &containerType) const
21252143{
@@ -4438,8 +4456,7 @@ QString CppGenerator::writeContainerConverterInitialization(TextStream &s,
44384456 s << ' &' << targetTypeName << " _Type" ;
44394457 }
44404458
4441- const QString typeName = fixedCppTypeName (type);
4442- s << " , " << cppToPythonFunctionName (typeName, targetTypeName) << " );\n " ;
4459+ s << " , " << cppToPythonFunctionName (fixedCppTypeName (type), targetTypeName) << " );\n " ;
44434460
44444461 s << registerConverterName (cppSignature, converter);
44454462 if (usePySideExtensions () && cppSignature.startsWith (" const " _L1)
@@ -4448,12 +4465,7 @@ QString CppGenerator::writeContainerConverterInitialization(TextStream &s,
44484465 s << registerConverterName (underlyingType, converter);
44494466 }
44504467
4451- for (const auto &conv : typeEntry->customConversion ()->targetToNativeConversions ()) {
4452- const QString &sourceTypeName = conv.sourceTypeName ();
4453- QString toCpp = pythonToCppFunctionName (sourceTypeName, typeName);
4454- QString isConv = convertibleToCppFunctionName (sourceTypeName, typeName);
4455- writeAddPythonToCppConversion (s, converter, toCpp, isConv);
4456- }
4468+ writeTemplateCustomConverterRegister (s, type, converter);
44574469
44584470 auto typedefItPair = api.typedefTargetToName ().equal_range (type.cppSignature ());
44594471 if (typedefItPair.first != typedefItPair.second ) {
0 commit comments