int size = %2; if (size < 0) size = %1.size(); %CPPSELF.allocate((const void*) %1.data(), size); void *data = %CPPSELF.map(%1); QByteArray ret; if (data) ret.append((const char*)data, %CPPSELF.size()); %PYARG_0 = %CONVERTTOPYTHON[QByteArray](ret); char *data = new char[%3]; bool result = %CPPSELF.read(%1, data, %3); QByteArray ret; if (result) ret.append((const char*)data, %3); %PYARG_0 = Shiboken::makeTuple(result, ret); delete[] data; int size = %3; if (size < 0) size = %2.size(); %CPPSELF.write(%1, (const void*) %2.data(), size);