Старый протокол буфера
Устарело начиная с версии 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.10/c-api/objbuffer.html