memoryview オブジェクト
***********************

"memoryview" オブジェクトは、他のオブジェクトと同じように扱える Python
オブジェクトの形をした C 言語レベルの バッファのインターフェース です
。

PyObject *PyMemoryView_FromObject(PyObject *obj)
    *Return value: New reference.** Part of the Stable ABI.*

   バッファインターフェースを提供するオブジェクトからmemoryview オブジ
   ェクトを生成します。もし *obj* が書き込み可能なバッファのエクスポー
   トをサポートするなら、その memoryview オブジェクトは読み書き可能で
   す。そうでなければ読出しのみになるか、エクスポーターの分別にもとづ
   いて読み書きが可能となります。

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
    *Return value: New reference.** Part of the Stable ABI since
   version 3.7.*

   *mem* を配下のバッファとしてmemoryview オブジェクトを作成します。
   *flags* は "PyBUF_READ" か "PyBUF_WRITE" のどちらかになります。

   バージョン 3.3 で追加.

PyObject *PyMemoryView_FromBuffer(Py_buffer *view)
    *Return value: New reference.*

   *view* として与えられたバッファ構造をラップする memoryview オブジェ
   クトを作成します。単なるバイトバッファ向けには、
   "PyMemoryView_FromMemory()" のほうが望ましいです。

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
    *Return value: New reference.** Part of the Stable ABI.*

   buffer インターフェースを定義しているオブジェクトから ('C' か
   'F'ortran の *order* で) *連続した* メモリチャンクへの memoryview
   オブジェクトを作ります。メモリが連続している場合、 memoryview オブ
   ジェクトは元のメモリを参照します。それ以外の場合、メモリはコピーさ
   れて、 memoryview オブジェクトは新しい bytes オブジェクトを参照しま
   す。

int PyMemoryView_Check(PyObject *obj)

   *obj* が memoryview オブジェクトの場合に真を返します。現在のところ
   、 "memoryview" のサブクラスの作成は許可されていません。この関数は
   常に成功します。

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

   書きだされたバッファーの memoryview のプライベート コピーに、ポイン
   ターを返します。 *mview* は  memoryview インスタンスでなければなり
   ません; このマクロは型をチェックしないので自前で型チェックしなけれ
   ばならず、それを怠るとクラッシュする恐れがあります。

PyObject *PyMemoryView_GET_BASE(PyObject *mview)

   memoryview をエクスポートしているオブジェクトへのポインタを返します
   。 memoryview が "PyMemoryView_FromMemory()" か
   "PyMemoryView_FromBuffer()" のどちらかで作成されていた場合、 "NULL"
   を返します。
