From f1c7c786943e66e45a632491192a8b4a40da45e3 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Wed, 1 Jun 2011 15:40:48 -0300 Subject: Port all buffer related code to the new Shiboken buffer interface. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Renato Araújo Luciano Wolf --- PySide/QtCore/typesystem_core.xml | 55 +++++++++++----------------------- PySide/QtGui/typesystem_gui_common.xml | 43 ++++++++++---------------- PySide/QtOpenGL/typesystem_opengl.xml | 4 +-- 3 files changed, 36 insertions(+), 66 deletions(-) (limited to 'PySide') diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 2e1cbad48..20946454a 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -518,9 +518,9 @@ - const uchar* d = %CPPSELF.%FUNCTION_NAME(); + const void* d = %CPPSELF.%FUNCTION_NAME(); if (d) { - %PYARG_0 = PyBuffer_FromMemory(const_cast<uchar*>(d), %CPPSELF.size()); + %PYARG_0 = Shiboken::Buffer::newObject(d, %CPPSELF.size()); } else { Py_INCREF(Py_None); %PYARG_0 = Py_None; @@ -528,21 +528,13 @@ - + @@ -550,7 +542,7 @@ - + @@ -1968,15 +1960,13 @@ - const void* ptr; - Py_ssize_t len; - PyObject_AsReadBuffer(%PYARG_1, &ptr, &len); - %PYARG_0 = %CONVERTTOPYTHON[bool](%CPPSELF.%FUNCTION_NAME((uchar*)ptr)); + uchar* ptr = (uchar*) Shiboken::Buffer::getPointer(%PYARG_1); + %PYARG_0 = %CONVERTTOPYTHON[bool](%CPPSELF.%FUNCTION_NAME(ptr)); - %PYARG_0 = PyBuffer_FromReadWriteMemory(%CPPSELF.%FUNCTION_NAME(%1, %2, %3), %2); + %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1, %2, %3), %2, Shiboken::Buffer::ReadWrite); @@ -2175,22 +2165,15 @@ - + - PyTypeObject* pyType = %PYARG_1->ob_type; - if (pyType->tp_as_buffer - && pyType->tp_as_buffer->bf_getreadbuffer - && pyType->tp_as_buffer->bf_getsegcount(%PYARG_1, 0) == 1) { - void* ptr; - Py_ssize_t size = pyType->tp_as_buffer->bf_getreadbuffer(%PYARG_1, 0, &ptr); - %PYARG_0 = %CONVERTTOPYTHON[bool](%CPPSELF.%FUNCTION_NAME(const_cast<const uchar*>((uchar*)ptr), size)); - } else { - PyErr_SetString(PyExc_TypeError, "The object must support buffer protocol with just one segment."); - } + Py_ssize_t size; + uchar* ptr = (uchar*) Shiboken::Buffer::getPointer(%PYARG_1, &size); + %PYARG_0 = %CONVERTTOPYTHON[bool](%CPPSELF.%FUNCTION_NAME(const_cast<const uchar*>(ptr), size)); @@ -2309,15 +2292,13 @@ - const void* ptr; - Py_ssize_t len; - PyObject_AsReadBuffer(%PYARG_1, &ptr, &len); - %PYARG_0 = %CONVERTTOPYTHON[bool](%CPPSELF.%FUNCTION_NAME((uchar*)ptr)); + uchar* ptr = (uchar*)Shiboken::Buffer::getPointer(%PYARG_1); + %PYARG_0 = %CONVERTTOPYTHON[bool](%CPPSELF.%FUNCTION_NAME(ptr)); - %PYARG_0 = PyBuffer_FromReadWriteMemory(%CPPSELF.%FUNCTION_NAME(%1, %2, %3), %2); + %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1, %2, %3), %2, Shiboken::Buffer::ReadWrite); @@ -2983,8 +2964,8 @@ - - + + diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 5ff06da5e..523dae9ef 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -415,13 +415,11 @@ - + - const void* buffer; - Py_ssize_t size; - if (PyObject_AsReadBuffer(%PYARG_2, &buffer, &size) != -1) - %PYARG_0 = %CONVERTTOPYTHON[QBitmap](QBitmap::fromData(%1, (const uchar*)buffer, %3)); + uchar* buffer = (uchar*) Shiboken::Buffer::getPointer(%PYARG_2); + %PYARG_0 = %CONVERTTOPYTHON[QBitmap](QBitmap::fromData(%1, buffer, %3)); @@ -553,25 +551,24 @@ - %PYARG_0 = PyBuffer_FromMemory(const_cast<char*>(%CPPSELF.data()), %CPPSELF.size()); + %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.data(), %CPPSELF.size()); - PyObject *%out = PyBuffer_FromMemory(const_cast<char*>(%in), size); + PyObject* %out = Shiboken::Buffer::newObject(%in, size); - const char *%out; - Py_ssize_t buffer_len; - PyObject_AsCharBuffer(arg, &%out, &buffer_len); + Py_ssize_t bufferLen; + char* %out = (char*) Shiboken::Buffer::getPointer(arg, &bufferLen); - uint %out = buffer_len; + uint %out = bufferLen; @@ -975,20 +972,12 @@ - + @@ -998,7 +987,7 @@ - + @@ -1054,23 +1043,23 @@ - %PYARG_0 = PyBuffer_FromMemory(const_cast<uchar*>(%CPPSELF.%FUNCTION_NAME()), %CPPSELF.byteCount()); + %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.byteCount()); // byteCount() is only available on Qt4.7, so we use bytesPerLine * height - %PYARG_0 = PyBuffer_FromReadWriteMemory(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.bytesPerLine() * %CPPSELF.height()); + %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.bytesPerLine() * %CPPSELF.height(), Shiboken::Buffer::ReadWrite); - %PYARG_0 = PyBuffer_FromMemory(const_cast<uchar*>(%CPPSELF.%FUNCTION_NAME(%1)), %CPPSELF.bytesPerLine()); + %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine()); - %PYARG_0 = PyBuffer_FromReadWriteMemory(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine()); + %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine(), Shiboken::Buffer::ReadWrite);