Spec-Zone.ru › Python 3.11

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

Устарело начиная с версии 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/c-api/objbuffer.html

Spec-Zone.ru

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