# 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 lanza `TypeError` 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 un `TypeError` 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, retorna `0`. 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 un `TypeError` en caso de error.