diff options
| -rw-r--r-- | sources/pyside6/PySide6/QtCore/typesystem_core_common.xml | 6 | ||||
| -rw-r--r-- | sources/pyside6/PySide6/glue/qtcore.cpp | 10 | ||||
| -rw-r--r-- | sources/pyside6/tests/QtCore/qdatastream_test.py | 10 |
3 files changed, 26 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml index e92680b68..f1d3609b0 100644 --- a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml +++ b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml @@ -2738,12 +2738,18 @@ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/> </add-function> <modify-function signature="readRawData(char*,int)"> + <modify-argument index="return" pyi-type="bytes"/> <modify-argument index="1"> <remove-argument /> </modify-argument> <inject-code class="target" file="../glue/qtcore.cpp" snippet="qdatastream-readrawdata"/> </modify-function> + <add-function signature="writeRawData(PyBuffer)"> + <inject-code class="target" position="beginning" + file="../glue/qtcore.cpp" snippet="qdatastream-writerawdata-pybuffer"/> + </add-function> <modify-function signature="writeRawData(const char*,int)"> + <modify-argument index="1" pyi-type="str"/> <modify-argument index="2"> <remove-argument /> </modify-argument> diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp index be91aa4ad..1256723af 100644 --- a/sources/pyside6/PySide6/glue/qtcore.cpp +++ b/sources/pyside6/PySide6/glue/qtcore.cpp @@ -1110,6 +1110,16 @@ if (result == -1) { } // @snippet qdatastream-readrawdata +// @snippet qdatastream-writerawdata-pybuffer +int r = 0; +Py_BEGIN_ALLOW_THREADS +Py_ssize_t bufferLen; +auto *data = reinterpret_cast<const char*>(Shiboken::Buffer::getPointer(%PYARG_1, &bufferLen)); +r = %CPPSELF.%FUNCTION_NAME(data, bufferLen); +Py_END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](r); +// @snippet qdatastream-writerawdata-pybuffer + // @snippet qdatastream-writerawdata int r = 0; Py_BEGIN_ALLOW_THREADS diff --git a/sources/pyside6/tests/QtCore/qdatastream_test.py b/sources/pyside6/tests/QtCore/qdatastream_test.py index 9ec69076b..517f466aa 100644 --- a/sources/pyside6/tests/QtCore/qdatastream_test.py +++ b/sources/pyside6/tests/QtCore/qdatastream_test.py @@ -296,6 +296,16 @@ class QDataStreamBuffer(unittest.TestCase): data = QDataStream(ba) self.assertEqual(data.readRawData(4), bytes('AB\x00C', "UTF-8")) + def testRawDataBytes(self): + test_data = b'AB\0' + data = QDataStream() + ba = QByteArray() + data = QDataStream(ba, QIODevice.WriteOnly) + data.writeRawData(test_data) + self.assertEqual(ba.data(), test_data) + data = QDataStream(ba) + self.assertEqual(data.readRawData(3), test_data) + def testBytes(self): dataOne = QDataStream() self.assertEqual(dataOne.readBytes(4), None) |
