Hi all,
Im trying to slowly wean myself over to the buffer interfaces.
My exploration so far indicates that, for most cases, simply replacing
"PyString_FromStringAndSize" with "PyBuffer_FromMemory" handles the vast
majority of cases, and is preferred when the data contains arbitary bytes.
PyArg_ParseTuple("s#", ...) still works correctly as we would hope.
However, performing this explicitly is a pain. Looking at getargs.c, the
code to achieve this is a little too convoluted to cut-and-paste each time.
Therefore, I would like to propose these functions to be added to
abstract.c:
int PyObject_GetBufferSize();
void *PyObject_GetReadWriteBuffer(); /* or "char *"? */
const void *PyObject_GetReadOnlyBuffer();
Although equivalent functions exist for the buffer object, I can't see the
equivalent abstract implementations - ie, that work with any object
supporting the protocol.
Im willing to provide a patch if there is agreement a) the general idea is
good, and b) my specific spelling of the idea is OK (less likely -
PyBuffer_* seems better, but loses any implication of being abstract?).
Thoughts?
Mark.
Im trying to slowly wean myself over to the buffer interfaces.
My exploration so far indicates that, for most cases, simply replacing
"PyString_FromStringAndSize" with "PyBuffer_FromMemory" handles the vast
majority of cases, and is preferred when the data contains arbitary bytes.
PyArg_ParseTuple("s#", ...) still works correctly as we would hope.
However, performing this explicitly is a pain. Looking at getargs.c, the
code to achieve this is a little too convoluted to cut-and-paste each time.
Therefore, I would like to propose these functions to be added to
abstract.c:
int PyObject_GetBufferSize();
void *PyObject_GetReadWriteBuffer(); /* or "char *"? */
const void *PyObject_GetReadOnlyBuffer();
Although equivalent functions exist for the buffer object, I can't see the
equivalent abstract implementations - ie, that work with any object
supporting the protocol.
Im willing to provide a patch if there is agreement a) the general idea is
good, and b) my specific spelling of the idea is OK (less likely -
PyBuffer_* seems better, but loses any implication of being abstract?).
Thoughts?
Mark.