Protocolo de búfer antiguo¶
Obsoleto desde la versión 3.0.
Estas funciones formaban parte de la API del «antiguo protocolo de búfer» en Python 2. En Python 3, este protocolo ya no existe, pero las funciones aún están expuestas para facilitar la transferencia del código 2.x. Actúan como una envoltura de compatibilidad alrededor del nuevo protocolo de búfer, pero no le dan control sobre la vida útil de los recursos adquiridos cuando se exporta un búfer.
Por lo tanto, se recomienda que llame PyObject_GetBuffer()
(o y*``o ``w*
format codes con la familia de funciones PyArg_ParseTuple()
) para obtener una vista de búfer sobre un objeto, y PyBuffer_Release()
cuando se puede liberar la vista de búfer.
-
int
PyObject_AsCharBuffer
(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)¶ Retorna un puntero a una ubicación de memoria de solo lectura que se puede usar como entrada basada en caracteres. El argumento obj debe admitir la interfaz de búfer de caracteres de segmento único. En caso de éxito, retorna
0
, establece buffer en la ubicación de memoria y buffer_len en la longitud del búfer. Retorna-1
y lanzaTypeError
en caso de error.
-
int
PyObject_AsReadBuffer
(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)¶ Retorna un puntero a una ubicación de memoria de solo lectura que contiene datos arbitrarios. El argumento obj debe admitir la interfaz de búfer legible de segmento único. En caso de éxito, retorna
0
, establece buffer en la ubicación de memoria y buffer_len en la longitud del búfer. Retorna-1
y lanza unTypeError
en caso de error.
-
int
PyObject_CheckReadBuffer
(PyObject *o)¶ Retorna
1
si o admite la interfaz de búfer legible de segmento único. De lo contrario, retorna0
. Esta función siempre finaliza con éxito.Tenga en cuenta que esta función intenta obtener y liberar un búfer, y las excepciones que se producen al llamar a las funciones correspondientes se suprimirán. Para obtener informes de errores, utilice
PyObject_GetBuffer()
en su lugar.
-
int
PyObject_AsWriteBuffer
(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)¶ Retorna un puntero a una ubicación de memoria de escritura. El argumento obj debe admitir la interfaz de búfer de caracteres de segmento único. En caso de éxito, retorna
0
, establece buffer en la ubicación de memoria y buffer_len en la longitud del búfer. Retorna-1
y lanza unTypeError
en caso de error.