Документация 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)
Часть Stable ABI.

Возвращает указатель на область памяти только для чтения, пригодную для ввода на основе символов. Аргумент obj должен поддерживать интерфейс односегментного символьного буфера. При успехе возвращает 0, устанавливает buffer на эту область памяти, а buffer_len – на длину буфера. В случае ошибки возвращает -1 и устанавливает TypeError.

int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
Часть Stable ABI.

Возвращает указатель на область памяти только для чтения, содержащую произвольные данные. Аргумент obj должен поддерживать интерфейс односегментного читаемого буфера. При успехе возвращает 0, устанавливает buffer на эту область памяти, а buffer_len – на длину буфера. В случае ошибки возвращает -1 и устанавливает TypeError.

int PyObject_CheckReadBuffer(PyObject *o)
Часть Stable ABI.

Возвращает 1, если o поддерживает интерфейс односегментного читаемого буфера. В противном случае возвращает 0. Эта функция всегда завершается успешно.

Обратите внимание, что эта функция пытается получить и освободить буфер, а исключения, возникающие при вызове соответствующих функций, подавляются. Чтобы получать сообщения об ошибках, используйте вместо неё PyObject_GetBuffer().

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
Часть Stable ABI.

Возвращает указатель на область памяти для записи. Аргумент obj должен поддерживать односегментный символьный интерфейс буфера. При успехе возвращает 0, устанавливает buffer на эту область памяти, а buffer_len – на длину буфера. В случае ошибки возвращает -1 и устанавливает TypeError.