# Ancien Buffer Protocol

Obsolète depuis la version 3.0.

Ces fonctions faisaient partie de l’API de l’ancien protocole de tampons dans Python 2. Dans Python 3, ce protocole n’existe plus, mais les fonctions sont toujours exposées pour simplifier le portage de code Python 2.x. Elles se comportent comme une abstraction de compatibilité du nouveau protocole de tampons, mais sans vous donner de contrôle sur la durée de vie des ressources acquises lorsqu’un tampon est exporté.

Il est donc recommandé d’appeler `PyObject_GetBuffer()` (ou les codes `y*` ou `w*` à la famille de fonctions `PyArg_ParseTuple()`) pour obtenir une vue d’un tampon sur un objet, et `PyBuffer_Release()` lorsque la vue peut être libérée.

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

  Retourne un pointeur vers un emplacement de mémoire en lecture seule utilisable en tant qu’entrée basée sur des caractères. L’argument obj doit prendre en charge l’interface de tampon de caractère à segment unique. En cas de succès, retourne `0`, définit buffer à l’emplacement de la mémoire et buffer_len à la longueur de la mémoire tampon. Retourne `-1` et affecte une exception `TypeError` en cas d’erreur.

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

  Retourne un pointeur vers un emplacement de mémoire en lecture seule contenant des données arbitraires. L’argument obj doit prendre en charge l’interface de tampon lisible à segment unique. En cas de succès, retourne `0`, définit buffer à l’emplacement de la mémoire et buffer_len à la longueur de la mémoire tampon. Renvoie `-1` et affecte l’exception `TypeError` en cas d’erreur.

int `PyObject_CheckReadBuffer`(PyObject *o)

  Returns `1` if o supports the single-segment readable buffer interface. Otherwise returns `0`. This function always succeeds.

  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)

  Renvoie un pointeur vers un espace mémoire dans lequel il est possible décrire. L’argument obj doit gérer l’interface single-segment, character buffer. Si tout s’est bien passé, `0` est renvoyé, buffer pointe vers l’espace mémoire, et buffer_len vaudra la taille du tampon. Renvoie `-1` et met l’exception `TypeError` en cas d’erreur.