Blob Blame History Raw
diff -ruN PyKDE-3.16.2/configure.py PyKDE-3.16.3/configure.py
--- PyKDE-3.16.2/configure.py	2008-11-13 17:28:26.000000000 +0000
+++ PyKDE-3.16.3/configure.py	2009-06-10 15:38:00.000000000 +0100
@@ -54,7 +54,7 @@
 kde_version_extra  = None
 kde_max_version    = 0x030503
 
-sip_min_v4_version = 0x040501
+sip_min_v4_version = 0x040800
 qt_min_version     = 0x030200
 pyqt_min_version   = 0x031000
 
diff -ruN PyKDE-3.16.2/sip/kabc/addressbook.sip PyKDE-3.16.3/sip/kabc/addressbook.sip
--- PyKDE-3.16.2/sip/kabc/addressbook.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kabc/addressbook.sip	2009-06-10 17:47:59.000000000 +0100
@@ -208,7 +208,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::Resource *)sipForceConvertTo_KABC_Resource (elem, &iserr);
+        cpp = (KABC::Resource *)sipForceConvertToType(elem, sipType_KABC_Resource, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kabc/addressee.sip PyKDE-3.16.3/sip/kabc/addressee.sip
--- PyKDE-3.16.2/sip/kabc/addressee.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kabc/addressee.sip	2009-06-10 17:48:19.000000000 +0100
@@ -356,7 +356,7 @@
     QValueList<KABC::Addressee>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KABC::Addressee (*it), sipClass_KABC_Addressee)) == NULL)
+        if (((inst = sipConvertFromNewType(new KABC::Addressee (*it), sipType_KABC_Addressee, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -381,7 +381,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::Addressee *)sipForceConvertTo_KABC_Addressee (elem, &iserr);
+        cpp = (KABC::Addressee *)sipForceConvertToType(elem, sipType_KABC_Addressee, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -423,7 +423,7 @@
     QValueList<KABC::Address>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KABC::Address (*it), sipClass_KABC_Address)) == NULL)
+        if (((inst = sipConvertFromNewType(new KABC::Address (*it), sipType_KABC_Address, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -448,7 +448,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::Address *)sipForceConvertTo_KABC_Address (elem, &iserr);
+        cpp = (KABC::Address *)sipForceConvertToType(elem, sipType_KABC_Address, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kabc/distributionlist.sip PyKDE-3.16.3/sip/kabc/distributionlist.sip
--- PyKDE-3.16.2/sip/kabc/distributionlist.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kabc/distributionlist.sip	2009-06-10 17:48:50.000000000 +0100
@@ -129,7 +129,7 @@
     QValueList<KABC::DistributionList::Entry>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KABC::DistributionList::Entry (*it), sipClass_KABC_DistributionList_Entry)) == NULL)
+        if (((inst = sipConvertFromNewType(new KABC::DistributionList::Entry (*it), sipType_KABC_DistributionList_Entry, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -154,7 +154,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::DistributionList::Entry *)sipForceConvertTo_KABC_DistributionList_Entry (elem, &iserr);
+        cpp = (KABC::DistributionList::Entry *)sipForceConvertToType(elem, sipType_KABC_DistributionList_Entry, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kabc/field.sip PyKDE-3.16.3/sip/kabc/field.sip
--- PyKDE-3.16.2/sip/kabc/field.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kabc/field.sip	2009-06-10 17:49:05.000000000 +0100
@@ -113,7 +113,7 @@
     QValueList<KABC::Field *>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", (KABC::Field *) (*it), sipClass_KABC_Field)) == NULL)
+        if (((inst = sipConvertFromType((KABC::Field *)(*it), sipType_KABC_Field, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -138,7 +138,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::Field *)sipForceConvertTo_KABC_Field (elem, &iserr);
+        cpp = (KABC::Field *)sipForceConvertToType(elem, sipType_KABC_Field, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kabc/key.sip PyKDE-3.16.3/sip/kabc/key.sip
--- PyKDE-3.16.2/sip/kabc/key.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kabc/key.sip	2009-06-10 17:49:13.000000000 +0100
@@ -97,7 +97,7 @@
     QValueList<KABC::Key>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KABC::Key (*it), sipClass_KABC_Key)) == NULL)
+        if (((inst = sipConvertFromNewType(new KABC::Key(*it), sipType_KABC_Key, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -122,7 +122,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::Key *)sipForceConvertTo_KABC_Key (elem, &iserr);
+        cpp = (KABC::Key *)sipForceConvertToType(elem, sipType_KABC_Key, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kabc/ldapclient.sip PyKDE-3.16.3/sip/kabc/ldapclient.sip
--- PyKDE-3.16.2/sip/kabc/ldapclient.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kabc/ldapclient.sip	2009-06-10 17:49:22.000000000 +0100
@@ -196,7 +196,7 @@
     QValueList<KABC::LdapResult>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KABC::LdapResult (*it), sipClass_KABC_LdapResult)) == NULL)
+        if (((inst = sipConvertFromNewType(new KABC::LdapResult(*it), sipType_KABC_LdapResult, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -221,7 +221,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::LdapResult *)sipForceConvertTo_KABC_LdapResult (elem, &iserr);
+        cpp = (KABC::LdapResult *)sipForceConvertToType(elem, sipType_KABC_LdapResult, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kabc/phonenumber.sip PyKDE-3.16.3/sip/kabc/phonenumber.sip
--- PyKDE-3.16.2/sip/kabc/phonenumber.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kabc/phonenumber.sip	2009-06-10 17:49:31.000000000 +0100
@@ -144,7 +144,7 @@
     QValueList<KABC::PhoneNumber>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KABC::PhoneNumber (*it), sipClass_KABC_PhoneNumber)) == NULL)
+        if (((inst = sipConvertFromNewType(new KABC::PhoneNumber(*it), sipType_KABC_PhoneNumber, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -169,7 +169,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KABC::PhoneNumber *)sipForceConvertTo_KABC_PhoneNumber (elem, &iserr);
+        cpp = (KABC::PhoneNumber *)sipForceConvertToType(elem, sipType_KABC_PhoneNumber, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdecore/bytearray.sip PyKDE-3.16.3/sip/kdecore/bytearray.sip
--- PyKDE-3.16.2/sip/kdecore/bytearray.sip	2008-11-13 17:38:05.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/bytearray.sip	2009-06-10 22:30:28.000000000 +0100
@@ -60,56 +60,64 @@
 
 void dcop_add (QDataStream&, SIP_PYDICT, QCString);
 %MethodCode
-    int iserr = 0;
-    if (*a2 == "QMap<QCString,DCOPRef>")
+    const sipTypeDef *map_td = sipFindType(*a2);
+
+    if (map_td)
     {
-        QMap<QCString,DCOPRef> *map = (QMap<QCString,DCOPRef> *)sipForceConvertTo_QMap_0200QCString_0200DCOPRef(a1, &iserr);
+        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;
-            return 0;
         }
-        *a0 << *map;
-    }
-    else if (*a2 == "QMap<QString,DCOPRef>")
-    {
-        QMap<QString,DCOPRef> *map = (QMap<QString,DCOPRef> *)sipForceConvertTo_QMap_0200QString_0200DCOPRef(a1, &iserr);
+        else if (*a2 == "QMap<QCString,DCOPRef>")
+        {
+            QMap<QCString,DCOPRef> *map = (QMap<QCString,DCOPRef> *)map_v;
 
-        if (iserr)
+            *a0 << *map;
+        }
+        else if (*a2 == "QMap<QString,DCOPRef>")
         {
-            sipIsErr = 1;
-            return 0;
+            QMap<QString,DCOPRef> *map = (QMap<QString,DCOPRef> *)map_v;
+
+            *a0 << *map;
         }
-        *a0 << *map;
     }
 %End
 
 
 void dcop_add (QDataStream&, SIP_PYLIST, QCString);
 %MethodCode
-    int iserr = 0;
-    if (*a2 == "QValueList<QCString>")
+    const sipTypeDef *list_td = sipFindType(*a2);
+
+    if (list_td)
     {
-        QValueList<QCString> *list = (QValueList<QCString> *)sipForceConvertTo_QValueList_0200QCString (a1, &iserr);
+        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;
-            return 0;
         }
-        *a0 << *list;
-    }
-    else if (*a2 == "QValueList<DCOPRef>")
-    {
-        QValueList<DCOPRef> *list = (QValueList<DCOPRef> *)sipForceConvertTo_QValueList_0200DCOPRef (a1, &iserr);
+        else if (*a2 == "QValueList<QCString>")
+        {
+            QValueList<QCString> *list = (QValueList<QCString> *)list_v;
 
-        if (iserr)
+            *a0 << *list;
+        }
+        else if (*a2 == "QValueList<DCOPRef>")
         {
-            sipIsErr = 1;
-            return 0;
+            QValueList<DCOPRef> *list = (QValueList<DCOPRef> *)list_v;
+
+            *a0 << *list;
         }
-        *a0 << *list;
     }
 %End
 
@@ -198,97 +206,97 @@
     {
         QString res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QString (res),sipClass_QString);
+        return sipConvertFromNewType(new QString(res), sipType_QString, NULL);
     }
     else if (*a1 == "QStringList")
     {
         QStringList res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QStringList (res),sipClass_QStringList);
+        return sipConvertFromNewType(new QStringList(res), sipType_QStringList, NULL);
     }
     else if (*a1 == "QCString")
     {
         QCString res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QCString (res),sipClass_QCString);
+        return sipConvertFromNewType(new QCString(res), sipType_QCString, NULL);
     }
     else if (*a1 == "KURL")
     {
         KURL res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new KURL (res),sipClass_KURL);
+        return sipConvertFromNewType(new KURL(res), sipType_KURL, NULL);
     }
     else if (*a1 == "KURL::List")
     {
         KURL::List res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new KURL::List (res),sipClass_KURL_List);
+        return sipConvertFromNewType(new KURL::List(res), sipType_KURL_List, NULL);
     }
     else if (*a1 == "QSize")
     {
         QSize res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QSize (res),sipClass_QSize);
+        return sipConvertFromNewType(new QSize(res), sipType_QSize, NULL);
     }
     else if (*a1 == "QRect")
     {
         QRect res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QRect (res),sipClass_QRect);
+        return sipConvertFromNewType(new QRect(res), sipType_QRect, NULL);
     }
     else if (*a1 == "QRegion")
     {
         QRect res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QRegion (res),sipClass_QRegion);
+        return sipConvertFromNewType(new QRegion(res), sipType_QRegion, NULL);
     }
     else if (*a1 == "QPoint")
     {
         QPoint res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QPoint (res),sipClass_QPoint);
+        return sipConvertFromNewType(new QPoint(res), sipType_QPoint, NULL);
     }
     else if (*a1 == "QFont")
     {
         QFont res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QFont (res),sipClass_QFont);
+        return sipConvertFromNewType(new QFont(res), sipType_QFont, NULL);
     }
     else if (*a1 == "QCursor")
     {
         QCursor res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QCursor (res),sipClass_QCursor);
+        return sipConvertFromNewType(new QCursor(res), sipType_QCursor, NULL);
     }
     else if (*a1 == "QPixmap")
     {
         QPixmap res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QPixmap (res),sipClass_QPixmap);
+        return sipConvertFromNewType(new QPixmap(res), sipType_QPixmap, NULL);
     }
     else if (*a1 == "QColor")
     {
         QColor res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QColor (res),sipClass_QColor);
+        return sipConvertFromNewType(new QColor(res), sipType_QColor, NULL);
     }
     else if (*a1 == "QColorGroup")
     {
         QColorGroup res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QColorGroup (res),sipClass_QColorGroup);
+        return sipConvertFromNewType(new QColorGroup(res), sipType_QColorGroup, NULL);
     }
     else if (*a1 == "QPalette")
     {
         QPalette res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QPalette (res),sipClass_QPalette);
+        return sipConvertFromNewType(new QPalette(res), sipType_QPalette, NULL);
     }
     else if (*a1 == "QBrush")
     {
         QBrush res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QBrush (res),sipClass_QBrush);
+        return sipConvertFromNewType(new QBrush(res), sipType_QBrush, NULL);
     }
     else if (*a1 == "FocusPolicy")
     {
@@ -300,89 +308,85 @@
     {
         DCOPRef res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new DCOPRef (res),sipClass_DCOPRef);
+        return sipConvertFromNewType(new DCOPRef(res), sipType_DCOPRef, NULL);
     }
     else if (*a1 == "QVariant")
     {
         QVariant res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QVariant (res),sipClass_QVariant);
+        return sipConvertFromNewType(new QVariant(res), sipType_QVariant, NULL);
     }
     else if (*a1 == "QDate")
     {
         QDate res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QDate (res),sipClass_QDate);
+        return sipConvertFromNewType(new QDate(res), sipType_QDate, NULL);
     }
     else if (*a1 == "QTime")
     {
         QTime res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QTime (res),sipClass_QTime);
+        return sipConvertFromNewType(new QTime(res), sipType_QTime, NULL);
     }
     else if (*a1 == "QDateTime")
     {
         QDateTime res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QDateTime (res),sipClass_QDateTime);
+        return sipConvertFromNewType(new QDateTime(res), sipType_QDateTime, NULL);
     }
     else if (*a1 == "QImage")
     {
         QImage res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QImage (res),sipClass_QImage);
+        return sipConvertFromNewType(new QImage(res), sipType_QImage, NULL);
     }
     else if (*a1 == "QKeySequence")
     {
         QKeySequence res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QKeySequence (res),sipClass_QKeySequence);
+        return sipConvertFromNewType(new QKeySequence(res), sipType_QKeySequence, NULL);
     }
     else if (*a1 == "QPen")
     {
         QPen res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QPen (res),sipClass_QPen);
+        return sipConvertFromNewType(new QPen(res), sipType_QPen, NULL);
     }
     else if (*a1 == "QPicture")
     {
         QPicture res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QPicture (res),sipClass_QPicture);
+        return sipConvertFromNewType(new QPicture(res), sipType_QPicture, NULL);
     }
     else if (*a1 == "QPointArray")
     {
         QPointArray res;
         *a0 >> res;
-        return sipBuildResult (NULL, "N", new QPointArray (res),sipClass_QPointArray);
+        return sipConvertFromNewType(new QPointArray(res), sipType_QPointArray, NULL);
     }
     else if (*a1 == "QMap<QCString,DCOPRef>")
     {
         QMap<QCString, DCOPRef> res;
         *a0 >> res;
-//        return sipConvertFrom_QMap_0200QCString_0200DCOPRef (&res);
-        return sipConvertFromMappedType (&res, &sipMappedTypeDef_QMap_0200QCString_0200DCOPRef, NULL);
+        return sipConvertFromType(&res, sipFindType(*a1), NULL);
     }
     else if (*a1 == "QMap<QString,DCOPRef>")
     {
         QMap<QString, DCOPRef> res;
         *a0 >> res;
-//        return sipConvertFrom_QMap_0200QString_0200DCOPRef (&res);
-        return sipConvertFromMappedType (&res, &sipMappedTypeDef_QMap_0200QString_0200DCOPRef, NULL);
+        return sipConvertFromType(&res, sipFindType(*a1), NULL);
     }
     else if (*a1 == "QValueList<QCString>")
     {
         QValueList<QCString> res;
         *a0 >> res;
-//        return sipConvertFrom_QValueList_0200QCString (&res);
-        return sipConvertFromMappedType (&res, (sipMappedType *) sipFindMappedType ("sipMappedTypeDef_QValueList_0200QCString"), NULL);
+        return sipConvertFromType(&res, sipFindType(*a1), NULL);
     }
     else if (*a1 == "QValueList<DCOPRef>" || *a1 == "QCStringList")
     {
         QValueList<DCOPRef> res;
         *a0 >> res;
-//        return sipConvertFrom_QValueList_0200DCOPRef (&res);
-        return sipConvertFromMappedType (&res, &sipMappedTypeDef_QValueList_0200DCOPRef, NULL);
+        return sipConvertFromType(&res, sipFindType(*a1), NULL);
     }
 
 %End
@@ -605,8 +609,8 @@
         DCOPRef bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new QCString (acpp), sipClass_QCString)) == NULL)
-            || ((binst = sipBuildResult (NULL, "N", new DCOPRef (bcpp), sipClass_DCOPRef)) == 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);
@@ -626,7 +630,6 @@
     if (sipIsErr == NULL)
         return PyDict_Check(sipPy);
 
-
     QMap<QCString,DCOPRef> *cppmap = new QMap<QCString,DCOPRef>;
 
     PyObject *aelem, *belem;
@@ -638,14 +641,16 @@
     {
         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;
         }
-        acpp = (QCString *)sipForceConvertTo_QCString (aelem, &iserr);
-        bcpp = (DCOPRef *)sipForceConvertTo_DCOPRef (belem, &iserr);
+
         cppmap->insert (*acpp, *bcpp);
     }
 
@@ -687,8 +692,8 @@
         DCOPRef bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
-            || ((binst = sipBuildResult (NULL, "N", new DCOPRef (bcpp), sipClass_DCOPRef)) == 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);
@@ -708,7 +713,6 @@
     if (sipIsErr == NULL)
         return PyDict_Check(sipPy);
 
-
     QMap<QString,DCOPRef> *cppmap = new QMap<QString,DCOPRef>;
 
     PyObject *aelem, *belem;
@@ -718,19 +722,24 @@
 
     while (PyDict_Next(sipPy, &pos, &aelem, &belem))
     {
-        int iserr = 0;
+        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;
         }
 
-        acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
-        bcpp = (DCOPRef *)sipForceConvertTo_DCOPRef (belem, &iserr);
-  
         cppmap->insert (*acpp, *bcpp);
+
+        sipReleaseType(acpp, sipType_QString, acpp_state);
     }
 
     *sipCppPtr = cppmap;
@@ -763,7 +772,7 @@
     QValueList<DCOPRef>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new DCOPRef (*it), sipClass_DCOPRef)) == NULL)
+        if (((inst = sipConvertFromNewType(new DCOPRef(*it), sipType_DCOPRef, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -788,7 +797,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (DCOPRef *)sipForceConvertTo_DCOPRef (elem, &iserr);
+        cpp = (DCOPRef *)sipForceConvertToType(elem, sipType_DCOPRef, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
         if (iserr)
         {
             *sipIsErr = 1;
diff -ruN PyKDE-3.16.2/sip/kdecore/kaboutdata.sip PyKDE-3.16.3/sip/kdecore/kaboutdata.sip
--- PyKDE-3.16.2/sip/kdecore/kaboutdata.sip	2006-09-22 04:11:16.000000000 +0100
+++ PyKDE-3.16.3/sip/kdecore/kaboutdata.sip	2009-06-10 17:50:25.000000000 +0100
@@ -188,7 +188,7 @@
     QValueList<KAboutPerson>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KAboutPerson (*it), sipClass_KAboutPerson)) == NULL)
+        if (((inst = sipConvertFromNewType(new KAboutPerson(*it), sipType_KAboutPerson, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -213,7 +213,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KAboutPerson *)sipForceConvertTo_KAboutPerson (elem, &iserr);
+        cpp = (KAboutPerson *)sipForceConvertToType(elem, sipType_KAboutPerson, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -255,7 +255,7 @@
     QValueList<KAboutTranslator>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KAboutTranslator (*it), sipClass_KAboutTranslator)) == NULL)
+        if (((inst = sipConvertFromNewType(new KAboutTranslator(*it), sipType_KAboutTranslator, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -280,7 +280,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KAboutTranslator *)sipForceConvertTo_KAboutTranslator (elem, &iserr);
+        cpp = (KAboutTranslator *)sipForceConvertToType(elem, sipType_KAboutTranslator, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdecore/kaccel.sip PyKDE-3.16.3/sip/kdecore/kaccel.sip
--- PyKDE-3.16.2/sip/kdecore/kaccel.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/kaccel.sip	2009-06-10 22:31:39.000000000 +0100
@@ -207,27 +207,29 @@
 
     QMap<int,QString> *map = new QMap<int,QString>;
 
-        PyObject *key, *value;
-        SIP_SSIZE_T pos = 0;
-        int iKey;
-        QString *sData;
+    PyObject *key, *value;
+    SIP_SSIZE_T pos = 0;
+    int iKey;
+    QString *sData;
+
+    while (PyDict_Next(sipPy, &pos, &key, &value))
+    {
+        int iserr = 0, sData_state;
 
-        while (PyDict_Next(sipPy, &pos, &key, &value))
-        {
-                int iserr = 0;
+        iKey = PyInt_AS_LONG (key);
+        sData = (QString *)sipForceConvertToType(value, sipType_QString, sipTransferObj, SIP_NOT_NONE, &sData_state, &iserr);
 
-                iKey = PyInt_AS_LONG (key);
-            sData = (QString *)sipForceConvertTo_QString (value, &iserr);
+        if (iserr)
+        {
+            *sipIsErr = 1;
+            delete map;
+            return 0;
+        }
 
-                if (iserr)
-                {
-                        *sipIsErr = 1;
-                        delete map;
-                        return 0;
-                }
+        map->insert (iKey, *sData);
 
-                map->insert (iKey, *sData);
-        }
+        sipReleaseType(sData, sipType_QString, sData_state);
+    }
 
     *sipCppPtr = map;
 
diff -ruN PyKDE-3.16.2/sip/kdecore/kcompletion.sip PyKDE-3.16.3/sip/kdecore/kcompletion.sip
--- PyKDE-3.16.2/sip/kdecore/kcompletion.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/kcompletion.sip	2009-06-10 17:50:42.000000000 +0100
@@ -200,24 +200,24 @@
     QMap<KCompletionBase::KeyBindingType,KShortcut> *kbmap = new QMap<KCompletionBase::KeyBindingType,KShortcut>;
 
     PyObject *key, *value;
-        SIP_SSIZE_T pos = 0;
-        KShortcut *cValue;
-        int iserr;
+    SIP_SSIZE_T pos = 0;
+    KShortcut *cValue;
+    int iserr;
+
+    while (PyDict_Next(sipPy, &pos, &key, &value))
+    {
+        cValue = (KShortcut *)sipForceConvertToType(value, sipType_KShortcut, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
-        while (PyDict_Next(sipPy, &pos, &key, &value))
+        if (iserr || !PyInt_Check (key))
         {
-                cValue = (KShortcut *)sipForceConvertTo_KShortcut (value, &iserr);
-
-                if (iserr || !PyInt_Check (key))
-                {
-                        *sipIsErr = 1;
-                        delete kbmap;
-                        return 0;
-                }
-
-                kbmap->insert ((KCompletionBase::KeyBindingType)PyInt_AS_LONG (key), *cValue);
+            *sipIsErr = 1;
+            delete kbmap;
+            return 0;
         }
 
+        kbmap->insert ((KCompletionBase::KeyBindingType)PyInt_AS_LONG (key), *cValue);
+    }
+
     *sipCppPtr = kbmap;
 
     return 1;
diff -ruN PyKDE-3.16.2/sip/kdecore/kconfigdata.sip PyKDE-3.16.3/sip/kdecore/kconfigdata.sip
--- PyKDE-3.16.2/sip/kdecore/kconfigdata.sip	2008-11-13 18:44:31.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/kconfigdata.sip	2009-06-10 17:51:06.000000000 +0100
@@ -74,7 +74,7 @@
 //returns (QMap<KEntryKey,KEntry)
 
     int isErr = 0;
-    KEntryMap *map = (KEntryMap *)sipForceConvertTo_KEntryMap (a0, &isErr);
+    KEntryMap *map = (KEntryMap *)sipForceConvertToType(a0, sipType_KEntryMap, NULL, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &isErr);
 
     if (isErr)
         sipRes = NULL;
@@ -117,8 +117,8 @@
         KEntry bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new KEntryKey (acpp), sipClass_KEntryKey)) == NULL)
-            || ((binst = sipBuildResult (NULL, "N", new KEntry (bcpp), sipClass_KEntry)) == NULL)
+        if (((ainst = sipConvertFromNewType(new KEntryKey(acpp), sipType_KEntryKey, NULL)) == NULL)
+            || ((binst = sipConvertFromNewType(new KEntry(bcpp), sipType_KEntry, NULL)) == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
             Py_XDECREF (ainst);
@@ -150,8 +150,8 @@
     {
         int iserr = 0;
 
-        acpp = (KEntryKey *)sipForceConvertTo_KEntryKey (aelem, &iserr);
-        bcpp = (KEntry *)sipForceConvertTo_KEntry (belem, &iserr);
+        acpp = (KEntryKey *)sipForceConvertToType(aelem, sipType_KEntryKey, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
+        bcpp = (KEntry *)sipForceConvertToType(belem, sipType_KEntry, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdecore/kconfig.sip PyKDE-3.16.3/sip/kdecore/kconfig.sip
--- PyKDE-3.16.2/sip/kdecore/kconfig.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/kconfig.sip	2009-06-10 22:34:55.000000000 +0100
@@ -133,8 +133,8 @@
         QString bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
-            || ((binst = sipBuildResult (NULL, "N", new QString (bcpp), sipClass_QString)) == NULL)
+        if (((ainst = sipConvertFromNewType(new QString(acpp), sipType_QString, sipTransferObj)) == NULL)
+            || ((binst = sipConvertFromNewType(new QString(bcpp), sipType_QString, sipTransferObj)) == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
             Py_XDECREF (ainst);
@@ -154,7 +154,6 @@
     if (sipIsErr == NULL)
         return PyDict_Check(sipPy);
 
-
     QMap<QString,QString> *cppmap = new QMap<QString,QString>;
 
     PyObject *aelem, *belem;
@@ -164,19 +163,25 @@
 
     while (PyDict_Next(sipPy, &pos, &aelem, &belem))
     {
-        int iserr = 0;
+        int iserr = 0, acpp_state, bcpp_state;
 
-        acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
-        bcpp = (QString *)sipForceConvertTo_QString (belem, &iserr);
+        acpp = (QString *)sipForceConvertToType(aelem, sipType_QString, sipTransferObj, SIP_NOT_NONE, &acpp_state, &iserr);
+        bcpp = (QString *)sipForceConvertToType(belem, sipType_QString, 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_QString, bcpp_state);
     }
 
     *sipCppPtr = cppmap;
@@ -215,7 +220,7 @@
         return PyInstance_Check(sipPy);
 
     int iserr = 0;
-    KSharedConfig *cpp = (KSharedConfig *)sipForceConvertTo_KSharedConfig (sipPy, &iserr);
+    KSharedConfig *cpp = (KSharedConfig *)sipForceConvertToType(sipPy, sipType_KSharedConfig, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
diff -ruN PyKDE-3.16.2/sip/kdecore/kconfigskeleton.sip PyKDE-3.16.3/sip/kdecore/kconfigskeleton.sip
--- PyKDE-3.16.2/sip/kdecore/kconfigskeleton.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/kconfigskeleton.sip	2009-06-10 17:51:56.000000000 +0100
@@ -1099,7 +1099,7 @@
     QValueList<KConfigSkeleton::ItemEnum::Choice>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KConfigSkeleton::ItemEnum::Choice (*it), sipClass_KConfigSkeleton_ItemEnum_Choice)) == NULL)
+        if (((inst = sipConvertFromNewType(new KConfigSkeleton::ItemEnum::Choice(*it), sipType_KConfigSkeleton_ItemEnum_Choice, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -1124,7 +1124,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KConfigSkeleton::ItemEnum::Choice *)sipForceConvertTo_KConfigSkeleton_ItemEnum_Choice (elem, &iserr);
+        cpp = (KConfigSkeleton::ItemEnum::Choice *)sipForceConvertToType(elem, sipType_KConfigSkeleton_ItemEnum_Choice, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdecore/klockfile.sip PyKDE-3.16.3/sip/kdecore/klockfile.sip
--- PyKDE-3.16.2/sip/kdecore/klockfile.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/klockfile.sip	2009-06-10 17:53:23.000000000 +0100
@@ -94,7 +94,7 @@
         return PyInstance_Check(sipPy);
 
     int iserr = 0;
-    KLockFile *cpp = (KLockFile *)sipForceConvertTo_KLockFile (sipPy, &iserr);
+    KLockFile *cpp = (KLockFile *)sipForceConvertToType(sipPy, sipType_KLockFile, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
diff -ruN PyKDE-3.16.2/sip/kdecore/kmacroexpander.sip PyKDE-3.16.3/sip/kdecore/kmacroexpander.sip
--- PyKDE-3.16.2/sip/kdecore/kmacroexpander.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/kmacroexpander.sip	2009-06-10 22:37:31.000000000 +0100
@@ -145,7 +145,7 @@
         QChar acpp = it.key ();
         PyObject *binst = PyString_FromString ((char *)((QString *)&it.data ()));
         PyObject *ainst;
-        if (((ainst = sipBuildResult (NULL, "N", new QChar (acpp), sipClass_QChar)) == NULL)
+        if (((ainst = sipConvertFromNewType(new QChar(acpp), sipType_QChar, sipTransferObj)) == NULL)
             || (binst == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
@@ -173,23 +173,29 @@
     QChar *cKey;
     QString *sData;
 
-        while (PyDict_Next(sipPy, &pos, &key, &value))
-        {
-            int iserr = 0;
+    while (PyDict_Next(sipPy, &pos, &key, &value))
+    {
+        int iserr = 0, cKey_state, sData_state;
 
-            cKey  = (QChar *)sipForceConvertTo_QChar (key, &iserr);
-            sData = (QString *)sipForceConvertTo_QString (value, &iserr);
+        cKey  = (QChar *)sipForceConvertToType(key, sipType_QChar, sipTransferObj, SIP_NOT_NONE, &cKey_state, &iserr);
+        sData = (QString *)sipForceConvertToType(value, sipType_QString, sipTransferObj, SIP_NOT_NONE, &sData_state, &iserr);
 
-            if (iserr)
-            {
-                    *sipIsErr = 1;
-                    delete map;
-                    return 0;
-            }
+        if (iserr)
+        {
+            if (cKey)
+                sipReleaseType(cKey, sipType_QChar, cKey_state);
 
-            map->insert (*cKey, *sData);
+            *sipIsErr = 1;
+            delete map;
+            return 0;
         }
 
+        map->insert (*cKey, *sData);
+
+        sipReleaseType(cKey, sipType_QChar, cKey_state);
+        sipReleaseType(sData, sipType_QString, sData_state);
+    }
+
     *sipCppPtr = map;
 
     return 1;
@@ -228,7 +234,7 @@
         QStringList bcpp = it.data ();
         PyObject *ainst = PyString_FromString ((char *)((QString *)&it.key ()));
         PyObject *binst;
-        if (((binst = sipBuildResult (NULL, "N", new QStringList (bcpp), sipClass_QStringList)) == NULL)
+        if (((binst = sipConvertFromNewType(new QStringList(bcpp), sipType_QStringList, sipTransferObj)) == NULL)
             || (ainst == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
@@ -256,23 +262,29 @@
     QString *sKey;
     QStringList *slData;
 
-        while (PyDict_Next(sipPy, &pos, &key, &value))
-        {
-            int iserr = 0;
+    while (PyDict_Next(sipPy, &pos, &key, &value))
+    {
+        int iserr = 0, sKey_state, slData_state;
 
-        sKey   = (QString *)sipForceConvertTo_QString (value, &iserr);
-        slData = (QStringList *)sipForceConvertTo_QStringList (value, &iserr);
+        sKey = (QString *)sipForceConvertToType(key, sipType_QString, sipTransferObj, SIP_NOT_NONE, &sKey_state, &iserr);
+        slData = (QStringList *)sipForceConvertToType(value, sipType_QStringList, sipTransferObj, SIP_NOT_NONE, &slData_state, &iserr);
 
-            if (iserr)
-            {
-                    *sipIsErr = 1;
-                    delete map;
-                    return 0;
-            }
+        if (iserr)
+        {
+            if (sKey)
+                sipReleaseType(sKey, sipType_QString, sKey_state);
 
-            map->insert (*sKey, *slData);
+            *sipIsErr = 1;
+            delete map;
+            return 0;
         }
 
+        map->insert (*sKey, *slData);
+
+        sipReleaseType(sKey, sipType_QString, sKey_state);
+        sipReleaseType(slData, sipType_QStringList, slData_state);
+    }
+
     *sipCppPtr = map;
 
     return 1;
@@ -312,8 +324,8 @@
         QStringList bcpp = it.data ();
         PyObject *binst;
         PyObject *ainst;
-        if (((ainst = sipBuildResult (NULL, "N", new QChar (acpp), sipClass_QChar)) == NULL)
-            || (binst = sipBuildResult (NULL, "N", new QStringList (bcpp), sipClass_QStringList))
+        if (((ainst = sipConvertFromNewType(new QChar(acpp), sipType_QChar, sipTransferObj)) == NULL)
+            || (binst = sipConvertFromNewType(new QStringList(bcpp), sipType_QStringList, sipTransferObj))
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
             Py_XDECREF (ainst);
@@ -340,23 +352,29 @@
     QChar *cKey;
     QStringList *slData;
 
-        while (PyDict_Next(sipPy, &pos, &key, &value))
-        {
-            int iserr = 0;
+    while (PyDict_Next(sipPy, &pos, &key, &value))
+    {
+        int iserr = 0, cKey_state, slData_state;
 
-            cKey = (QChar *)sipForceConvertTo_QChar (key, &iserr);
-            slData = (QStringList *)sipForceConvertTo_QStringList (value, &iserr);
+        cKey = (QChar *)sipForceConvertToType(key, sipType_QChar, sipTransferObj, SIP_NOT_NONE, &cKey_state, &iserr);
+        slData = (QStringList *)sipForceConvertToType(value, sipType_QStringList, sipTransferObj, SIP_NOT_NONE, &slData_state, &iserr);
 
-            if (iserr)
-            {
-                    *sipIsErr = 1;
-                    delete map;
-                    return 0;
-            }
+        if (iserr)
+        {
+            if (cKey)
+                sipReleaseType(cKey, sipType_QChar, cKey_state);
 
-            map->insert (*cKey, *slData);
+            *sipIsErr = 1;
+            delete map;
+            return 0;
         }
 
+        map->insert (*cKey, *slData);
+
+        sipReleaseType(cKey, sipType_QChar, cKey_state);
+        sipReleaseType(slData, sipType_QStringList, slData_state);
+    }
+
     *sipCppPtr = map;
 
     return 1;
diff -ruN PyKDE-3.16.2/sip/kdecore/kmountpoint.sip PyKDE-3.16.3/sip/kdecore/kmountpoint.sip
--- PyKDE-3.16.2/sip/kdecore/kmountpoint.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/kmountpoint.sip	2009-06-10 21:52:40.000000000 +0100
@@ -95,7 +95,7 @@
         return PyInstance_Check(sipPy);
 
     int iserr = 0;
-    KMountPoint *cpp = (KMountPoint *)sipForceConvertTo_KMountPoint (sipPy, &iserr);
+    KMountPoint *cpp = (KMountPoint *)sipForceConvertToType(sipPy, sipType_KMountPoint, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -136,7 +136,7 @@
     KMountPoint::List::Iterator it;
     for( it = cList->begin(); it != cList->end(); ++it )
     {
-        inst = sipConvertFrom_KMountPoint_Ptr (&(KMountPoint::Ptr)(*it), sipTransferObj);
+        inst = sipConvertFromType(&(KMountPoint::Ptr)(*it), sipType_KMountPoint_Ptr, sipTransferObj);
 
         if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
         {
@@ -163,7 +163,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        mtpt = (KMountPoint *)sipForceConvertTo_KMountPoint (elem, &iserr);
+        mtpt = (KMountPoint *)sipForceConvertToType(elem, sipType_KMountPoint, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         KMountPoint::Ptr *ptr = new KMountPoint::Ptr (mtpt);
 
diff -ruN PyKDE-3.16.2/sip/kdecore/ktimezones.sip PyKDE-3.16.3/sip/kdecore/ktimezones.sip
--- PyKDE-3.16.2/sip/kdecore/ktimezones.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdecore/ktimezones.sip	2009-06-10 22:39:03.000000000 +0100
@@ -162,7 +162,7 @@
         return PyInstance_Check(sipPy);
 
     int iserr = 0;
-    KTimezoneSource *cpp = (KTimezoneSource *)sipForceConvertTo_KTimezoneSource (sipPy, &iserr);
+    KTimezoneSource *cpp = (KTimezoneSource *)sipForceConvertToType(sipPy, sipType_KTimezoneSource, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -212,8 +212,8 @@
         KTimezone *bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
-            || ((binst = sipBuildResult (NULL, "N", (KTimezone *) bcpp, sipClass_KTimezone)) == NULL)
+        if (((ainst = sipConvertFromNewType(new QString(acpp), sipType_QString, sipTransferObj)) == NULL)
+            || ((binst = sipConvertFromType((KTimezone *)bcpp, sipType_KTimezone, sipTransferObj)) == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
             Py_XDECREF (ainst);
@@ -233,7 +233,6 @@
     if (sipIsErr == NULL)
         return PyDict_Check(sipPy);
 
-
     QMap<QString, KTimezone*> *cppmap = new QMap<QString, KTimezone*>;
 
     PyObject *aelem, *belem;
@@ -243,12 +242,24 @@
 
     while (PyDict_Next(sipPy, &pos, &aelem, &belem))
     {
-        int iserr = 0;
+        int iserr = 0, acpp_state;
+
+        acpp = (QString *)sipForceConvertToType(aelem, sipType_QString, sipTransferObj, SIP_NOT_NONE, &acpp_state, &iserr);
+        bcpp = (KTimezone *)sipForceConvertToType(belem, sipType_KTimezone, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
+
+        if (iserr)
+        {
+            if (acpp)
+                sipReleaseType(acpp, sipType_QString, acpp_state);
 
-        acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
-        bcpp = (KTimezone *)sipForceConvertTo_KTimezone (aelem, &iserr);
+            *sipIsErr = 1;
+            delete cppmap;
+            return 0;
+        }
 
         cppmap->insert (*acpp, bcpp);
+
+        sipReleaseType(acpp, sipType_QString, acpp_state);
     }
 
     *sipCppPtr = cppmap;
diff -ruN PyKDE-3.16.2/sip/kdeprint/kmjobmanager.sip PyKDE-3.16.3/sip/kdeprint/kmjobmanager.sip
--- PyKDE-3.16.2/sip/kdeprint/kmjobmanager.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeprint/kmjobmanager.sip	2009-06-10 18:10:04.000000000 +0100
@@ -175,7 +175,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KMJob *)sipForceConvertTo_KMJob (elem, &iserr);
+        cpp = (KMJob *)sipForceConvertToType(elem, sipType_KMJob, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdeprint/kmmanager.sip PyKDE-3.16.3/sip/kdeprint/kmmanager.sip
--- PyKDE-3.16.2/sip/kdeprint/kmmanager.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeprint/kmmanager.sip	2009-06-10 18:11:26.000000000 +0100
@@ -188,7 +188,7 @@
     // Convert a Python list to QPtrList<KMPrinter> on the heap.
 
     if (sipIsErr == NULL)
-    return PyList_Check(sipPy);
+        return PyList_Check(sipPy);
 
     QPtrList<KMPrinter> *kpList = new QPtrList<KMPrinter>;
 
@@ -199,7 +199,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        p = (KMPrinter *)sipForceConvertTo_KMPrinter(elem, &iserr);
+        p = (KMPrinter *)sipForceConvertToType(elem, sipType_KMPrinter, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdeprint/kprintdialog.sip PyKDE-3.16.3/sip/kdeprint/kprintdialog.sip
--- PyKDE-3.16.2/sip/kdeprint/kprintdialog.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeprint/kprintdialog.sip	2009-06-10 18:12:38.000000000 +0100
@@ -148,7 +148,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        p = (KPrintDialogPage *)sipForceConvertTo_KPrintDialogPage(elem, &iserr);
+        p = (KPrintDialogPage *)sipForceConvertToType(elem, sipType_KPrintDialogPage, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdeui/kaction.sip PyKDE-3.16.3/sip/kdeui/kaction.sip
--- PyKDE-3.16.2/sip/kdeui/kaction.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeui/kaction.sip	2009-06-10 18:14:52.000000000 +0100
@@ -737,7 +737,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KAction *)sipForceConvertTo_KAction (elem, &iserr);
+        cpp = (KAction *)sipForceConvertToType(elem, sipType_KAction, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdeui/kcmodule.sip PyKDE-3.16.3/sip/kdeui/kcmodule.sip
--- PyKDE-3.16.2/sip/kdeui/kcmodule.sip	2006-09-22 04:11:15.000000000 +0100
+++ PyKDE-3.16.3/sip/kdeui/kcmodule.sip	2009-06-10 18:15:37.000000000 +0100
@@ -161,7 +161,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KConfigDialogManager *)sipForceConvertTo_KConfigDialogManager (elem, &iserr);
+        cpp = (KConfigDialogManager *)sipForceConvertToType(elem, sipType_KConfigDialogManager, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdeui/kkeydialog.sip PyKDE-3.16.3/sip/kdeui/kkeydialog.sip
--- PyKDE-3.16.2/sip/kdeui/kkeydialog.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeui/kkeydialog.sip	2009-06-10 22:40:27.000000000 +0100
@@ -235,12 +235,15 @@
 
     while (PyDict_Next(sipPy, &pos, &key, &value))
     {
-        int iserr = 0;
+        int iserr = 0, a0_state;
 
-        a0 = (QString *) sipForceConvertTo_QString (key, &iserr);
+        a0 = (QString *)sipForceConvertToType(key, sipType_QString, sipTransferObj, SIP_NOT_NONE, &a0_state, &iserr);
 
         if ((iserr) || (!PyInt_Check (value)))
         {
+            if (a0)
+                sipReleaseType(a0, sipType_QString, a0_state);
+
             *sipIsErr = 1;
             delete qdict;
             return 0;
@@ -249,6 +252,8 @@
         a1 = (int) PyInt_AS_LONG (value);
 
         qdict->insert (*a0, &a1);
+
+        sipReleaseType(a0, sipType_QString, a0_state);
     }
 
     *sipCppPtr = qdict;
diff -ruN PyKDE-3.16.2/sip/kdeui/klistview.sip PyKDE-3.16.3/sip/kdeui/klistview.sip
--- PyKDE-3.16.2/sip/kdeui/klistview.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeui/klistview.sip	2009-06-10 18:18:10.000000000 +0100
@@ -315,7 +315,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (QListViewItem *)sipForceConvertTo_QListViewItem (elem, &iserr);
+        cpp = (QListViewItem *)sipForceConvertToType(elem, sipType_QListViewItem, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdeui/kmainwindow.sip PyKDE-3.16.3/sip/kdeui/kmainwindow.sip
--- PyKDE-3.16.2/sip/kdeui/kmainwindow.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeui/kmainwindow.sip	2009-06-10 18:18:58.000000000 +0100
@@ -252,7 +252,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KMainWindow *)sipForceConvertTo_KMainWindow (elem, &iserr);
+        cpp = (KMainWindow *)sipForceConvertToType(elem, sipType_KMainWindow, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kdeui/kstdguiitem.sip PyKDE-3.16.3/sip/kdeui/kstdguiitem.sip
--- PyKDE-3.16.2/sip/kdeui/kstdguiitem.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeui/kstdguiitem.sip	2009-06-10 18:21:08.000000000 +0100
@@ -309,8 +309,8 @@
     // Get it.
     KGuiItem g1 = (*cpp).first;
     KGuiItem g2 = (*cpp).second;
-    PyObject *pyg1 = sipBuildResult (NULL, "N", new KGuiItem (g1), sipClass_KGuiItem);
-    PyObject *pyg2 = sipBuildResult (NULL, "N", new KGuiItem (g2), sipClass_KGuiItem);
+    PyObject *pyg1 = sipConvertFromNewType(new KGuiItem(g1), sipType_KGuiItem, NULL);
+    PyObject *pyg2 = sipConvertFromNewType(new KGuiItem(g2), sipType_KGuiItem, NULL);
     if ((pyg1 == NULL) || (pyg2 == NULL) || ((inst = Py_BuildValue ("NN", pyg1, pyg2)) == NULL))
     {
         Py_XDECREF (inst);
@@ -327,13 +327,13 @@
     if (sipIsErr == NULL)
         return PyTuple_Check(sipPy);
 
-    KGuiItem g1, g2;
+    KGuiItem *g1, *g2;
     int iserr = 0;
 
     PyObject *pyg1 = PyTuple_GET_ITEM (sipPy, 0);
     PyObject *pyg2 = PyTuple_GET_ITEM (sipPy, 1);
-    g1 = *(KGuiItem *)sipForceConvertTo_KGuiItem (pyg1, &iserr);
-    g2 = *(KGuiItem *)sipForceConvertTo_KGuiItem (pyg2, &iserr);
+    g1 = (KGuiItem *)sipForceConvertToType(pyg1, sipType_KGuiItem, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
+    g2 = (KGuiItem *)sipForceConvertToType(pyg2, sipType_KGuiItem, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -341,8 +341,7 @@
         return 0;
     }
 
-
-    *sipCppPtr = new QPair<KGuiItem, KGuiItem> (g1, g2);
+    *sipCppPtr = new QPair<KGuiItem, KGuiItem> (*g1, *g2);
 
     return 1;
 %End
diff -ruN PyKDE-3.16.2/sip/kdeui/kxmlguifactory.sip PyKDE-3.16.3/sip/kdeui/kxmlguifactory.sip
--- PyKDE-3.16.2/sip/kdeui/kxmlguifactory.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kdeui/kxmlguifactory.sip	2009-06-10 20:36:48.000000000 +0100
@@ -135,7 +135,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KAction *)sipForceConvertTo_KAction (elem, &iserr);
+        cpp = (KAction *)sipForceConvertToType(elem, sipType_KAction, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -182,7 +182,7 @@
     // the loop depends on the type of iterator the  tmeplate makes available
     for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KXMLGUIClient (*cpp), sipClass_KXMLGUIClient)) == NULL)
+        if (((inst = sipConvertFromNewType(new KXMLGUIClient(*cpp), sipType_KXMLGUIClient, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -206,7 +206,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KXMLGUIClient *)sipForceConvertTo_KXMLGUIClient (elem, &iserr);
+        cpp = (KXMLGUIClient *)sipForceConvertToType(elem, sipType_KXMLGUIClient, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -276,7 +276,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (QWidget *)sipForceConvertTo_QWidget (elem, &iserr);
+        cpp = (QWidget *)sipForceConvertToType(elem, sipType_QWidget, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kfile/kfilebookmark.sip PyKDE-3.16.3/sip/kfile/kfilebookmark.sip
--- PyKDE-3.16.2/sip/kfile/kfilebookmark.sip	2006-05-25 02:27:34.000000000 +0100
+++ PyKDE-3.16.3/sip/kfile/kfilebookmark.sip	2009-06-10 20:38:21.000000000 +0100
@@ -133,11 +133,8 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        #if SIPVERSION >= 0x040400
-            cpp = (KFileBookmark *)sipForceConvertToTransfer_KFileBookmark (elem, &iserr, sipTransferObj);
-        #else
-            cpp = (KFileBookmark *)sipForceConvertTo_KFileBookmark (elem, &iserr);
-        #endif
+        cpp = (KFileBookmark *)sipForceConvertToType(elem, sipType_KFileBookmark, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
+
         if (iserr)
         {
             *sipIsErr = 1;
diff -ruN PyKDE-3.16.2/sip/kfile/kfiletreebranch.sip PyKDE-3.16.3/sip/kfile/kfiletreebranch.sip
--- PyKDE-3.16.2/sip/kfile/kfiletreebranch.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kfile/kfiletreebranch.sip	2009-06-10 20:39:56.000000000 +0100
@@ -137,7 +137,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        ftvi = (KFileTreeViewItem *)sipForceConvertTo_KFileTreeViewItem (elem, &iserr);
+        ftvi = (KFileTreeViewItem *)sipForceConvertToType(elem, sipType_KFileTreeViewItem, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
         
         if (iserr)
         {
@@ -212,7 +212,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        ftb = (KFileTreeBranch *)sipForceConvertTo_KFileTreeBranch (elem, &iserr);
+        ftb = (KFileTreeBranch *)sipForceConvertToType(elem, sipType_KFileTreeBranch, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kfile/knotifydialog.sip PyKDE-3.16.3/sip/kfile/knotifydialog.sip
--- PyKDE-3.16.2/sip/kfile/knotifydialog.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kfile/knotifydialog.sip	2009-06-10 20:40:41.000000000 +0100
@@ -292,7 +292,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KNotify::Event *)sipForceConvertTo_KNotify_Event (elem, &iserr);
+        cpp = (KNotify::Event *)sipForceConvertToType(elem, sipType_KNotify_Event, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/khtml/khtml_settings.sip PyKDE-3.16.3/sip/khtml/khtml_settings.sip
--- PyKDE-3.16.2/sip/khtml/khtml_settings.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/khtml/khtml_settings.sip	2009-06-10 22:41:39.000000000 +0100
@@ -235,8 +235,8 @@
     {
         QString s = (*it).first;
         QChar c  = (*it).second;
-        PyObject *pys = sipBuildResult (NULL, "N", new QString (s), sipClass_QString);
-        PyObject *pyc = sipBuildResult (NULL, "N", new QChar (c), sipClass_QChar);
+        PyObject *pys = sipConvertFromNewType(new QString(s), sipType_QString, sipTransferObj);
+        PyObject *pyc = sipConvertFromNewType(new QChar(c), sipType_QChar, sipTransferObj);
         if ((pys == NULL) || ((inst = Py_BuildValue ("NN", pys, pyc)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
@@ -258,26 +258,34 @@
 
     QValueList<AssignPair> *cpplist = new QValueList<AssignPair>;
 
-    QString p1;
-    QChar p2;
+    QString *p1;
+    QChar *p2;
     int iserr = 0;
 
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
+        int p1_state, p2_state;
+
         PyObject *elem = PyList_GET_ITEM (sipPy, i);
         PyObject *pyp1 = PyTuple_GET_ITEM (elem, 0);
         PyObject *pyp2 = PyTuple_GET_ITEM (elem, 1);
-        p1 = *(QString *)sipForceConvertTo_QString (pyp1, &iserr);
-        p2 = *(QChar *)sipForceConvertTo_QChar (pyp2, &iserr);
+        p1 = (QString *)sipForceConvertToType(pyp1, sipType_QString, sipTransferObj, SIP_NOT_NONE, &p1_state, &iserr);
+        p2 = (QChar *)sipForceConvertToType(pyp2, sipType_QChar, sipTransferObj, SIP_NOT_NONE, &p2_state, &iserr);
 
         if (iserr)
         {
+            if (p1)
+                sipReleaseType(p1, sipType_QString, p1_state);
+
             *sipIsErr = 1;
             delete cpplist;
             return 0;
         }
 
-        cpplist->append (AssignPair (p1, p2));
+        cpplist->append (AssignPair (*p1, *p2));
+
+        sipReleaseType(p1, sipType_QString, p1_state);
+        sipReleaseType(p2, sipType_QChar, p2_state);
     }
 
     *sipCppPtr = cpplist;
diff -ruN PyKDE-3.16.2/sip/kio/authinfo.sip PyKDE-3.16.3/sip/kio/authinfo.sip
--- PyKDE-3.16.2/sip/kio/authinfo.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/authinfo.sip	2009-06-10 22:42:44.000000000 +0100
@@ -180,19 +180,25 @@
 
     while (PyDict_Next(sipPy, &pos, &key, &value))
     {
-        int iserr = 0;
+        int iserr = 0, sKey_state, sData_state;
 
-        sKey  = (QString *)sipForceConvertTo_QString (key, &iserr);
-        sData = (QStringList *)sipForceConvertTo_QStringList (value, &iserr);
+        sKey = (QString *)sipForceConvertToType(key, sipType_QString, sipTransferObj, SIP_NOT_NONE, &sKey_state, &iserr);
+        sData = (QStringList *)sipForceConvertToType(value, sipType_QStringList, sipTransferObj, SIP_NOT_NONE, &sData_state, &iserr);
 
         if (iserr)
         {
+            if (sKey)
+                sipReleaseType(sKey, sipType_QString, sKey_state);
+
             *sipIsErr = 1;
             delete map;
             return 0;
         }
 
         map->insert (*sKey, *sData);
+
+        sipReleaseType(sKey, sipType_QString, sKey_state);
+        sipReleaseType(sData, sipType_QStringList, sData_state);
     }
 
     *sipCppPtr = map;
diff -ruN PyKDE-3.16.2/sip/kio/global.sip PyKDE-3.16.3/sip/kio/global.sip
--- PyKDE-3.16.2/sip/kio/global.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/global.sip	2009-06-10 22:44:48.000000000 +0100
@@ -483,13 +483,13 @@
     if (sipParseArgs(&sipArgsParsed,sipArgs,"T", &PyDict_Type, &dict))
     {
         int isErr = 0;
-        KIO::MetaData *map = (KIO::MetaData *)sipForceConvertTo_KIO_MetaData (dict, &isErr);
+        KIO::MetaData *map = (KIO::MetaData *)sipForceConvertToType(dict, sipType_KIO_MetaData, NULL, SIP_NO_CONVERTORS, NULL, &isErr);
         if (isErr)
         {
             Py_INCREF (Py_None);
             return Py_None;
         }
-        return sipConvertFrom_KIO_MetaData ((KIO::MetaData *)map, NULL);
+        return sipConvertFromType(map, sipType_KIO_MetaData, NULL);
     }
 %End
 
@@ -520,7 +520,7 @@
     QValueList<KIO::UDSAtom>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KIO::UDSAtom (*it), sipClass_KIO_UDSAtom)) == NULL)
+        if (((inst = sipConvertFromNewType(new KIO::UDSAtom(*it), sipType_KIO_UDSAtom, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -545,7 +545,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KIO::UDSAtom *)sipForceConvertTo_KIO_UDSAtom (elem, &iserr);
+        cpp = (KIO::UDSAtom *)sipForceConvertToType(elem, sipType_KIO_UDSAtom, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -589,7 +589,7 @@
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
         KIO::UDSEntry cpp = *it;
-        inst = sipConvertFrom_KIO_UDSEntry (&cpp, sipTransferObj);
+        inst = sipConvertFromType(&cpp, sipType_KIO_UDSEntry, sipTransferObj);
 
         if (PyList_Append (pylist, inst) < 0)
         {
@@ -615,7 +615,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KIO::UDSEntry *)sipForceConvertTo_KIO_UDSEntry (elem, &iserr);
+        cpp = (KIO::UDSEntry *)sipForceConvertToType(elem, sipType_KIO_UDSEntry, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -666,8 +666,8 @@
         QString bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
-            || ((binst = sipBuildResult (NULL, "N", new QString (bcpp), sipClass_QString)) == NULL)
+        if (((ainst = sipConvertFromNewType(new QString(acpp), sipType_QString, sipTransferObj)) == NULL)
+            || ((binst = sipConvertFromNewType(new QString(bcpp), sipType_QString, sipTransferObj)) == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
             Py_XDECREF (ainst);
@@ -697,19 +697,25 @@
 
     while (PyDict_Next(sipPy, &pos, &aelem, &belem))
     {
-        int iserr = 0;
+        int iserr = 0, acpp_state, bcpp_state;
 
-        acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
-        bcpp = (QString *)sipForceConvertTo_QString (belem, &iserr);
+        acpp = (QString *)sipForceConvertToType(aelem, sipType_QString, sipTransferObj, SIP_NOT_NONE, &acpp_state, &iserr);
+        bcpp = (QString *)sipForceConvertToType(belem, sipType_QString, 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_QString, bcpp_state);
     }
 
     *sipCppPtr = (KIO::MetaData *)cppmap;
diff -ruN PyKDE-3.16.2/sip/kio/jobclasses.sip PyKDE-3.16.3/sip/kio/jobclasses.sip
--- PyKDE-3.16.2/sip/kio/jobclasses.sip	2006-09-22 04:11:14.000000000 +0100
+++ PyKDE-3.16.3/sip/kio/jobclasses.sip	2009-06-10 20:56:03.000000000 +0100
@@ -702,7 +702,7 @@
     QValueList<KIO::CopyInfo>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KIO::CopyInfo (*it), sipClass_KIO_CopyInfo)) == NULL)
+        if (((inst = sipConvertFromNewType(new KIO::CopyInfo(*it), sipType_KIO_CopyInfo, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -727,7 +727,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KIO::CopyInfo *)sipForceConvertTo_KIO_CopyInfo (elem, &iserr);
+        cpp = (KIO::CopyInfo *)sipForceConvertToType(elem, sipType_KIO_CopyInfo, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kio/kacl.sip PyKDE-3.16.3/sip/kio/kacl.sip
--- PyKDE-3.16.2/sip/kio/kacl.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kacl.sip	2009-06-10 22:46:06.000000000 +0100
@@ -114,7 +114,7 @@
     {
         QString s = (*it).first;
         ushort  u = (*it).second;
-        PyObject *pys = sipBuildResult (NULL, "N", new QString (s), sipClass_QString);
+        PyObject *pys = sipConvertFromNewType(new QString(s), sipType_QString, sipTransferObj);
         if ((pys == NULL) || ((inst = Py_BuildValue ("Ni", pys, u)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
@@ -135,14 +135,16 @@
 
     QValueList<ACLUserPermissions> *cpplist = new QValueList<ACLUserPermissions>;
 
-    QString p1;
+    QString *p1;
     int iserr = 0;
 
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
+        int p1_state;
+
         PyObject *elem = PyList_GET_ITEM (sipPy, i);
         PyObject *pyp1 = PyTuple_GET_ITEM (elem, 0);
-        p1 = *(QString *)sipForceConvertTo_QString (pyp1, &iserr);
+        p1 = (QString *)sipForceConvertToType(pyp1, sipType_QString, sipTransferObj, SIP_NOT_NONE, &p1_state, &iserr);
 
         if (iserr)
         {
@@ -152,7 +154,9 @@
         }
         ushort p2 = (ushort)(PyInt_AS_LONG (PyTuple_GET_ITEM (elem, 1)));
 
-        cpplist->append (ACLUserPermissions (p1, p2));
+        cpplist->append (ACLUserPermissions (*p1, p2));
+
+        sipReleaseType(p1, sipType_QString, p1_state);
     }
 
     *sipCppPtr = cpplist;
diff -ruN PyKDE-3.16.2/sip/kio/kdatatool.sip PyKDE-3.16.3/sip/kio/kdatatool.sip
--- PyKDE-3.16.2/sip/kio/kdatatool.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kdatatool.sip	2009-06-10 20:58:49.000000000 +0100
@@ -124,7 +124,7 @@
     QValueList<KDataToolInfo>::Iterator it;
     for( it = dlist->begin(); it != dlist->end(); ++it )
     {
-        if ((inst = sipBuildResult (NULL, "N", new KDataToolInfo (*it), sipClass_KDataToolInfo)) == NULL
+        if ((inst = sipConvertFromNewType(new KDataToolInfo(*it), sipType_KDataToolInfo, NULL)) == NULL
             || PyList_Append (dtiList, inst) < 0)
         {
             Py_DECREF (dtiList);
@@ -151,7 +151,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        d = (KDataToolInfo *)sipForceConvertTo_KDataToolInfo (elem, &iserr);
+        d = (KDataToolInfo *)sipForceConvertToType(elem, sipType_KDataToolInfo, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kio/kdirlister.sip PyKDE-3.16.3/sip/kio/kdirlister.sip
--- PyKDE-3.16.2/sip/kio/kdirlister.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kdirlister.sip	2009-06-10 21:00:30.000000000 +0100
@@ -176,7 +176,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KFileItem *)sipForceConvertTo_KFileItem (elem, &iserr);
+        cpp = (KFileItem *)sipForceConvertToType(elem, sipType_KFileItem, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -246,7 +246,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (QRegExp *)sipForceConvertTo_QRegExp (elem, &iserr);
+        cpp = (QRegExp *)sipForceConvertToType(elem, sipType_QRegExp, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
  
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kio/kmimetype.sip PyKDE-3.16.3/sip/kio/kmimetype.sip
--- PyKDE-3.16.2/sip/kio/kmimetype.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kmimetype.sip	2009-06-10 21:07:26.000000000 +0100
@@ -263,10 +263,10 @@
     // Convert a Python instance to a Ptr on the heap.
 
     if (sipIsErr == NULL)
-        return PyInstance_Check(sipPy);
+        return sipCanConvertToType(sipPy, sipType_KMimeType, SIP_NO_CONVERTORS);
 
     int iserr = 0;
-    KMimeType *cpp = (KMimeType *)sipForceConvertTo_KMimeType (sipPy, &iserr);
+    KMimeType *cpp = (KMimeType *)sipConvertToType(sipPy, sipType_KMimeType, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -305,7 +305,7 @@
     QValueList<KDEDesktopMimeType::Service>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KDEDesktopMimeType::Service (*it), sipClass_KDEDesktopMimeType_Service)) == NULL)
+        if (((inst = sipConvertFromNewType(new KDEDesktopMimeType::Service(*it), sipType_KDEDesktopMimeType_Service, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -330,7 +330,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KDEDesktopMimeType::Service *)sipForceConvertTo_KDEDesktopMimeType_Service (elem, &iserr);
+        cpp = (KDEDesktopMimeType::Service *)sipForceConvertToType(elem, sipType_KDEDesktopMimeType_Service, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -379,7 +379,7 @@
     for( it = cList->begin(); it != cList->end(); ++it )
     {
         svc  = new KMimeType (*(KMimeType *)((KMimeType::Ptr)(*it)).data ());
-        inst = sipBuildResult (NULL, "N", svc, sipClass_KMimeType);
+        inst = sipConvertFromNewType(svc, sipType_KMimeType, NULL);
         if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
         {
             Py_XDECREF (inst);
@@ -405,7 +405,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        service = (KMimeType *)sipForceConvertTo_KMimeType (elem, &iserr);
+        service = (KMimeType *)sipForceConvertToType(elem, sipType_KMimeType, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         KMimeType::Ptr *ptr = new KMimeType::Ptr (service);
 
diff -ruN PyKDE-3.16.2/sip/kio/kprotocolinfo.sip PyKDE-3.16.3/sip/kio/kprotocolinfo.sip
--- PyKDE-3.16.2/sip/kio/kprotocolinfo.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kprotocolinfo.sip	2009-06-10 21:10:40.000000000 +0100
@@ -198,10 +198,10 @@
     // Convert a Python instance to a Ptr on the heap.
 
     if (sipIsErr == NULL)
-        return PyInstance_Check(sipPy);
+        return sipCanConvertToType(sipPy, sipType_KProtocolInfo, SIP_NO_CONVERTORS);
 
     int iserr = 0;
-    KProtocolInfo *cpp = (KProtocolInfo *)sipForceConvertTo_KProtocolInfo (sipPy, &iserr);
+    KProtocolInfo *cpp = (KProtocolInfo *)sipConvertToType(sipPy, sipType_KProtocolInfo, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -240,7 +240,7 @@
     QValueList<KProtocolInfo::ExtraField>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KProtocolInfo::ExtraField (*it), sipClass_KProtocolInfo_ExtraField)) == NULL)
+        if (((inst = sipConvertToNewType(new KProtocolInfo::ExtraField(*it), sipType_KProtocolInfo_ExtraField, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -265,7 +265,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KProtocolInfo::ExtraField *)sipForceConvertTo_KProtocolInfo_ExtraField (elem, &iserr);
+        cpp = (KProtocolInfo::ExtraField *)sipForceConvertToType(elem, sipType_KProtocolInfo_ExtraField, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kio/kservicegroup.sip PyKDE-3.16.3/sip/kio/kservicegroup.sip
--- PyKDE-3.16.2/sip/kio/kservicegroup.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kservicegroup.sip	2009-06-10 21:58:33.000000000 +0100
@@ -184,10 +184,10 @@
     // Convert a Python instance to a Ptr on the heap.
 
     if (sipIsErr == NULL)
-        return PyInstance_Check(sipPy);
+        return sipCanConvertToType(sipPy, sipType_KServiceGroup, SIP_NO_CONVERTORS);
 
     int iserr = 0;
-    KServiceGroup *cpp = (KServiceGroup *)sipForceConvertTo_KServiceGroup (sipPy, &iserr);
+    KServiceGroup *cpp = (KServiceGroup *)sipConvertToType(sipPy, sipType_KServiceGroup, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -216,37 +216,37 @@
 %ConvertFromTypeCode
     // Convert to a Python list of Ptr (KService).
 
-        if (!sipCpp)
-                return PyList_New (0);
-
-        PyObject *plist;
+    if (!sipCpp)
+        return PyList_New (0);
 
     // Create the list
 
+    PyObject *plist;
+
     if ((plist = PyList_New(0)) == NULL)
         return NULL;
 
     // Get it.
 
-        KServiceGroup::List *cList = (KServiceGroup::List *)sipCpp;
-        PyObject *inst;
-        KSharedPtr <KSycocaEntry> *svcGroupType;
+    KServiceGroup::List *cList = (KServiceGroup::List *)sipCpp;
+    PyObject *inst;
+    KSharedPtr <KSycocaEntry> *svcGroupType;
 
     KServiceGroup::List::Iterator it;
-        for( it = cList->begin(); it != cList->end(); ++it )
+    for( it = cList->begin(); it != cList->end(); ++it )
     {
-                svcGroupType  = &(KServiceGroup::SPtr)(*it);
-                inst    = sipConvertFrom_KSycocaEntry_Ptr (svcGroupType, sipTransferObj);
+        svcGroupType = &(KServiceGroup::SPtr)(*it);
+        inst = sipConvertFromType(svcGroupType, sipType_KSycocaEntry_Ptr, sipTransferObj);
 
-                if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
-                {
-                        Py_XDECREF (inst);
-                        Py_DECREF (plist);
-                        return NULL;
-                }
+        if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
+        {
+            Py_XDECREF (inst);
+            Py_DECREF (plist);
+            return NULL;
+        }
     }
 
-        return plist;
+    return plist;
 %End
 
 %ConvertToTypeCode
@@ -255,28 +255,28 @@
     if (sipIsErr == NULL)
         return PyList_Check(sipPy);
 
-        KServiceGroup::List *cList = new KServiceGroup::List;
-
-        PyObject *elem;
-        KSycocaEntry *service;
-        int iserr = 0;
+    KServiceGroup::List *cList = new KServiceGroup::List;
 
-        for (int i = 0; i < PyList_Size (sipPy); i++)
-        {
-            elem = PyList_GET_ITEM (sipPy, i);
-            service = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (elem, &iserr);
+    PyObject *elem;
+    KSycocaEntry *service;
+    int iserr = 0;
 
-            if (iserr)
-            {
-                *sipIsErr = 1;
-                        delete cList;
-                        return 0;
-            }
+    for (int i = 0; i < PyList_Size (sipPy); i++)
+    {
+        elem = PyList_GET_ITEM (sipPy, i);
+        service = (KSycocaEntry *)sipForceConvertToType(elem, sipType_KSycocaEntry, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
-            KServiceGroup::SPtr *ptr = new KServiceGroup::SPtr (service);
-            cList->append (*ptr);
+        if (iserr)
+        {
+            *sipIsErr = 1;
+            delete cList;
+            return 0;
         }
 
+        KServiceGroup::SPtr *ptr = new KServiceGroup::SPtr (service);
+        cList->append (*ptr);
+    }
+
     *sipCppPtr = cList;
 
     return 1;
diff -ruN PyKDE-3.16.2/sip/kio/kservice.sip PyKDE-3.16.3/sip/kio/kservice.sip
--- PyKDE-3.16.2/sip/kio/kservice.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kservice.sip	2009-06-10 21:59:28.000000000 +0100
@@ -185,10 +185,10 @@
     // Convert a Python instance to a Ptr on the heap.
 
     if (sipIsErr == NULL)
-        return PyInstance_Check(sipPy);
+        return sipCanConvertToType(sipPy, sipType_KService, SIP_NO_CONVERTORS);
 
     int iserr = 0;
-    KService *cpp = (KService *)sipForceConvertTo_KService (sipPy, &iserr);
+    KService *cpp = (KService *)sipConvertToType(sipPy, sipType_KService, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -236,7 +236,7 @@
     for( it = cList->begin(); it != cList->end(); ++it )
     {
         svc  = &(KService::Ptr)(*it);
-        inst = sipConvertFrom_KService_Ptr (svc, sipTransferObj);
+        inst = sipConvertFromType(svc, sipType_KService_Ptr, sipTransferObj);
 
         if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
         {
@@ -263,9 +263,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        service = (KService *)sipForceConvertTo_KService (elem, &iserr);
-
-        KService::Ptr *ptr = new KService::Ptr (service);
+        service = (KService *)sipForceConvertToType(elem, sipType_KService, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -274,7 +272,9 @@
             return 0;
         }
 
-        cList->append (*ptr);
+        KService::Ptr ptr(service);
+
+        cList->append (ptr);
     }
 
     *sipCppPtr = cList;
diff -ruN PyKDE-3.16.2/sip/kio/kservicetype.sip PyKDE-3.16.3/sip/kio/kservicetype.sip
--- PyKDE-3.16.2/sip/kio/kservicetype.sip	2008-11-13 22:57:32.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kservicetype.sip	2009-06-10 22:48:24.000000000 +0100
@@ -106,10 +106,10 @@
     // Convert a Python instance to a Ptr on the heap.
 
     if (sipIsErr == NULL)
-        return PyInstance_Check(sipPy);
+        return sipCanConvertToType(sipPy, sipType_KServiceType, SIP_NO_CONVERTORS);
 
     int iserr = 0;
-    KServiceType *cpp = (KServiceType *)sipForceConvertTo_KServiceType (sipPy, &iserr);
+    KServiceType *cpp = (KServiceType *)sipConvertToType(sipPy, sipType_KServiceType, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -156,7 +156,7 @@
         int bcpp = (int) it.data ();
         PyObject *ainst;
         PyObject *binst = PyInt_FromLong (bcpp);
-        if (((ainst = sipBuildResult (NULL, "N", new QString (acpp), sipClass_QString)) == NULL)
+        if (((ainst = sipConvertFromNewType(new QString (acpp), sipType_QString, sipTransferObj)) == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
             Py_XDECREF (ainst);
@@ -176,7 +176,6 @@
     if (sipIsErr == NULL)
         return PyDict_Check(sipPy);
 
-
     QMap<QString,QVariant::Type> *cppmap = new QMap<QString,QVariant::Type>;
 
     PyObject *aelem, *belem;
@@ -186,19 +185,25 @@
 
     while (PyDict_Next(sipPy, &pos, &aelem, &belem))
     {
-        int iserr = 0;
+        int iserr = 0, acpp_state;
+
+        acpp = (QString *)sipForceConvertToType(aelem, sipType_QString, sipTransferObj, SIP_NOT_NONE, &acpp_state, &iserr);
 
-        if (!PyInt_Check (belem) || iserr)
+        if (iserr || !PyInt_Check(belem))
         {
+            if (acpp_state)
+                sipReleaseType(acpp, sipType_QString, acpp_state);
+
             *sipIsErr = 1;
             delete cppmap;
             return 0;
         }
 
-        acpp = (QString *)sipForceConvertTo_QString (aelem, &iserr);
         bcpp = (QVariant::Type) PyInt_AS_LONG(belem);
 
         cppmap->insert (*acpp, bcpp);
+
+        sipReleaseType(acpp, sipType_QString, acpp_state);
     }
 
     *sipCppPtr = cppmap;
@@ -236,7 +241,7 @@
     for( it = cList->begin(); it != cList->end(); ++it )
     {
         svc  = &(KServiceType::Ptr)(*it);
-        inst = sipConvertFrom_KServiceType_Ptr (svc, sipTransferObj);
+        inst = sipConvertFromType(svc, sipType_KServiceType_Ptr, sipTransferObj);
 
         if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
         {
@@ -264,9 +269,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        service = (KServiceType *)sipForceConvertTo_KServiceType (elem, &iserr);
-
-        KServiceType::Ptr *ptr = new KServiceType::Ptr (service);
+        service = (KServiceType *)sipForceConvertToType(elem, sipType_KServiceType, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -275,7 +278,9 @@
             return 0;
         }
 
-        cList->append (*ptr);
+        KServiceType::Ptr ptr(service);
+
+        cList->append (ptr);
     }
 
     *sipCppPtr = cList;
diff -ruN PyKDE-3.16.2/sip/kio/ksycocaentry.sip PyKDE-3.16.3/sip/kio/ksycocaentry.sip
--- PyKDE-3.16.2/sip/kio/ksycocaentry.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/ksycocaentry.sip	2009-06-10 22:01:05.000000000 +0100
@@ -90,10 +90,10 @@
     // Convert a Python instance to a Ptr on the heap.
 
     if (sipIsErr == NULL)
-        return PyInstance_Check(sipPy);
+        return sipCanConvertToType(sipPy, sipType_KSycocaEntry, SIP_NO_CONVERTORS);
 
     int iserr = 0;
-    KSycocaEntry *cpp = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (sipPy, &iserr);
+    KSycocaEntry *cpp = (KSycocaEntry *)sipConvertToType(sipPy, sipType_KSycocaEntry, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
     if (iserr)
     {
@@ -148,12 +148,12 @@
                 if (svc->data ()->sycocaType () == KST_KService)
                 {
                     svcType = (KSharedPtr<KService> *)svc;
-                    inst    = sipConvertFrom_KService_Ptr (svcType, sipTransferObj);
+                    inst    = sipConvertFromType(svcType, sipType_KService_Ptr, sipTransferObj);
                 }
                 else if (svc->data ()->sycocaType () == KST_KServiceGroup)
                 {
                     svcGroupType = (KSharedPtr <KServiceGroup> *) svc;
-                    inst    = sipConvertFrom_KServiceGroup_Ptr (svcGroupType, sipTransferObj);
+                    inst    = sipConvertFromType(svcGroupType, sipType_KServiceGroup_Ptr, sipTransferObj);
                 }
                 else
                         inst = NULL;
@@ -175,28 +175,28 @@
     if (sipIsErr == NULL)
         return PyList_Check(sipPy);
 
-        KSycocaEntry::List *cList = new KSycocaEntry::List;
+    KSycocaEntry::List *cList = new KSycocaEntry::List;
 
-        PyObject *elem;
-        KSycocaEntry *service;
-        int iserr = 0;
+    PyObject *elem;
+    KSycocaEntry *service;
+    int iserr = 0;
 
-        for (int i = 0; i < PyList_Size (sipPy); i++)
-        {
-            elem = PyList_GET_ITEM (sipPy, i);
-            service = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (elem, &iserr);
+    for (int i = 0; i < PyList_Size (sipPy); i++)
+    {
+        elem = PyList_GET_ITEM (sipPy, i);
+        service = (KSycocaEntry *)sipForceConvertToType(elem, sipType_KSycocaEntry, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
-            KSycocaEntry::Ptr *ptr = new KSycocaEntry::Ptr (service);
+        if (iserr)
+        {
+            *sipIsErr = 1;
+            delete cList;
+            return 0;
+        }
 
-            if (iserr)
-            {
-                *sipIsErr = 1;
-                        delete cList;
-                        return 0;
-            }
+        KSycocaEntry::Ptr ptr(service);
 
-                cList->append (*ptr);
-        }
+        cList->append (ptr);
+    }
 
     *sipCppPtr = cList;
 
diff -ruN PyKDE-3.16.2/sip/kio/ktrader.sip PyKDE-3.16.3/sip/kio/ktrader.sip
--- PyKDE-3.16.2/sip/kio/ktrader.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/ktrader.sip	2009-06-10 22:02:03.000000000 +0100
@@ -77,7 +77,7 @@
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
         KService::Ptr cpp = *it;
-        inst = sipConvertFrom_KService_Ptr (&cpp, NULL);
+        inst = sipConvertFromType(&cpp, sipType_KService_Ptr, sipTransferObj);
         
         if (PyList_Append (pylist, inst) < 0)
         {
@@ -103,7 +103,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KService::Ptr *)sipForceConvertTo_KService_Ptr (elem, &iserr);
+        cpp = (KService::Ptr *)sipForceConvertToType(elem, sipType_KService_Ptr, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kio/kuserprofile.sip PyKDE-3.16.3/sip/kio/kuserprofile.sip
--- PyKDE-3.16.2/sip/kio/kuserprofile.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kio/kuserprofile.sip	2009-06-10 21:35:11.000000000 +0100
@@ -101,7 +101,7 @@
     QValueList<KServiceOffer>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KServiceOffer (*it), sipClass_KServiceOffer)) == NULL)
+        if (((inst = sipConvertFromNewType(new KServiceOffer(*it), sipType_KServiceOffer, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -125,7 +125,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KServiceOffer *)sipForceConvertTo_KServiceOffer (elem, &iserr);
+        cpp = (KServiceOffer *)sipForceConvertToType(elem, sipType_KServiceOffer, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -201,7 +201,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        service = (KServiceTypeProfile *)sipForceConvertTo_KServiceTypeProfile (elem, &iserr);
+        service = (KServiceTypeProfile *)sipForceConvertToType(elem, sipType_KServiceTypeProfile, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kmdi/kmdichildfrm.sip PyKDE-3.16.3/sip/kmdi/kmdichildfrm.sip
--- PyKDE-3.16.2/sip/kmdi/kmdichildfrm.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kmdi/kmdichildfrm.sip	2009-06-10 22:49:47.000000000 +0100
@@ -249,12 +249,15 @@
 
     while (PyDict_Next(sipPy, &pos, &key, &value))
     {
-        int iserr = 0;
+        int iserr = 0, a0_state;
 
-        a0 = (QString *)sipForceConvertTo_QString (key, &iserr);
+        a0 = (QString *)sipForceConvertToType(key, sipType_QString, sipTransferObj, SIP_NOT_NONE, &a0_state, &iserr);
 
-        if ((iserr) || (!PyInt_Check (value)))
+        if (iserr || !PyInt_Check(value))
         {
+            if (a0)
+                sipReleaseType(a0, sipType_QString, a0_state);
+
             *sipIsErr = 1;
             delete qdict;
             return 0;
@@ -263,6 +266,8 @@
         a1 = (QWidget::FocusPolicy) PyInt_AS_LONG (value);
 
         qdict->insert (*a0, &a1);
+
+        sipReleaseType(a0, sipType_QString, a0_state);
     }
 
     *sipCppPtr = qdict;
diff -ruN PyKDE-3.16.2/sip/kmdi/kmdimainfrm.sip PyKDE-3.16.3/sip/kmdi/kmdimainfrm.sip
--- PyKDE-3.16.2/sip/kmdi/kmdimainfrm.sip	2006-09-22 04:11:14.000000000 +0100
+++ PyKDE-3.16.3/sip/kmdi/kmdimainfrm.sip	2009-06-10 21:38:20.000000000 +0100
@@ -251,7 +251,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KDockWidget *)sipForceConvertTo_KDockWidget (elem, &iserr);
+        cpp = (KDockWidget *)sipForceConvertToType(elem, sipType_KDockWidget, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -293,7 +293,7 @@
     QValueList<QRect>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new QRect (*it), sipClass_QRect)) == NULL)
+        if (((inst = sipConvertFromNewType(new QRect(*it), sipType_QRect, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -318,7 +318,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (QRect *)sipForceConvertTo_QRect (elem, &iserr);
+        cpp = (QRect *)sipForceConvertToType(elem, sipType_QRect, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kparts/browserextension.sip PyKDE-3.16.3/sip/kparts/browserextension.sip
--- PyKDE-3.16.2/sip/kparts/browserextension.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kparts/browserextension.sip	2009-06-10 21:42:21.000000000 +0100
@@ -393,8 +393,8 @@
         QCString bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new QCString (acpp), sipClass_QCString)) == NULL)
-            || ((binst = sipBuildResult (NULL, "N", new QCString (bcpp), sipClass_QCString)) == NULL)
+        if (((ainst = sipConvertFromNewType(new QCString (acpp), sipType_QCString, NULL)) == NULL)
+            || ((binst = sipConvertFromNewType(new QCString (bcpp), sipType_QCString, NULL)) == NULL)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
             Py_XDECREF (ainst);
@@ -414,7 +414,6 @@
     if (sipIsErr == NULL)
         return PyDict_Check(sipPy);
 
-
     QMap<QCString,QCString> *cppmap = new QMap<QCString,QCString>;
 
     PyObject *aelem, *belem;
@@ -426,8 +425,8 @@
     {
         int iserr = 0;
 
-        acpp = (QCString *)sipForceConvertTo_QCString (aelem, &iserr);
-        bcpp = (QCString *)sipForceConvertTo_QCString (belem, &iserr);
+        acpp = (QCString *)sipForceConvertToType(aelem, sipType_QCString, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
+        bcpp = (QCString *)sipForceConvertToType(belem, sipType_QCString, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -477,7 +476,7 @@
         int bcpp = it.data ();
         PyObject *ainst;
         PyObject *binst;
-        if (((ainst = sipBuildResult (NULL, "N", new QCString (acpp), sipClass_QCString)) == NULL)
+        if (((ainst = sipConvertFromNewType(new QCString (acpp), sipType_QCString, NULL)) == NULL)
             || ((binst = PyInt_FromLong (bcpp)) < 0)
             || (PyDict_SetItem (dict, ainst, binst) < 0))
         {
@@ -498,7 +497,6 @@
     if (sipIsErr == NULL)
         return PyDict_Check(sipPy);
 
-
     QMap<QCString,int> *cppmap = new QMap<QCString,int>;
 
     PyObject *aelem, *belem;
@@ -510,6 +508,8 @@
     {
         int iserr = 0;
 
+        acpp = (QCString *)sipForceConvertToType(aelem, sipType_QCString, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
+
         if (iserr || !PyInt_Check (belem))
         {
             *sipIsErr = 1;
@@ -517,7 +517,6 @@
             return 0;
         }
 
-        acpp = (QCString *)sipForceConvertTo_QCString (aelem, &iserr);
         bcpp = PyInt_AS_LONG (belem);
 
         cppmap->insert (*acpp, bcpp);
@@ -581,7 +580,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KParts::ReadOnlyPart *)sipForceConvertTo_KParts_ReadOnlyPart (elem, &iserr);
+        cpp = (KParts::ReadOnlyPart *)sipForceConvertToType(elem, sipType_KParts_ReadOnlyPart, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kparts/partmanager.sip PyKDE-3.16.3/sip/kparts/partmanager.sip
--- PyKDE-3.16.2/sip/kparts/partmanager.sip	2006-09-22 04:11:15.000000000 +0100
+++ PyKDE-3.16.3/sip/kparts/partmanager.sip	2009-06-10 21:43:19.000000000 +0100
@@ -160,7 +160,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KParts::Part *)sipForceConvertTo_KParts_Part (elem, &iserr);
+        cpp = (KParts::Part *)sipForceConvertToType(elem, sipType_KParts_Part, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kparts/plugin.sip PyKDE-3.16.3/sip/kparts/plugin.sip
--- PyKDE-3.16.2/sip/kparts/plugin.sip	2006-09-22 04:11:15.000000000 +0100
+++ PyKDE-3.16.3/sip/kparts/plugin.sip	2009-06-10 21:46:11.000000000 +0100
@@ -94,7 +94,7 @@
     QValueList<KParts::Plugin::PluginInfo>::Iterator it;
     for( it = cpplist->begin(); it != cpplist->end(); ++it )
     {
-        if (((inst = sipBuildResult (NULL, "N", new KParts::Plugin::PluginInfo (*it), sipClass_KParts_Plugin_PluginInfo)) == NULL)
+        if (((inst = sipConvertFromNewType(new KParts::Plugin::PluginInfo(*it), sipType_KParts_Plugin_PluginInfo, NULL)) == NULL)
             || PyList_Append (pylist, inst) < 0)
         {
             Py_DECREF (pylist);
@@ -119,7 +119,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KParts::Plugin::PluginInfo *)sipForceConvertTo_KParts_Plugin_PluginInfo (elem, &iserr);
+        cpp = (KParts::Plugin::PluginInfo *)sipForceConvertToType(elem, sipType_KParts_Plugin_PluginInfo, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
@@ -189,7 +189,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KParts::Plugin *)sipForceConvertTo_KParts_Plugin (elem, &iserr);
+        cpp = (KParts::Plugin *)sipForceConvertToType(elem, sipType_KParts_Plugin, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kresources/selectdialog.sip PyKDE-3.16.3/sip/kresources/selectdialog.sip
--- PyKDE-3.16.2/sip/kresources/selectdialog.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kresources/selectdialog.sip	2009-06-10 21:47:00.000000000 +0100
@@ -110,7 +110,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KRES::Resource *)sipForceConvertTo_KRES_Resource (elem, &iserr);
+        cpp = (KRES::Resource *)sipForceConvertToType(elem, sipType_KRES_Resource, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {
diff -ruN PyKDE-3.16.2/sip/kutils/kplugininfo.sip PyKDE-3.16.3/sip/kutils/kplugininfo.sip
--- PyKDE-3.16.2/sip/kutils/kplugininfo.sip	2008-03-04 20:47:14.000000000 +0000
+++ PyKDE-3.16.3/sip/kutils/kplugininfo.sip	2009-06-10 21:47:59.000000000 +0100
@@ -126,7 +126,7 @@
     for (int i = 0; i < PyList_Size (sipPy); i++)
     {
         elem = PyList_GET_ITEM (sipPy, i);
-        cpp = (KPluginInfo *)sipForceConvertTo_KPluginInfo (elem, &iserr);
+        cpp = (KPluginInfo *)sipForceConvertToType(elem, sipType_KPluginInfo, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);
 
         if (iserr)
         {