aboutsummaryrefslogtreecommitdiffstats
path: root/PySide/QtCore/qmap_conversions.h
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-09-15 17:00:19 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-09-15 17:00:44 -0300
commit50678706032259f37942eea03429e86af685eedb (patch)
tree396f7f0149f2bf50b99bbb16a6000c549ae932ec /PySide/QtCore/qmap_conversions.h
parentd9b029098c0aee475310841f2d2746c3739b99f7 (diff)
added conversion rules for QVector and QMap containers
Diffstat (limited to 'PySide/QtCore/qmap_conversions.h')
-rw-r--r--PySide/QtCore/qmap_conversions.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/PySide/QtCore/qmap_conversions.h b/PySide/QtCore/qmap_conversions.h
new file mode 100644
index 000000000..c1c262405
--- /dev/null
+++ b/PySide/QtCore/qmap_conversions.h
@@ -0,0 +1,40 @@
+template <typename qmap>
+struct Converter_qmap
+{
+ static PyObject* toPython(qmap map)
+ {
+ PyObject* result = PyDict_New();
+
+ QMapIterator<typename qmap::key_type, typename qmap::mapped_type> it(map);
+ while (it.hasNext()) {
+ it.next();
+ PyDict_SetItem(result,
+ Converter<typename qmap::key_type>::toPython(it.key()),
+ Converter<typename qmap::mapped_type>::toPython(it.value()));
+ }
+
+ return result;
+ }
+ static qmap toCpp(PyObject* pyobj)
+ {
+ qmap result;
+
+ PyObject* key;
+ PyObject* value;
+ Py_ssize_t pos = 0;
+
+ Py_INCREF(pyobj);
+
+ while (PyDict_Next(pyobj, &pos, &key, &value)) {
+ result.insert(Converter<typename qmap::key_type>::toCpp(key),
+ Converter<typename qmap::mapped_type>::toCpp(value));
+ }
+
+ Py_DECREF(pyobj);
+
+ return result;
+ }
+};
+
+template<typename KT, typename VT>
+struct Converter<QMap<KT, VT> > : Converter_qmap<QMap<KT, VT> > {};