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)
    * Part of the Stable ABI.*

   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)
    * Part of the Stable ABI.*

   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)
    * Part of the Stable ABI.*

   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)
    * Part of the Stable ABI.*

   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.
