qgis/sip49_support.patch

203 lines
5.0 KiB
Diff

--- qgis-1.3.0/python/core/conversions.sip 2009-05-14 17:58:24.000000000 +0200
+++ qgis_head/python/core/conversions.sip 2009-11-30 15:07:42.000000000 +0100
@@ -3,6 +3,7 @@
which are not wrapped by PyQt:
- QVector< QVector<TYPE> >
- QVector< QVector< QVector<TYPE> > >
+- QList< QList<TYPE> >
- QSet<int>
- QSet<TYPE>
- QMap<int, QMap<int, TYPE> >
@@ -19,6 +20,7 @@
#if (PY_VERSION_HEX < 0x02050000)
typedef int Py_ssize_t;
#endif
+
%End
@@ -28,6 +30,10 @@
{
%TypeHeaderCode
#include <QVector>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -104,6 +110,10 @@
{
%TypeHeaderCode
#include <QVector>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -175,10 +185,93 @@
};
+
+template <TYPE>
+%MappedType QList< QList<TYPE> >
+{
+%TypeHeaderCode
+#include <QList>
+%End
+
+%ConvertFromTypeCode
+ // Create the list.
+ PyObject *l;
+
+ if ((l = PyList_New(sipCpp->size())) == NULL)
+ return NULL;
+
+ const sipMappedType* qlist_type = sipFindMappedType("QList<TYPE>");
+
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+ QList<TYPE>* t = new QList<TYPE>(sipCpp->at(i));
+ PyObject *tobj;
+
+ if ((tobj = sipConvertFromMappedType(t, qlist_type, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ delete t;
+ return NULL;
+ }
+ PyList_SET_ITEM(l, i, tobj);
+ }
+
+ return l;
+%End
+
+%ConvertToTypeCode
+ const sipMappedType* qlist_type = sipFindMappedType("QList<TYPE>");
+
+ // Check the type if that is all that is required.
+ if (sipIsErr == NULL)
+ {
+ if (!PyList_Check(sipPy))
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ if (!sipCanConvertToMappedType(PyList_GET_ITEM(sipPy, i), qlist_type, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+ }
+
+
+ QList< QList<TYPE> > *ql = new QList< QList<TYPE> >;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+ //TYPE *t = reinterpret_cast<TYPE *>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+ QList<TYPE> * t = reinterpret_cast< QList<TYPE> * >(sipConvertToMappedType(PyList_GET_ITEM(sipPy, i), qlist_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+ sipReleaseInstance(t, sipClass_TYPE, state);
+ delete ql;
+ return 0;
+ }
+ ql->append(*t);
+ sipReleaseInstance(t, sipClass_TYPE, state);
+ }
+
+ *sipCppPtr = ql;
+ return sipGetState(sipTransferObj);
+%End
+
+};
+
+
+
+
%MappedType QSet<int>
{
%TypeHeaderCode
#include <QSet>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -229,6 +322,10 @@
{
%TypeHeaderCode
#include <QSet>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -301,6 +398,10 @@
{
%TypeHeaderCode
#include <QMap>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -418,6 +519,10 @@
{
%TypeHeaderCode
#include <QMap>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -518,7 +623,11 @@
%MappedType QMap<TYPE1, TYPE2*>
{
%TypeHeaderCode
-#include <qmap.h>
+#include <QMap>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -626,6 +735,10 @@
{
%TypeHeaderCode
#include <QMultiMap>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode
@@ -744,6 +857,10 @@
{
%TypeHeaderCode
#include <QMap>
+#if (SIP_VERSION >= 0x040900)
+#define sipClass_QString ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QString))
+#define sipClass_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
+#endif
%End
%ConvertFromTypeCode