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

Не рекомендуется, начиная с версии 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. Эта функция всегда выполняется успешно.

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

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)

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