古いバッファプロトコル
このセクションでは、Python1.6で導入されたレガシーバッファプロトコルについて説明します。 引き続きサポートされていますが、Python2.xシリーズでは非推奨です。 Python 3では、プロトコルの弱点と欠点を修正する新しいバッファプロトコルが導入され、Python2.6にバックポートされています。 詳細については、バッファとメモリビューオブジェクトを参照してください。
- int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)
文字ベースの入力として使用可能な読み取り専用メモリ位置へのポインタを返します。 obj 引数は、単一セグメントの文字バッファインターフェイスをサポートする必要があります。 成功すると、
0
を返し、 buffer をメモリ位置に設定し、 buffer_len をバッファ長に設定します。-1
を返し、エラー時にTypeError
を設定します。バージョン1.6の新機能。
バージョン2.5で変更:この関数は、 buffer_len に
int *
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
任意のデータを含む読み取り専用メモリ位置へのポインタを返します。 obj 引数は、単一セグメントの読み取り可能なバッファーインターフェイスをサポートする必要があります。 成功すると、
0
を返し、 buffer をメモリ位置に設定し、 buffer_len をバッファ長に設定します。-1
を返し、エラー時にTypeError
を設定します。バージョン1.6の新機能。
バージョン2.5で変更:この関数は、 buffer_len に
int *
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。
- int PyObject_CheckReadBuffer(PyObject *o)
o が単一セグメントの読み取り可能なバッファインターフェイスをサポートしている場合、
1
を返します。 それ以外の場合は、0
を返します。バージョン2.2の新機能。
- int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
書き込み可能なメモリ位置へのポインタを返します。 obj 引数は、単一セグメントの文字バッファインターフェイスをサポートする必要があります。 成功すると、
0
を返し、 buffer をメモリ位置に設定し、 buffer_len をバッファ長に設定します。-1
を返し、エラー時にTypeError
を設定します。バージョン1.6の新機能。
バージョン2.5で変更:この関数は、 buffer_len に
int *
タイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。