Старий буферний протокол¶
Застаріло починаючи з версії 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)¶
- Part of the Stable ABI.
Повертає вказівник на місце пам’яті лише для читання, яке можна використовувати як символьне введення. Аргумент obj повинен підтримувати інтерфейс односегментного символьного буфера. У разі успіху повертає
0
, встановлює buffer у розташування пам’яті та buffer_len у значення довжини буфера. Повертає-1
і встановлюєTypeError
у разі помилки.
-
int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)¶
- Part of the Stable ABI.
Повертає вказівник на область пам’яті лише для читання, що містить довільні дані. Аргумент obj повинен підтримувати односегментний читабельний інтерфейс буфера. У разі успіху повертає
0
, встановлює buffer у розташування пам’яті та buffer_len у значення довжини буфера. Повертає-1
і встановлюєTypeError
у разі помилки.
-
int PyObject_CheckReadBuffer(PyObject *o)¶
- Part of the Stable ABI.
Повертає
1
, якщо o підтримує односегментний читабельний інтерфейс буфера. Інакше повертає0
. Ця функція завжди успішна.Зверніть увагу, що ця функція намагається отримати та звільнити буфер, а винятки, які виникають під час виклику відповідних функцій, будуть придушені. Щоб отримати звіт про помилку, замість цього використовуйте
PyObject_GetBuffer()
.
-
int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)¶
- Part of the Stable ABI.
Повертає вказівник на область пам’яті, доступну для запису. Аргумент obj повинен підтримувати односегментний інтерфейс символьного буфера. У разі успіху повертає
0
, встановлює buffer у розташування пам’яті та buffer_len у значення довжини буфера. Повертає-1
і встановлюєTypeError
у разі помилки.