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

  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 o local da memória e buffer_len com o comprimento 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)
  Part of the Stable ABI.

  Retorna um ponteiro para um local de memória somente leitura que contém dados arbitrários. O argumento obj deve ter suporte a 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 comprimento do buffer. Retorna `-1` e define a `TypeError` em caso de erro.

int `PyObject_CheckReadBuffer`(PyObject *o)
  Part of the Stable ABI.

  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.

  Observe que esta função tenta obter e liberar um buffer, e as exceções que ocorrem ao chamar as funções correspondentes serão suprimidas. Para obter o relatório de erros, use `PyObject_GetBuffer()` em vez disso.

int `PyObject_AsWriteBuffer`(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
  Part of the Stable ABI.

  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.