// // Copyright 2004 Jim Bublitz // Earlier copyrights 1998 - 2003 Jim Bublitz and/or Phil Thompson // may also apply // module kdecore version KDE_3_2_2 // This software is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as // published by the Free Software Foundation; either version 2 of // the License, or (at your option) any later version. // // This software is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; see the file COPYING. // If not, write to the Free Software Foundation, Inc., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. %ModuleHeaderCode #include %End void dcop_add (QDataStream&, QWidget::FocusPolicy /Constrained/); void dcop_add (QDataStream&, int /Constrained/, const QCString& = "int"); //void dcop_add (QDataStream&, longlong); //void dcop_add (QDataStream&, ulonglong); void dcop_add (QDataStream&, double, const QCString& = "double"); void dcop_add (QDataStream&, QString); void dcop_add (QDataStream&, QStringList); void dcop_add (QDataStream&, QCString); void dcop_add (QDataStream&, KURL); void dcop_add (QDataStream&, KURL::List); void dcop_add (QDataStream&, QSize); void dcop_add (QDataStream&, QRect); void dcop_add (QDataStream&, QRegion); void dcop_add (QDataStream&, QPoint); void dcop_add (QDataStream&, QFont); void dcop_add (QDataStream&, QCursor); void dcop_add (QDataStream&, QPixmap); void dcop_add (QDataStream&, QColor); void dcop_add (QDataStream&, QColorGroup); void dcop_add (QDataStream&, QPalette); void dcop_add (QDataStream&, QBrush); void dcop_add (QDataStream&, DCOPRef); void dcop_add (QDataStream&, QVariant); void dcop_add (QDataStream&, QDate); void dcop_add (QDataStream&, QTime); void dcop_add (QDataStream&, QDateTime); void dcop_add (QDataStream&, QImage); void dcop_add (QDataStream&, QKeySequence); void dcop_add (QDataStream&, QPen); void dcop_add (QDataStream&, QPicture); void dcop_add (QDataStream&, QPointArray); void dcop_add (QDataStream&, QByteArray); void dcop_add (QDataStream&, SIP_PYDICT, QCString); %MethodCode const sipTypeDef *map_td = sipFindType(*a2); if (map_td) { int iserr = 0; void *map_v; map_v = sipForceConvertToType(a1, map_td, NULL, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr); if (iserr) { sipIsErr = 1; } else if (*a2 == "QMap") { QMap *map = (QMap *)map_v; *a0 << *map; } else if (*a2 == "QMap") { QMap *map = (QMap *)map_v; *a0 << *map; } else if (*a2 == "QMap") { QMap *map = (QMap *)map_v; *a0 << *map; } else if (*a2 == "QMap") { QMap *map = (QMap *)map_v; *a0 << *map; } } %End void dcop_add (QDataStream&, SIP_PYLIST, QCString); %MethodCode const sipTypeDef *list_td = sipFindType(*a2); if (list_td) { int iserr = 0; void *list_v; list_v = sipForceConvertToType(a1, list_td, NULL, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr); if (iserr) { sipIsErr = 1; } else if (*a2 == "QValueList") { QValueList *list = (QValueList *)list_v; *a0 << *list; } else if (*a2 == "QValueList") { QValueList *list = (QValueList *)list_v; *a0 << *list; } } %End void dcop_next (QDataStream&, QCString&); %MethodCode if (*a1 == "char") { Q_INT8 res; *a0 >> res; return PyInt_FromLong ((long)res); } else if (*a1 == "bool") { bool res; *a0 >> res; return PyBool_FromLong ((long)res); } else if (*a1 == "int") { int res; *a0 >> res; return PyInt_FromLong ((long)res); } else if (*a1 == "long") { long res; *a0 >> res; return PyLong_FromLong (res); } else if (*a1 == "short") { short res; *a0 >> res; return PyInt_FromLong ((long)res); } if (*a1 == "uchar" || *a1 == "unsigned char") { Q_UINT8 res; *a0 >> res; return PyInt_FromLong ((long)res); } else if (*a1 == "uint" || *a1 == "unsigned int") { unsigned int res; *a0 >> res; return PyInt_FromLong ((long)res); } else if (*a1 == "ulong" || *a1 == "unsigned long") { unsigned long res; *a0 >> res; return PyLong_FromLong (res); } else if (*a1 == "Q_INT32") { Q_INT32 res; *a0 >> res; return PyLong_FromLong ((long)res); } else if (*a1 == "pid_t") { pid_t res; *a0 >> res; return PyLong_FromLong ((long)res); } else if (*a1 == "ushort" || *a1 == "unsigned short") { unsigned short res; *a0 >> res; return PyInt_FromLong ((long)res); } else if (*a1 == "float") { float res; *a0 >> res; return PyFloat_FromDouble ((double)res); } else if (*a1 == "double") { double res; *a0 >> res; return PyFloat_FromDouble (res); } else if (*a1 == "QString") { QString res; *a0 >> res; return sipConvertFromNewType(new QString(res), sipType_QString, NULL); } else if (*a1 == "QStringList") { QStringList res; *a0 >> res; return sipConvertFromNewType(new QStringList(res), sipType_QStringList, NULL); } else if (*a1 == "QCString") { QCString res; *a0 >> res; return sipConvertFromNewType(new QCString(res), sipType_QCString, NULL); } else if (*a1 == "KURL") { KURL res; *a0 >> res; return sipConvertFromNewType(new KURL(res), sipType_KURL, NULL); } else if (*a1 == "KURL::List") { KURL::List res; *a0 >> res; return sipConvertFromNewType(new KURL::List(res), sipType_KURL_List, NULL); } else if (*a1 == "QSize") { QSize res; *a0 >> res; return sipConvertFromNewType(new QSize(res), sipType_QSize, NULL); } else if (*a1 == "QRect") { QRect res; *a0 >> res; return sipConvertFromNewType(new QRect(res), sipType_QRect, NULL); } else if (*a1 == "QRegion") { QRect res; *a0 >> res; return sipConvertFromNewType(new QRegion(res), sipType_QRegion, NULL); } else if (*a1 == "QPoint") { QPoint res; *a0 >> res; return sipConvertFromNewType(new QPoint(res), sipType_QPoint, NULL); } else if (*a1 == "QFont") { QFont res; *a0 >> res; return sipConvertFromNewType(new QFont(res), sipType_QFont, NULL); } else if (*a1 == "QCursor") { QCursor res; *a0 >> res; return sipConvertFromNewType(new QCursor(res), sipType_QCursor, NULL); } else if (*a1 == "QPixmap") { QPixmap res; *a0 >> res; return sipConvertFromNewType(new QPixmap(res), sipType_QPixmap, NULL); } else if (*a1 == "QColor") { QColor res; *a0 >> res; return sipConvertFromNewType(new QColor(res), sipType_QColor, NULL); } else if (*a1 == "QColorGroup") { QColorGroup res; *a0 >> res; return sipConvertFromNewType(new QColorGroup(res), sipType_QColorGroup, NULL); } else if (*a1 == "QPalette") { QPalette res; *a0 >> res; return sipConvertFromNewType(new QPalette(res), sipType_QPalette, NULL); } else if (*a1 == "QBrush") { QBrush res; *a0 >> res; return sipConvertFromNewType(new QBrush(res), sipType_QBrush, NULL); } else if (*a1 == "FocusPolicy") { unsigned int res; *a0 >> res; return PyInt_FromLong ((long)res); } else if (*a1 == "DCOPRef") { DCOPRef res; *a0 >> res; return sipConvertFromNewType(new DCOPRef(res), sipType_DCOPRef, NULL); } else if (*a1 == "QVariant") { QVariant res; *a0 >> res; return sipConvertFromNewType(new QVariant(res), sipType_QVariant, NULL); } else if (*a1 == "QDate") { QDate res; *a0 >> res; return sipConvertFromNewType(new QDate(res), sipType_QDate, NULL); } else if (*a1 == "QTime") { QTime res; *a0 >> res; return sipConvertFromNewType(new QTime(res), sipType_QTime, NULL); } else if (*a1 == "QDateTime") { QDateTime res; *a0 >> res; return sipConvertFromNewType(new QDateTime(res), sipType_QDateTime, NULL); } else if (*a1 == "QImage") { QImage res; *a0 >> res; return sipConvertFromNewType(new QImage(res), sipType_QImage, NULL); } else if (*a1 == "QKeySequence") { QKeySequence res; *a0 >> res; return sipConvertFromNewType(new QKeySequence(res), sipType_QKeySequence, NULL); } else if (*a1 == "QPen") { QPen res; *a0 >> res; return sipConvertFromNewType(new QPen(res), sipType_QPen, NULL); } else if (*a1 == "QPicture") { QPicture res; *a0 >> res; return sipConvertFromNewType(new QPicture(res), sipType_QPicture, NULL); } else if (*a1 == "QPointArray") { QPointArray res; *a0 >> res; return sipConvertFromNewType(new QPointArray(res), sipType_QPointArray, NULL); } else if (*a1 == "QByteArray") { QByteArray res; *a0 >> res; return sipConvertFromNewType(new QByteArray(res), sipType_QByteArray, NULL); } else if (*a1 == "QMap") { QMap res; *a0 >> res; return sipConvertFromType(&res, sipFindType(*a1), NULL); } else if (*a1 == "QMap") { QMap res; *a0 >> res; return sipConvertFromType(&res, sipFindType(*a1), NULL); } else if (*a1 == "QMap") { QMap res; *a0 >> res; return sipConvertFromType(&res, sipFindType(*a1), NULL); } else if (*a1 == "QMap") { QMap res; *a0 >> res; return sipConvertFromType(&res, sipFindType(*a1), NULL); } else if (*a1 == "QValueList") { QValueList res; *a0 >> res; return sipConvertFromType(&res, sipFindType(*a1), NULL); } else if (*a1 == "QValueList" || *a1 == "QCStringList") { QValueList res; *a0 >> res; return sipConvertFromType(&res, sipFindType(*a1), NULL); } %End %ModuleHeaderCode #include #include #include %End %ModuleCode void dcop_add (QDataStream& s, int value, const QCString& type_) { if (type_ == "char") s << (Q_INT8)value; else if (type_ == "bool") s << (bool)value; else if (type_ == "short") s << (short)value; else if (type_ == "int") s << (int)value; else if (type_ == "long") s << (long)value; else if (type_== "uchar" || type_ == "unsigned char") s << (Q_UINT8)value; else if (type_ == "ushort" || type_ == "unsigned short") s << (ushort)value; else if (type_ == "uint" || type_ == "unsigned int") s << (uint)value; else if (type_ == "ulong" || type_ == "unsigned long") s << (long)value; } /*void dcop_add (QDataStream& s, longlong value) { s << value; } void dcop_add (QDataStream& s, ulonglong value) { s << value; }*/ void dcop_add (QDataStream& s, double value, const QCString& type_) { if (type_ == "double") s << value; else if (type_ == "float") s << (float)value; } void dcop_add (QDataStream& s, QString value) { s << value; } void dcop_add (QDataStream& s, QStringList value) { s << value; } void dcop_add (QDataStream& s, QCString value) { s << value; } void dcop_add (QDataStream& s, KURL value) { s << value; } void dcop_add (QDataStream& s, KURL::List value) { s << value; } void dcop_add (QDataStream& s, QSize value) { s << value; } void dcop_add (QDataStream& s, QRect value) { s << value; } void dcop_add (QDataStream& s, QRegion value) { s << value; } void dcop_add (QDataStream& s, QPoint value) { s << value; } void dcop_add (QDataStream& s, QFont value) { s << value; } void dcop_add (QDataStream& s, QCursor value) { s << value; } void dcop_add (QDataStream& s, QPixmap value) { s << value; } void dcop_add (QDataStream& s, QColor value) { s << value; } void dcop_add (QDataStream& s, QColorGroup value) { s << value; } void dcop_add (QDataStream& s, QPalette value) { s << value; } void dcop_add (QDataStream& s, QBrush value) { s << value; } void dcop_add (QDataStream& s, QWidget::FocusPolicy value) { s << value; } void dcop_add (QDataStream& s, DCOPRef value) { s << value; } void dcop_add (QDataStream& s, QVariant value) { s << value; } void dcop_add (QDataStream& s, QDate value) { s << value; } void dcop_add (QDataStream& s, QTime value) { s << value; } void dcop_add (QDataStream& s, QDateTime value) { s << value; } void dcop_add (QDataStream& s, QImage value) { s << value; } void dcop_add (QDataStream& s, QKeySequence value) { s << value; } void dcop_add (QDataStream& s, QPen value) { s << value; } void dcop_add (QDataStream& s, QPicture value) { s << value; } void dcop_add (QDataStream& s, QPointArray value) { s << value; } void dcop_add (QDataStream& s, QByteArray value) { s << value; } %End %MappedType QMap //converts a Python dict of QCString:DCOPRef { %TypeHeaderCode #include //typedef QMap DCOPRefMap; %End %ConvertFromTypeCode // Convert to a Python dict if (!sipCpp) return PyDict_New(); PyObject *dict; // Create the dictionary. if ((dict = PyDict_New()) == NULL) return NULL; // Get it. const QMap cppmap = *sipCpp; QMap::ConstIterator it; for (it = cppmap.begin (); it != cppmap.end (); ++it) { QCString acpp = it.key (); DCOPRef bcpp = it.data (); PyObject *ainst; PyObject *binst = NULL; if (((ainst = sipConvertFromNewType(new QCString(acpp), sipType_QCString, NULL)) == NULL) || ((binst = sipConvertFromNewType(new DCOPRef(bcpp), sipType_DCOPRef, NULL)) == NULL) || (PyDict_SetItem (dict, ainst, binst) < 0)) { Py_XDECREF (ainst); Py_XDECREF (binst); Py_DECREF (dict); return NULL; } } return dict; %End %ConvertToTypeCode // Convert a Python dictionary to a QMap on the heap. if (sipIsErr == NULL) return PyDict_Check(sipPy); QMap *cppmap = new QMap; PyObject *aelem, *belem; SIP_SSIZE_T pos = 0; QCString *acpp; DCOPRef *bcpp; while (PyDict_Next(sipPy, &pos, &aelem, &belem)) { int iserr = 0; acpp = (QCString *)sipForceConvertToType(aelem, sipType_QCString, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr); bcpp = (DCOPRef *)sipForceConvertToType(belem, sipType_DCOPRef, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr); if (iserr) { *sipIsErr = 1; delete cppmap; return 0; } cppmap->insert (*acpp, *bcpp); } *sipCppPtr = cppmap; return 1; %End }; %MappedType QMap //converts a Python dict of QString:DCOPRef { %TypeHeaderCode #include //typedef QMap DCOPRefMap; %End %ConvertFromTypeCode // Convert to a Python dict if (!sipCpp) return PyDict_New(); PyObject *dict; // Create the dictionary. if ((dict = PyDict_New()) == NULL) return NULL; // Get it. const QMap cppmap = *sipCpp; QMap::ConstIterator it; for (it = cppmap.begin (); it != cppmap.end (); ++it) { QString acpp = it.key (); DCOPRef bcpp = it.data (); PyObject *ainst; PyObject *binst = NULL; if (((ainst = sipConvertFromNewType(new QString(acpp), sipType_QString, sipTransferObj)) == NULL) || ((binst = sipConvertFromNewType(new DCOPRef(bcpp), sipType_DCOPRef, sipTransferObj)) == NULL) || (PyDict_SetItem (dict, ainst, binst) < 0)) { Py_XDECREF (ainst); Py_XDECREF (binst); Py_DECREF (dict); return NULL; } } return dict; %End %ConvertToTypeCode // Convert a Python dictionary to a QMap on the heap. if (sipIsErr == NULL) return PyDict_Check(sipPy); QMap *cppmap = new QMap; PyObject *aelem, *belem; SIP_SSIZE_T pos = 0; QString *acpp; DCOPRef *bcpp; while (PyDict_Next(sipPy, &pos, &aelem, &belem)) { int iserr = 0, acpp_state; acpp = (QString *)sipForceConvertToType(aelem, sipType_QString, sipTransferObj, SIP_NOT_NONE, &acpp_state, &iserr); bcpp = (DCOPRef *)sipForceConvertToType(belem, sipType_DCOPRef, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr); if (iserr) { if (acpp) sipReleaseType(acpp, sipType_QString, acpp_state); *sipIsErr = 1; delete cppmap; return 0; } cppmap->insert (*acpp, *bcpp); sipReleaseType(acpp, sipType_QString, acpp_state); } *sipCppPtr = cppmap; return 1; %End }; //%MappedType QMap is available in kdecore/kconfig.sip %MappedType QMap //converts a Python dict of QString:QByteArray { %TypeHeaderCode #include %End %ConvertFromTypeCode // Convert to a Python dict if (!sipCpp) return PyDict_New(); PyObject *dict; // Create the dictionary. if ((dict = PyDict_New()) == NULL) return NULL; // Get it. const QMap cppmap = *sipCpp; QMap::ConstIterator it; for (it = cppmap.begin (); it != cppmap.end (); ++it) { QString acpp = it.key (); QByteArray bcpp = it.data (); PyObject *ainst; PyObject *binst = NULL; if (((ainst = sipConvertFromNewType(new QString(acpp), sipType_QString, sipTransferObj)) == NULL) || ((binst = sipConvertFromNewType(new QByteArray(bcpp), sipType_QByteArray, sipTransferObj)) == NULL) || (PyDict_SetItem (dict, ainst, binst) < 0)) { Py_XDECREF (ainst); Py_XDECREF (binst); Py_DECREF (dict); return NULL; } } return dict; %End %ConvertToTypeCode // Convert a Python dictionary to a QMap on the heap. if (sipIsErr == NULL) return PyDict_Check(sipPy); QMap *cppmap = new QMap; PyObject *aelem, *belem; SIP_SSIZE_T pos = 0; QString *acpp; QByteArray *bcpp; while (PyDict_Next(sipPy, &pos, &aelem, &belem)) { int iserr = 0, acpp_state, bcpp_state; acpp = (QString *)sipForceConvertToType(aelem, sipType_QString, sipTransferObj, SIP_NOT_NONE, &acpp_state, &iserr); bcpp = (QByteArray *)sipForceConvertToType(belem, sipType_QByteArray, sipTransferObj, SIP_NOT_NONE, &bcpp_state, &iserr); if (iserr) { if (acpp) sipReleaseType(acpp, sipType_QString, acpp_state); *sipIsErr = 1; delete cppmap; return 0; } cppmap->insert (*acpp, *bcpp); sipReleaseType(acpp, sipType_QString, acpp_state); sipReleaseType(bcpp, sipType_QByteArray, bcpp_state); } *sipCppPtr = cppmap; return 1; %End }; %MappedType QValueList //converts a Python list of DCOPRef { %TypeHeaderCode #include %End %ConvertFromTypeCode if (!sipCpp) return PyList_New(0); // Create the list PyObject *pylist; if ((pylist = PyList_New(0)) == NULL) return NULL; QValueList *cpplist = (QValueList *)sipCpp; PyObject *inst; // Get it. QValueList::Iterator it; for( it = cpplist->begin(); it != cpplist->end(); ++it ) { if (((inst = sipConvertFromNewType(new DCOPRef(*it), sipType_DCOPRef, NULL)) == NULL) || PyList_Append (pylist, inst) < 0) { Py_DECREF (pylist); return NULL; } } return pylist; %End %ConvertToTypeCode if (sipIsErr == NULL) return PyList_Check(sipPy); QValueList *cpplist = new QValueList; PyObject *elem; DCOPRef *cpp; int iserr = 0; for (int i = 0; i < PyList_Size (sipPy); i++) { elem = PyList_GET_ITEM (sipPy, i); cpp = (DCOPRef *)sipForceConvertToType(elem, sipType_DCOPRef, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr); if (iserr) { *sipIsErr = 1; delete cpplist; return 0; } cpplist->append (*cpp); } *sipCppPtr = cpplist; return 1; %End };