Old Buffer Protocol —Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/c-api/objbuffer
移動先:案内検索

古いバッファプロトコル

バージョン3.0以降非推奨。


これらの関数は、Python2の「古いバッファプロトコル」APIの一部でした。 Python 3では、このプロトコルはもう存在しませんが、関数は2.xコードの移植を容易にするために公開されています。 これらは新しいバッファプロトコルの互換性ラッパーとして機能しますが、バッファのエクスポート時に取得されるリソースの存続期間を制御することはできません。

したがって、 PyObject_GetBuffer()(またはy*またはw* フォーマットコードを PyArg_ParseTuple()[ X157X]関数ファミリー)オブジェクトのバッファービューを取得し、バッファービューを解放できる場合は 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)

o が単一セグメントの読み取り可能なバッファインターフェイスをサポートしている場合、1を返します。 それ以外の場合は、0を返します。 この関数は常に成功します。

この関数はバッファの取得と解放を試み、対応する関数の呼び出し中に発生する例外が抑制されることに注意してください。 エラー報告を取得するには、代わりに PyObject_GetBuffer()を使用してください。

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
書き込み可能なメモリ位置へのポインタを返します。 obj 引数は、単一セグメントの文字バッファインターフェイスをサポートする必要があります。 成功すると、0を返し、 buffer をメモリ位置に設定し、 buffer_len をバッファ長に設定します。 -1を返し、エラー時に TypeError を設定します。