Ancien Buffer Protocol

Obsolète depuis la version 3.0.

Ces fonctions faisaient partie de l’API de l’ancien protocol 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 resources 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)

Returns a pointer to a read-only memory location usable as character-based input. The obj argument must support the single-segment character buffer interface. On success, returns 0, sets buffer to the memory location and buffer_len to the buffer length. Returns -1 and sets a TypeError on error.

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

Returns a pointer to a read-only memory location containing arbitrary data. The obj argument must support the single-segment readable buffer interface. On success, returns 0, sets buffer to the memory location and buffer_len to the buffer length. Returns -1 and sets a TypeError on error.

int PyObject_CheckReadBuffer(PyObject *o)

Renvoie 1 si o gère l’interface single-segment readable buffer, 0 sinon.

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 buffer. Renvoie -1 et met l’exception TypeError en cas d’erreur.