Старый протокол буфера
Устарело начиная с версии 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) -
Возвращает указатель на местоположение в памяти для чтения, которое можно использовать в качестве ввода на основе символов. Аргумент obj должен поддерживать интерфейс односегментного буфера символов. При успехе возвращает
0, устанавливает buffer на местоположение в памяти и buffer_len на длину буфера. Возвращает-1и устанавливаетTypeErrorпри ошибке.
-
int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len) -
Возвращает указатель на местоположение в памяти для чтения, содержащее произвольные данные. Аргумент obj должен поддерживать интерфейс односегментного буфера для чтения. При успехе возвращает
0, устанавливает buffer на местоположение в памяти и buffer_len на длину буфера. Возвращает-1и устанавливаетTypeErrorпри ошибке.
-
int PyObject_CheckReadBuffer(PyObject *o) -
Возвращает
1если o поддерживает интерфейс односегментного буфера для чтения. В противном случае возвращает0. Эта функция всегда выполняется успешно.Обратите внимание, что эта функция пытается получить и освободить буфер, и исключения, возникающие при вызове соответствующих функций, будут подавлены. Для получения отчёта об ошибках используйте
PyObject_GetBuffer()вместо этого.
-
int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len) -
Возвращает указатель на местоположение в памяти для записи. Аргумент obj должен поддерживать интерфейс односегментного буфера символов. При успехе возвращает
0, устанавливает buffer на местоположение в памяти и buffer_len на длину буфера. Возвращает-1и устанавливаетTypeErrorпри ошибке.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/c-api/objbuffer.html