memoryview オブジェクト

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

PyTypeObject PyMemoryView_Type
次に属します: Stable ABI.

この PyTypeObject のインスタンスは Python の memoryview 型を表します。 Python レベルの memoryview と同じオブジェクトです。

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

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

PyBUF_READ
次に属します: Stable ABI (バージョン 3.11 より).

読み取り専用のバッファを要求するフラグ。

PyBUF_WRITE
次に属します: Stable ABI (バージョン 3.11 より).

書き込み可能なバッファを要求するフラグ。

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 には PyBUF_READ または 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 を返します。 mview は memoryview インスタンスで なければなりません。