diff options
-rw-r--r-- | PySide/QtCore/typesystem_core_common.xml | 2 | ||||
-rw-r--r-- | PySide/typesystem_templates.xml | 19 |
2 files changed, 15 insertions, 6 deletions
diff --git a/PySide/QtCore/typesystem_core_common.xml b/PySide/QtCore/typesystem_core_common.xml index 91cbda81d..d7d0dd9a4 100644 --- a/PySide/QtCore/typesystem_core_common.xml +++ b/PySide/QtCore/typesystem_core_common.xml @@ -599,7 +599,7 @@ <include file-name="QVector" location="global"/> <conversion-rule> <native-to-target> - <insert-template name="cpplist_to_pylist_conversion"/> + <insert-template name="cppvector_to_pylist_conversion"/> </native-to-target> <target-to-native> <add-conversion type="PySequence"> diff --git a/PySide/typesystem_templates.xml b/PySide/typesystem_templates.xml index 2c93e16dc..cf1782076 100644 --- a/PySide/typesystem_templates.xml +++ b/PySide/typesystem_templates.xml @@ -413,13 +413,22 @@ %out << cppItem; } </template> + <template name="cppvector_to_pylist_conversion"> + %INTYPE::size_type vectorSize = %in.size(); + PyObject* %out = PyList_New((int) vectorSize); + for (%INTYPE::size_type idx = 0; idx < vectorSize; ++idx) { + %INTYPE_0 cppItem(%in[idx]); + PyList_SET_ITEM(%out, idx, %CONVERTTOPYTHON[%INTYPE_0](cppItem)); + } + return %out; + </template> <template name="pyseq_to_cppvector_conversion"> - int the_size = PySequence_Size(%in); - %out.reserve(the_size); - for (int i = 0; i < the_size; ++i) { - Shiboken::AutoDecRef pyItem(PySequence_GetItem(%in, i)); + int vectorSize = PySequence_Size(%in); + %out.reserve(vectorSize); + for (int idx = 0; idx < vectorSize; ++idx) { + Shiboken::AutoDecRef pyItem(PySequence_GetItem(%in, idx)); %OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem); - %out << cppItem; + %out.push_back(cppItem); } </template> |