舊式緩衝協定 (Buffer Protocol)¶
在 3.0 版之後被棄用.
這些函式是 Python 2 中「舊式緩衝區協定」API 的一部分。在 Python 3 中,該協議已經不存在,但這些函式仍有公開以供移植 2.x 程式碼。它們充當新式緩衝區協定的相容性包裝器,但它們無法讓你控制匯出 (export) 緩衝區時所獲取資源的生命週期。
因此,建議你呼叫 PyObject_GetBuffer()
(或是以 y*
或 w*
格式碼 (format code) 呼叫 PyArg_ParseTuple()
系列函式)獲取物件的緩衝區視圖 (buffer view),以及緩衝區視圖可被釋放時呼叫 PyBuffer_Release()
。
-
int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)¶
- 属于 稳定 ABI.
回傳一個指向可用作基於字元輸入之唯讀記憶體位置的指標。 obj 引數必須支援單一片段 (single-segment) 字元緩衝區介面。成功時回傳
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.
如果 o 支援單一片段可讀緩衝區介面,則回傳
1
,否則回傳0
。這個函式一定會執行成功的。請注意,該函式嘗試獲取和釋放緩衝區,並且呼叫相應函式時發生的例外將被抑制。要獲取錯誤報告,請改用
PyObject_GetBuffer()
。
-
int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)¶
- 属于 稳定 ABI.
回傳指向可寫記憶體位置的指標。 obj 引數必須支援單一片段字元緩衝區介面。成功時回傳
0
,並將 buffer 設定為記憶體位置,且將 buffer_len 設定為緩衝區長度。回傳-1
並在錯誤時設定TypeError
。