# 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` を返します。