# memoryview オブジェクト

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

PyObject *PyMemoryView_FromObject(PyObject *obj)
  戻り値: 新しい参照。 次に属します: Stable ABI.

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

PyBUF_READ

  Flag to request a readonly buffer.

PyBUF_WRITE

  Flag to request a writable buffer.

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
  戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.7 より).

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

  Added in version 3.3.

PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)
  戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.11 より).

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

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
  戻り値: 新しい参照。 次に属します: Stable ABI.

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

  buffertype can be one of `PyBUF_READ` or `PyBUF_WRITE`.

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