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

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

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

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-битных систем.