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