@@ -2120,6 +2120,24 @@ void CppGenerator::writeCustomConverterRegister(TextStream &s,
2120
2120
}
2121
2121
}
2122
2122
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
+
2123
2141
void CppGenerator::writeContainerConverterFunctions (TextStream &s,
2124
2142
const AbstractMetaType &containerType) const
2125
2143
{
@@ -4438,8 +4456,7 @@ QString CppGenerator::writeContainerConverterInitialization(TextStream &s,
4438
4456
s << ' &' << targetTypeName << " _Type" ;
4439
4457
}
4440
4458
4441
- const QString typeName = fixedCppTypeName (type);
4442
- s << " , " << cppToPythonFunctionName (typeName, targetTypeName) << " );\n " ;
4459
+ s << " , " << cppToPythonFunctionName (fixedCppTypeName (type), targetTypeName) << " );\n " ;
4443
4460
4444
4461
s << registerConverterName (cppSignature, converter);
4445
4462
if (usePySideExtensions () && cppSignature.startsWith (" const " _L1)
@@ -4448,12 +4465,7 @@ QString CppGenerator::writeContainerConverterInitialization(TextStream &s,
4448
4465
s << registerConverterName (underlyingType, converter);
4449
4466
}
4450
4467
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);
4457
4469
4458
4470
auto typedefItPair = api.typedefTargetToName ().equal_range (type.cppSignature ());
4459
4471
if (typedefItPair.first != typedefItPair.second ) {
0 commit comments