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);