memoryview オブジェクト

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

PyObject *PyMemoryView_FromObject(PyObject *obj)
Return value: New reference.

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

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
Return value: New reference.

mem を配下のバッファとしてmemoryview オブジェクトを作成します。 flagsPyBUF_READPyBUF_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.

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 インスタンスでなければなりません; このマクロは型をチェックしないので自前で型チェックしなければならず、それを怠るとクラッシュする恐れがあります。

Py_buffer *PyMemoryView_GET_BASE(PyObject *mview)

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