Spec-Zone.ru › Python 3.12

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

Устарело начиная с версии 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)
Часть стабильной ABI.

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

int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
Часть стабильной ABI.

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

int PyObject_CheckReadBuffer(PyObject *o)
Часть стабильной ABI.

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

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

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
Часть стабильной ABI.

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

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/objbuffer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API