古いバッファプロトコル
**********************

バージョン 3.0 で非推奨.

これらの関数は、 Python 2 の「古いバッファプロトコル」 API の一部です
。 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)

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

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

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)

   書き込み可能なメモリ上の位置へのポインタを返します。 *obj*  引数は
   単一セグメントからなる文字バッファインタフェースをサポートしていな
   ければなりません。成功すると "0" を返し、 *buffer* をメモリの位置に
   、 *buffer_len* をバッファの長さに設定します。エラーの際には "-1"
   を返し、 "TypeError" をセットします。
