Updated code injections to use Shiboken updates regarding type system variables.

Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
Marcelo Lira 2009-12-08 14:38:52 -03:00
commit b9ca1774f7
4 changed files with 49 additions and 62 deletions

View file

@ -1,4 +1,4 @@
PyObject* PyQCoreApplication_New(PyTypeObject *type, PyObject *args, PyObject*) PyObject* SbkQCoreApplication_New(PyTypeObject *type, PyObject *args, PyObject*)
{ {
int numArgs = PyTuple_GET_SIZE(args); int numArgs = PyTuple_GET_SIZE(args);
if (numArgs != 1) { if (numArgs != 1) {
@ -6,7 +6,6 @@ PyObject* PyQCoreApplication_New(PyTypeObject *type, PyObject *args, PyObject*)
return 0; return 0;
} }
char** argv; char** argv;
int argc; int argc;
if (!PySequence_to_argc_argv(PyTuple_GET_ITEM(args, 0), &argc, &argv)) { if (!PySequence_to_argc_argv(PyTuple_GET_ITEM(args, 0), &argc, &argv)) {
@ -15,7 +14,7 @@ PyObject* PyQCoreApplication_New(PyTypeObject *type, PyObject *args, PyObject*)
} }
QCoreApplication* cptr = new QCoreApplication(argc, argv); QCoreApplication* cptr = new QCoreApplication(argc, argv);
PyObject* self = Shiboken::PyBaseWrapper_New(type, cptr); PyObject* self = Shiboken::SbkBaseWrapper_New(type, cptr);
if (!self) { if (!self) {
if (cptr) delete cptr; if (cptr) delete cptr;

View file

@ -2,9 +2,9 @@ inline bool Converter< QString >::isConvertible(PyObject* pyobj)
{ {
return PyString_Check(pyobj) return PyString_Check(pyobj)
|| PyUnicode_Check(pyobj) || PyUnicode_Check(pyobj)
|| PyQByteArray_Check(pyobj) || SbkQByteArray_Check(pyobj)
|| PyQLatin1String_Check(pyobj) || SbkQLatin1String_Check(pyobj)
|| PyQChar_Check(pyobj); || SbkQChar_Check(pyobj);
} }
inline QString* Converter<QString >::copyCppObject(const QString& cppobj) inline QString* Converter<QString >::copyCppObject(const QString& cppobj)
@ -19,11 +19,11 @@ inline PyObject* Converter< QString >::toPython(const QString& cppobj)
inline QString Converter< QString >::toCpp(PyObject* pyobj) inline QString Converter< QString >::toCpp(PyObject* pyobj)
{ {
if (PyQChar_Check(pyobj)) { if (SbkQChar_Check(pyobj)) {
return QString(Converter< QChar >::toCpp(pyobj)); return QString(Converter< QChar >::toCpp(pyobj));
} else if (PyQByteArray_Check(pyobj)) { } else if (SbkQByteArray_Check(pyobj)) {
return QString(Converter< QByteArray >::toCpp(pyobj)); return QString(Converter< QByteArray >::toCpp(pyobj));
} else if (PyQLatin1String_Check(pyobj)) { } else if (SbkQLatin1String_Check(pyobj)) {
return QString(Converter< QLatin1String >::toCpp(pyobj)); return QString(Converter< QLatin1String >::toCpp(pyobj));
} else if (PyUnicode_Check(pyobj)) { } else if (PyUnicode_Check(pyobj)) {
Py_UNICODE* unicode = PyUnicode_AS_UNICODE(pyobj); Py_UNICODE* unicode = PyUnicode_AS_UNICODE(pyobj);
@ -34,5 +34,5 @@ inline QString Converter< QString >::toCpp(PyObject* pyobj)
#endif #endif
} else if (PyString_Check(pyobj)) } else if (PyString_Check(pyobj))
return QString(Converter< char * >::toCpp(pyobj)); return QString(Converter< char * >::toCpp(pyobj));
return *PyQString_cptr(pyobj); return *SbkQString_cptr(pyobj);
} }

View file

@ -953,7 +953,7 @@
<add-function signature="__str__()" return-type="PyObject*"> <add-function signature="__str__()" return-type="PyObject*">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
QByteArray utf8 = %CPPSELF.toUtf8(); QByteArray utf8 = %CPPSELF.toUtf8();
%0 = PyUnicode_DecodeUTF8(utf8.data(), utf8.count(), 0); %PYARG_0 = PyUnicode_DecodeUTF8(utf8.data(), utf8.count(), 0);
</inject-code> </inject-code>
</add-function> </add-function>
<add-function signature="__len__"> <add-function signature="__len__">
@ -973,11 +973,9 @@
<add-function signature="__setitem__"> <add-function signature="__setitem__">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
PyObject* args = Py_BuildValue("(nO)", _i, _value); PyObject* args = Py_BuildValue("(nO)", _i, _value);
PyObject* result = PyQString_replace(self, args); PyObject* result = SbkQString_replace(self, args);
Py_DECREF(args); Py_DECREF(args);
if (result) { Py_XDECREF(result);
Py_DECREF(result);
}
return !result ? -1 : 0; return !result ? -1 : 0;
</inject-code> </inject-code>
</add-function> </add-function>
@ -1121,23 +1119,20 @@
</add-function> </add-function>
<add-function signature="__getitem__"> <add-function signature="__getitem__">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
if (_i &lt; 0 || _i >= %CPPSELF.size()) { if (_i &lt; 0 || _i >= %CPPSELF.size()) {
PyErr_SetString(PyExc_IndexError, "index out of bounds"); PyErr_SetString(PyExc_IndexError, "index out of bounds");
return 0; return 0;
} else { }
return %CONVERTTOPYTHON[bool](%CPPSELF.at(_i)); return %CONVERTTOPYTHON[bool](%CPPSELF.at(_i));
}
</inject-code> </inject-code>
</add-function> </add-function>
<add-function signature="__setitem__"> <add-function signature="__setitem__">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
PyObject* args = Py_BuildValue("(iiO)", _i, 1, _value); PyObject* args = Py_BuildValue("(iiO)", _i, 1, _value);
PyObject* result = PyQBitArray_setBit(self, args); PyObject* result = SbkQBitArray_setBit(self, args);
Py_DECREF(args); Py_DECREF(args);
if (result) { Py_XDECREF(result);
Py_DECREF(result); return !result ? -1 : 0;
}
return !result ? -1 : 0;
</inject-code> </inject-code>
</add-function> </add-function>
</value-type> </value-type>
@ -1176,7 +1171,7 @@
</modify-function> </modify-function>
<add-function signature="createIndex(int,int,PyObject*)const" return-type="QModelIndex"> <add-function signature="createIndex(int,int,PyObject*)const" return-type="QModelIndex">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
%0 = %CONVERTTOPYTHON[%RETURN_TYPE](%CPPSELF.%FUNCTION_NAME(%1, %2, %PYARG_3)); %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%CPPSELF.%FUNCTION_NAME(%1, %2, %PYARG_3));
</inject-code> </inject-code>
</add-function> </add-function>
@ -1254,7 +1249,7 @@
<modify-function signature="inherits(const char*) const"> <modify-function signature="inherits(const char*) const">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
bool retval = PyObject_inherits_internal(self->ob_type, %1) ? true : %CPPSELF.%FUNCTION_NAME(%1); bool retval = PyObject_inherits_internal(self->ob_type, %1) ? true : %CPPSELF.%FUNCTION_NAME(%1);
%0 = %CONVERTTOPYTHON[bool](retval); %PYARG_0 = %CONVERTTOPYTHON[bool](retval);
</inject-code> </inject-code>
</modify-function> </modify-function>
<!-- findChildren and findChild causes warnings using generator. They were kept <!-- findChildren and findChild causes warnings using generator. They were kept
@ -1272,7 +1267,7 @@
PyObject* obj = %CONVERTTOPYTHON[QObject*](o); PyObject* obj = %CONVERTTOPYTHON[QObject*](o);
Shiboken::setParent(self, obj); Shiboken::setParent(self, obj);
if (PyType_IsSubtype(obj->ob_type, (PyTypeObject*)%PYARG_1)) if (PyType_IsSubtype(obj->ob_type, (PyTypeObject*)%PYARG_1))
%0 = obj; %PYARG_0 = obj;
else else
Py_DECREF(obj); Py_DECREF(obj);
} }
@ -1281,7 +1276,7 @@
</add-function> </add-function>
<add-function signature="findChildren(PyTypeObject*, const QString&amp;)" return-type="PySequence*" > <add-function signature="findChildren(PyTypeObject*, const QString&amp;)" return-type="PySequence*" >
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
%0 = PyList_New(0); %PYARG_0 = PyList_New(0);
const char* type_name = %PYARG_1->ob_type->tp_name; const char* type_name = %PYARG_1->ob_type->tp_name;
const bool isEmpty = %2.isEmpty(); const bool isEmpty = %2.isEmpty();
foreach(QObject* o, %CPPSELF.children()) { foreach(QObject* o, %CPPSELF.children()) {
@ -1289,7 +1284,7 @@
PyObject* obj = %CONVERTTOPYTHON[QObject*](o); PyObject* obj = %CONVERTTOPYTHON[QObject*](o);
Shiboken::setParent(self, obj); Shiboken::setParent(self, obj);
if (PyType_IsSubtype(obj->ob_type, (PyTypeObject*)%PYARG_1)) if (PyType_IsSubtype(obj->ob_type, (PyTypeObject*)%PYARG_1))
PyList_Append(%0, obj); PyList_Append(%PYARG_0, obj);
Py_DECREF(obj); Py_DECREF(obj);
} }
} }
@ -1387,23 +1382,20 @@
</add-function> </add-function>
<add-function signature="__getitem__"> <add-function signature="__getitem__">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
if (_i &lt; 0 || _i >= %CPPSELF.size()) { if (_i &lt; 0 || _i >= %CPPSELF.size()) {
PyErr_SetString(PyExc_IndexError, "index out of bounds"); PyErr_SetString(PyExc_IndexError, "index out of bounds");
return 0; return 0;
} else { }
return Converter&lt;QString>::createWrapper(new QString(%CPPSELF.at(_i))); return %CONVERTTOPYTHON[%TYPE](%CPPSELF.at(_i));
}
</inject-code> </inject-code>
</add-function> </add-function>
<add-function signature="__setitem__"> <add-function signature="__setitem__">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
PyObject* args = Py_BuildValue("(iiO)", _i, 1, _value); PyObject* args = Py_BuildValue("(nO)", _i, _value);
PyObject* result = PyQStringList_replace(self, args); PyObject* result = SbkQStringList_replace(self, args);
Py_DECREF(args); Py_DECREF(args);
if (result) { Py_XDECREF(result);
Py_DECREF(result); return !result ? -1 : 0;
}
return !result ? -1 : 0;
</inject-code> </inject-code>
</add-function> </add-function>
</value-type> </value-type>
@ -1635,11 +1627,9 @@
<add-function signature="__setitem__"> <add-function signature="__setitem__">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
PyObject* args = Py_BuildValue("(iiO)", _i, 1, _value); PyObject* args = Py_BuildValue("(iiO)", _i, 1, _value);
PyObject* result = PyQByteArray_replace(self, args); PyObject* result = SbkQByteArray_replace(self, args);
Py_DECREF(args); Py_DECREF(args);
if (result) { Py_XDECREF(result);
Py_DECREF(result);
}
return !result ? -1 : 0; return !result ? -1 : 0;
</inject-code> </inject-code>
</add-function> </add-function>
@ -1986,11 +1976,9 @@
<object-type name="QDynamicPropertyChangeEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::DynamicPropertyChange"/> <object-type name="QDynamicPropertyChangeEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::DynamicPropertyChange"/>
<template name="stream_read_method"> <template name="stream_read_method">
%RETURN_TYPE _result; %RETURN_TYPE _cpp_result;
PyObject *_pyresult; (*%CPPSELF) &gt;&gt; _cpp_result;
(*%CPPSELF) &gt;&gt; _result; %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](_cpp_result);
_pyresult = Shiboken::Converter&lt; %RETURN_TYPE &gt;::toPython(_result);
return _pyresult;
</template> </template>
<template name="stream_write_method"> <template name="stream_write_method">
@ -2264,10 +2252,10 @@
<value-type name="QModelIndex"> <value-type name="QModelIndex">
<modify-function signature="internalPointer()const"> <modify-function signature="internalPointer()const">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
%0 = (PyObject*)%CPPSELF.%FUNCTION_NAME(); %PYARG_0 = (PyObject*)%CPPSELF.%FUNCTION_NAME();
if (!%0) if (!%PYARG_0)
%0 = Py_None; %PYARG_0 = Py_None;
Py_XINCREF(%0); Py_XINCREF(%PYARG_0);
</inject-code> </inject-code>
</modify-function> </modify-function>
</value-type> </value-type>

View file

@ -5,17 +5,17 @@
<template name="fix_bool*"> <template name="fix_bool*">
bool ok_; bool ok_;
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_);
%0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[%RETURN_TYPE](ok_)); %PYARG_0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[%RETURN_TYPE](ok_));
</template> </template>
<template name="fix_args,bool*"> <template name="fix_args,bool*">
bool ok_; bool ok_;
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;ok_); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;ok_);
%0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[%RETURN_TYPE](ok_)); %PYARG_0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[%RETURN_TYPE](ok_));
</template> </template>
<template name="fix_arg,bool*,arg"> <template name="fix_arg,bool*,arg">
bool ok_; bool ok_;
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &amp;ok_, %3); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &amp;ok_, %3);
%0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[%RETURN_TYPE](ok_)); %PYARG_0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[%RETURN_TYPE](ok_));
</template> </template>
</typesystem> </typesystem>