اشیاء MemoryView

شیء memoryview رابط بافر سطح C را به‌صورت یک شیء پایتون در دسترس قرار می‌دهد که سپس می‌توان آن را مانند هر شیء دیگری منتقل کرد.

PyTypeObject PyMemoryView_Type
قسمتی از ABI پایدار.

این نمونه از PyTypeObject نوع memoryview پایتون را نمایش می‌دهد. این همان شیء memoryview در لایه‌ی پایتون است.

PyObject *PyMemoryView_FromObject(PyObject *obj)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک شیء memoryview از شیئی که رابط بافر را فراهم می‌کند ایجاد می‌کند. اگر obj از اکسپورت (export) بافرهای نوشتنی پشتیبانی کند، شیء memoryview خواندنی/نوشتنی خواهد بود؛ در غیر این صورت، ممکن است به تشخیص برون‌دهنده (exporter)، فقط‌خواندنی یا خواندنی/نوشتنی باشد.

PyBUF_READ
قسمتی از ABI پایدار از نسخه‌ی 3.11.

پرچمی برای درخواست بافر فقط‌خواندنی.

PyBUF_WRITE
قسمتی از ABI پایدار از نسخه‌ی 3.11.

پرچم برای درخواست بافر نوشتنی.

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار از نسخه‌ی 3.7.

یک شیء memoryview با استفاده از mem به‌عنوان بافر زیربنایی ایجاد می‌کند. flags می‌تواند یکی از PyBUF_READ یا PyBUF_WRITE باشد.

اضافه شده در نسخه‌ی 3.3.

PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار از نسخه‌ی 3.11.

یک شیء memoryview می‌سازد که ساختار بافر داده‌شده view را دربرمی‌گیرد. برای بافرهای بایت ساده، PyMemoryView_FromMemory() تابع ترجیحی است.

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک شیء memoryview روی یک تکه‌ی پیوسته از حافظه (به ترتیب 'C' یا 'F'ortran) از شیئی که رابط بافر را تعریف می‌کند، ایجاد می‌کند. اگر حافظه پیوسته باشد، شیء memoryview به حافظه‌ی اصلی اشاره می‌کند. در غیر این صورت، یک رونوشت ساخته می‌شود و memoryview به یک شیء bytes جدید اشاره می‌کند.

buffertype می‌تواند یکی از PyBUF_READ یا PyBUF_WRITE باشد.

int PyMemoryView_Check(PyObject *obj)

اگر شیء obj یک شیء memoryview باشد، مقدار true را برمی‌گرداند. در حال حاضر ایجاد زیرکلاس‌های memoryview مجاز نیست. این تابع همیشه با موفقیت اجرا می‌شود.

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

اشاره‌گری به رونوشت خصوصی memoryview از بافر اکسپورتکننده را برمی‌گرداند. mview باید یک نمونه‌ی memoryview باشد؛ این ماکرو نوع آن را بررسی نمی‌کند، باید خودتان این کار را انجام دهید وگرنه خود را در معرض خطر فروپاشی قرار می‌دهید.

PyObject *PyMemoryView_GET_BASE(PyObject *mview)

اشاره‌گری به شیء اکسپورتکننده‌ای (exporting object) که memoryview بر پایه‌ی آن است را برمی‌گرداند، یا اگر memoryview توسط یکی از توابع PyMemoryView_FromMemory() یا PyMemoryView_FromBuffer() ایجاد شده باشد، NULL را برمی‌گرداند. mview باید یک نمونه از memoryview باشد.