Документация Python неофициальный перевод

Старый буферный протоколOld Buffer Protocol

Устарело с версии 3.0.

Эти функции были частью API «старого буферного протокола» в Python 2. В Python 3 этот протокол больше не существует, но функции всё ещё доступны для упрощения переноса кода из версии 2.x. Они работают как обёртка для совместимости вокруг нового буферного протокола, но не дают контроля над временем жизни ресурсов, захваченных при экспорте буфера.

Поэтому рекомендуется вызывать PyObject_GetBuffer() (или y* или w* коды формата с помощью PyArg_ParseTuple()) для получения буферного представления объекта и PyBuffer_Release(), когда это представление можно освободить.

int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)
Возвращает указатель на область памяти, доступную только для чтения, пригодную для ввода на основе символов. Аргумент obj должен поддерживать интерфейс односегментного символьного буфера. При успехе возвращает 0, устанавливает buffer на область памяти и buffer_len – длину буфера. При ошибке возвращает -1 и устанавливает TypeError.
int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
Возвращает указатель на область памяти только для чтения, содержащую произвольные данные. Аргумент obj должен поддерживать интерфейс односегментного читаемого буфера. При успехе возвращает 0, устанавливает buffer на область памяти и buffer_len – длину буфера. При ошибке возвращает -1 и устанавливает TypeError.
int PyObject_CheckReadBuffer(PyObject *o)
Возвращает 1, если o поддерживает интерфейс односегментного читаемого буфера. В противном случае возвращает 0.
int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
Возвращает указатель на область памяти, доступную для записи. Аргумент obj должен поддерживать интерфейс односегментного символьного буфера. При успехе возвращает 0, устанавливает buffer на область памяти и buffer_len – длину буфера. При ошибке возвращает -1 и устанавливает TypeError.