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

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

В этом разделе описывается устаревший буферный протокол, который был введён в Python 1.6. Он всё ещё поддерживается, но считается устаревшим в серии Python 2.x. В Python 3.0 введён новый буферный протокол, устраняющий недостатки и слабые места старого протокола; этот новый протокол был портирован обратно в Python 2.6. См. Буферные объекты для получения дополнительной информации.

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

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

Новое в версии 1.6.

Изменено в версии 2.5: Эта функция использовала тип int * для buffer_len. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

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

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

Новое в версии 1.6.

Изменено в версии 2.5: Эта функция использовала тип int * для buffer_len. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

int PyObject_CheckReadBuffer(PyObject *o)

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

Новое в версии 2.2.

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

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

Новое в версии 1.6.

Изменено в версии 2.5: Эта функция использовала тип int * для buffer_len. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.