Protocolo de Buffer Antigo
**************************

Obsoleto desde a versão 3.0.

Essas funções faziam parte da  API do "protocolo de buffer antigo" no
Python 2. No Python 3, esse protocolo não existe mais, mas as funções
ainda estão expostas para facilitar a portabilidade do código 2.x.
Eles atuam como um wrapper de compatibilidade em torno do novo
protocolo de buffer, mas não oferecem controle sobre a vida útil dos
recursos adquiridos quando um buffer é exportado.

Portanto, é recomendável que você chame "PyObject_GetBuffer()" (ou os
códigos de formatação "y*" ou "w*" com o família de funções de
"PyArg_ParseTuple()") para obter uma visão de buffer sobre um objeto e
"PyBuffer_Release()" quando a visão de buffer puder ser liberada.

int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)

   Retorna um ponteiro para um local de memória somente leitura
   utilizável como entrada baseada em caracteres. O argumento *obj*
   deve ter suporte a interface do buffer de caracteres de segmento
   único. Em caso de sucesso, retorna "0", define *buffer* com local
   da memória e *buffer_len* com o tamanho do buffer. Retorna "-1" e
   define a "TypeError" em caso de erro.

int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)

   Retorna um ponteiro para um local de memória somente leitura que
   contém dados arbitrários. O argumento *obj* deve ter suporte à
   interface de buffer legível de segmento único. Em caso de sucesso,
   retorna "0", define *buffer* com o local da memória e *buffer_len*
   com o tamanho do buffer. Retorna "-1" e define a "TypeError" em
   caso de erro.

int PyObject_CheckReadBuffer(PyObject *o)

   Retorna "1" se *o* tiver suporte a interface de buffer legível de
   segmento único. Caso contrário, retorna "0". Esta função sempre tem
   sucesso.

   Note that this function tries to get and release a buffer, and
   exceptions which occur while calling correspoding functions will
   get suppressed. To get error reporting use "PyObject_GetBuffer()"
   instead.

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)

   Retorna um ponteiro para um local de memória gravável. O argumento
   *obj* deve ter suporte a interface de buffer de caracteres de
   segmento único. Em caso de sucesso, retorna "0", define *buffer*
   com o local da memória e *buffer_len* com o comprimento do buffer.
   Retorna "-1" e define a "TypeError" em caso de erro.
