شیءهای سلول

از اشیاء "Cell" برای پیاده‌سازی متغیرهایی استفاده می‌شود که توسط چندین محدوده به آن‌ها ارجاع می‌شود. برای هر یک از چنین متغیرهایی، یک شیء سلول برای ذخیره‌ی مقدار ایجاد می‌شود؛ متغیرهای محلیِ هر فریم پشته که به این مقدار ارجاع می‌کند، ارجاعی به سلول‌های محدوده‌های بیرونی‌ای که آن محدوده‌ها نیز از آن متغیر استفاده می‌کنند را در خود دارند. هنگامی که به مقدار دسترسی می‌شود، مقدارِ موجود در سلول به‌جای خودِ شیء سلول استفاده می‌شود. این ارجاع‌زدایی (de-referencing) از شیء سلول نیازمند پشتیبانی از سوی بایت‌کدِ تولیدشده است؛ این اشیاء هنگام دسترسی به‌طور خودکار ارجاع‌زدایی نمی‌شوند. اشیاء سلول به احتمال زیاد در جای دیگری مفید نخواهند بود.

type PyCellObject

ساختار C استفاده‌شده برای شیءهای سلول .

PyTypeObject PyCell_Type

شیء نوعِ متناظر با شیءهای سلول .

int PyCell_Check(PyObject *ob)

اگر ob یک شیء سلول باشد، true را برمی‌گرداند؛ ob نباید NULL باشد. این تابع همیشه موفق است.

PyObject *PyCell_New(PyObject *ob)
مقدار بازگشتی: مرجع جدید.

یک شیء سلول جدید حاوی مقدار ob ایجاد کنید و آن را برگردانید. این پارامتر می‌تواند NULL باشد.

PyObject *PyCell_Get(PyObject *cell)
مقدار بازگشتی: مرجع جدید.

محتویات سلول cell را برمی‌گرداند که می‌تواند NULL باشد. اگر cell یک شیء سلول نباشد، NULL همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

PyObject *PyCell_GET(PyObject *cell)
مقدار بازگشتی: مرجع امانتی.

محتوای سلول cell را بازمی‌گرداند، اما بدون بررسی اینکه cell غیر NULL و یک شیء سلول باشد.

int PyCell_Set(PyObject *cell, PyObject *value)

محتوای شیء سلول cell را بر value قرار می‌دهد. این کار، ارجاع به هر محتوای فعلی سلول را آزاد می‌کند. value می‌تواند NULL باشد. cell باید غیر NULL باشد.

در صورت موفقیت، 0 را برمی‌گرداند. اگر cell یک شیء سلول نباشد، یک استثنا تنظیم کرده و -1 را برمی‌گرداند.

void PyCell_SET(PyObject *cell, PyObject *value)

مقدار شیء سلول cell را روی value تنظیم می‌کند. هیچ شمارش ارجاعی تعدیل نمی‌شود و هیچ بررسی ایمنی انجام نمی‌شود؛ cell باید غیر NULL باشد و باید یک شیء سلول باشد.