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