aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--PySide/QtCore/typesystem_core_common.xml2
-rw-r--r--PySide/typesystem_templates.xml19
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 &lt;&lt; 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 &lt; 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 &lt; the_size; ++i) {
- Shiboken::AutoDecRef pyItem(PySequence_GetItem(%in, i));
+ int vectorSize = PySequence_Size(%in);
+ %out.reserve(vectorSize);
+ for (int idx = 0; idx &lt; vectorSize; ++idx) {
+ Shiboken::AutoDecRef pyItem(PySequence_GetItem(%in, idx));
%OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
- %out &lt;&lt; cppItem;
+ %out.push_back(cppItem);
}
</template>