Старий буферний протокол¶
Застаріло починаючи з версії 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
у разі помилки.