int _size = PySequence_Size(%PYARG_2);
if (_size) {
$ATTR_TYPE *_list = new $ATTR_TYPE[_size];
if (_size) {
Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_2, "Failed to parse sequence with type %VECTOR_TYPE."));
for(int i=0; i < _size; i++) {
PyObject* pv = PySequence_Fast_GET_ITEM(fast.object(), i);
_list[i] = %CONVERTTOCPP[$ATTR_TYPE](pv);
}
}
%CPPSELF.%FUNCTION_NAME(%1, _list, $ARG0);
delete[] _list;
} else {
%CPPSELF.%FUNCTION_NAME(%1, ($ATTR_TYPE*)NULL, $ARG1);
}
int size = %2;
if (size < 0)
size = %1.size();
%CPPSELF.allocate((const void*) %1.data(), size);
Py_ssize_t dataSize = %CPPSELF.size();
void* data = %CPPSELF.map(%1);
if (!data) {
Py_INCREF(Py_None);
%PYARG_0 = Py_None;
} else if (%1 == QGLBuffer::ReadOnly) {
%PYARG_0 = Shiboken::Buffer::newObject(data, dataSize, Shiboken::Buffer::ReadOnly);
} else {
%PYARG_0 = Shiboken::Buffer::newObject(data, dataSize, Shiboken::Buffer::ReadWrite);
}
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);