// qlist.sip generated by MetaSIP on Fri Feb 10 10:37:52 2012 // // This file is part of the QtCore Python extension module. // // Copyright (c) 2011 Riverbank Computing Limited // // This file is part of PyQt. // // This file may be used under the terms of the GNU General Public // License versions 2.0 or 3.0 as published by the Free Software // Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3 // included in the packaging of this file. Alternatively you may (at // your option) use any later version of the GNU General Public // License if such license has been publicly approved by Riverbank // Computing Limited (or its successors, if any) and the KDE Free Qt // Foundation. In addition, as a special exception, Riverbank gives you // certain additional rights. These rights are described in the Riverbank // GPL Exception version 1.1, which can be found in the file // GPL_EXCEPTION.txt in this package. // // If you are unsure which license is appropriate for your use, please // contact the sales department at sales@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // QList is implemented as a Python list. template %MappedType QList /DocType="list-of-TYPE"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { TYPE *t = new TYPE(sipCpp->at(i)); PyObject *tobj; if ((tobj = sipConvertFromNewType(t, sipType_TYPE, sipTransferObj)) == NULL) { Py_DECREF(l); delete t; return NULL; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode SIP_SSIZE_T len; // Check the type if that is all that is required. if (sipIsErr == NULL) { if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) return 0; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); bool ok = (itm && sipCanConvertToType(itm, sipType_TYPE, SIP_NOT_NONE)); Py_XDECREF(itm); if (!ok) return 0; } return 1; } QList *ql = new QList; len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); int state; TYPE *t = reinterpret_cast(sipConvertToType(itm, sipType_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); Py_DECREF(itm); if (*sipIsErr) { sipReleaseType(t, sipType_TYPE, state); delete ql; return 0; } ql->append(*t); sipReleaseType(t, sipType_TYPE, state); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; // QList is implemented as a Python list. template %MappedType QList /DocType="list-of-TYPE"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { TYPE *t = sipCpp->at(i); PyObject *tobj; // The explicit (void *) cast allows TYPE to be const. if ((tobj = sipConvertFromType((void *)t, sipType_TYPE, sipTransferObj)) == NULL) { Py_DECREF(l); return NULL; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode SIP_SSIZE_T len; // Check the type if that is all that is required. if (sipIsErr == NULL) { if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) return 0; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); bool ok = (itm && sipCanConvertToType(itm, sipType_TYPE, 0)); Py_XDECREF(itm); if (!ok) return 0; } return 1; } QList *ql = new QList; len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); TYPE *t = reinterpret_cast(sipConvertToType(itm, sipType_TYPE, sipTransferObj, 0, 0, sipIsErr)); Py_DECREF(itm); if (*sipIsErr) { delete ql; return 0; } ql->append(t); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; // QList > is implemented as a Python list of 2-element tuples. template %MappedType QList > /DocType="list-of-tuple-of-TYPE1-TYPE2"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); TYPE1 *s1 = new TYPE1(p.first); TYPE2 *s2 = new TYPE2(p.second); PyObject *pobj; if ((pobj = sipBuildResult(NULL, "(NN)", s1, sipType_TYPE1, sipTransferObj, s2, sipType_TYPE2, sipTransferObj)) == NULL) { Py_DECREF(l); delete s1; delete s2; return NULL; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode SIP_SSIZE_T len; // Check the type if that is all that is required. if (sipIsErr == NULL) { if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) return 0; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); if (!seq || !PySequence_Check(seq) || PySequence_Size(seq) != 2) { Py_XDECREF(seq); return 0; } PyObject *itm0 = PySequence_ITEM(seq, 0); PyObject *itm1 = PySequence_ITEM(seq, 1); if (!itm0 || !itm1) { Py_XDECREF(itm0); Py_XDECREF(itm1); Py_DECREF(seq); return 0; } if (!sipCanConvertToType(itm0, sipType_TYPE1, SIP_NOT_NONE) || !sipCanConvertToType(itm1, sipType_TYPE2, SIP_NOT_NONE)) { Py_DECREF(itm0); Py_DECREF(itm1); Py_DECREF(seq); return 0; } } return 1; } QList > *ql = new QList >; len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); PyObject *itm0 = PySequence_ITEM(seq, 0); PyObject *itm1 = PySequence_ITEM(seq, 1); int state1, state2; TYPE1 *s1 = reinterpret_cast(sipConvertToType(itm0, sipType_TYPE1, sipTransferObj, SIP_NOT_NONE, &state1, sipIsErr)); TYPE2 *s2 = reinterpret_cast(sipConvertToType(itm1, sipType_TYPE2, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr)); Py_DECREF(itm0); Py_DECREF(itm1); Py_DECREF(seq); if (*sipIsErr) { sipReleaseType(s1, sipType_TYPE1, state1); sipReleaseType(s2, sipType_TYPE2, state2); delete ql; return 0; } ql->append(QPair(*s1, *s2)); sipReleaseType(s1, sipType_TYPE1, state1); sipReleaseType(s2, sipType_TYPE2, state2); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; // QList > is implemented as a Python list of 2-element tuples. %MappedType QList > /DocType="list-of-tuple-of-int-int"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); PyObject *pobj; if ((pobj = Py_BuildValue((char *)"ii", p.first, p.second)) == NULL) { Py_DECREF(l); return NULL; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode SIP_SSIZE_T len; // Check the type if that is all that is required. if (sipIsErr == NULL) { if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) return 0; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); if (!seq || !PySequence_Check(seq) || PySequence_Size(seq) != 2) { Py_XDECREF(seq); return 0; } Py_DECREF(seq); } return 1; } QList > *ql = new QList >; len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); PyObject *itm0 = PySequence_ITEM(seq, 0); PyObject *itm1 = PySequence_ITEM(seq, 1); Py_DECREF(seq); if (!itm0 || !itm1) { Py_XDECREF(itm0); Py_XDECREF(itm1); delete ql; *sipIsErr = 1; return 0; } int first = SIPLong_AsLong(itm0); int second = SIPLong_AsLong(itm1); Py_DECREF(itm0); Py_DECREF(itm1); ql->append(QPair(first, second)); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %If (Qt_4_3_0 -) // QList > is implemented as a Python list of 2-element tuples. %MappedType QList > /DocType="list-of-tuple-of-float-float"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); PyObject *pobj; if ((pobj = Py_BuildValue((char *)"dd", p.first, p.second)) == NULL) { Py_DECREF(l); return NULL; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode SIP_SSIZE_T len; // Check the type if that is all that is required. if (sipIsErr == NULL) { if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) return 0; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); if (!seq || !PySequence_Check(seq) || PySequence_Size(seq) != 2) { Py_XDECREF(seq); return 0; } } return 1; } QList > *ql = new QList >; len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); PyObject *itm0 = PySequence_ITEM(seq, 0); PyObject *itm1 = PySequence_ITEM(seq, 1); Py_DECREF(seq); if (!itm0 || !itm1) { Py_XDECREF(itm0); Py_XDECREF(itm1); delete ql; *sipIsErr = 1; return 0; } qreal first = PyFloat_AsDouble(itm0); qreal second = PyFloat_AsDouble(itm1); Py_DECREF(itm0); Py_DECREF(itm1); ql->append(QPair(first, second)); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %If (Qt_4_3_0 -) // QList > is implemented as a Python list of 2-element tuples. template %MappedType QList > /DocType="list-of-tuple-of-float-TYPE"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); TYPE *t = new TYPE(p.second); PyObject *pobj; if ((pobj = sipBuildResult(NULL, "(dN)", p.first, t, sipType_TYPE, sipTransferObj)) == NULL) { Py_DECREF(l); delete t; return NULL; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode SIP_SSIZE_T len; // Check the type if that is all that is required. if (sipIsErr == NULL) { if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) return 0; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); if (!seq || !PySequence_Check(seq) || PySequence_Size(seq) != 2) { Py_XDECREF(seq); return 0; } PyObject *itm1 = PySequence_ITEM(seq, 1); bool ok = (itm1 && sipCanConvertToType(itm1, sipType_TYPE, SIP_NOT_NONE)); Py_XDECREF(itm1); Py_DECREF(seq); if (!ok) return 0; } return 1; } QList > *ql = new QList >; len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *seq = PySequence_ITEM(sipPy, i); PyObject *itm0 = PySequence_ITEM(seq, 0); PyObject *itm1 = PySequence_ITEM(seq, 1); Py_DECREF(seq); if (!itm0) { Py_DECREF(itm1); delete ql; *sipIsErr = 1; return 0; } qreal d; int state; d = PyFloat_AsDouble(itm0); TYPE *t = reinterpret_cast(sipConvertToType(itm1, sipType_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); Py_DECREF(itm0); Py_DECREF(itm1); if (*sipIsErr) { sipReleaseType(t, sipType_TYPE, state); delete ql; return 0; } ql->append(QPair(d, *t)); sipReleaseType(t, sipType_TYPE, state); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End // QList is implemented as a Python list of integers. %MappedType QList /DocType="list-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj; if ((pobj = SIPLong_FromLong(sipCpp->value(i))) == NULL) { Py_DECREF(l); return NULL; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode // Check the type if that is all that is required. if (sipIsErr == NULL) return (PySequence_Check(sipPy) && PySequence_Size(sipPy) >= 0); QList *ql = new QList; SIP_SSIZE_T len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); if (!itm) { delete ql; *sipIsErr = 1; return 0; } ql->append(SIPLong_AsLong(itm)); Py_DECREF(itm); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; // QList is implemented as a Python list of unsigned longs. %MappedType QList /DocType="list-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj; if ((pobj = PyLong_FromUnsignedLong(sipCpp->value(i))) == NULL) { Py_DECREF(l); return NULL; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode // Check the type if that is all that is required. if (sipIsErr == NULL) return (PySequence_Check(sipPy) && PySequence_Size(sipPy) >= 0); QList *ql = new QList; SIP_SSIZE_T len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); if (!itm) { delete ql; *sipIsErr = 1; return 0; } ql->append(PyLong_AsUnsignedLong(itm)); Py_DECREF(itm); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; // QList is implemented as a Python list of floats. %MappedType QList /DocType="list-of-float"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the list. PyObject *l; if ((l = PyList_New(sipCpp->size())) == NULL) return NULL; // Set the list elements. for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj; if ((pobj = PyFloat_FromDouble(sipCpp->value(i))) == NULL) { Py_DECREF(l); return NULL; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode // Check the type if that is all that is required. if (sipIsErr == NULL) return (PySequence_Check(sipPy) && PySequence_Size(sipPy) >= 0); QList *ql = new QList; SIP_SSIZE_T len = PySequence_Size(sipPy); for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); if (!itm) { delete ql; *sipIsErr = 1; return 0; } ql->append(PyFloat_AsDouble(itm)); Py_DECREF(itm); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End };