セルオブジェクト (cell object)

「セル」オブジェクトは、複数のスコープから参照される変数を実装するために使われます。 そのような変数ごとに、値を格納するセルオブジェクトを作成します。 値を参照する各スタックフレームのローカル変数には、その変数を使う外側のスコープのセルへの参照が含まれます。 値にアクセスするときは、セルオブジェクト自体ではなく、セルに格納された値を使います。 このセルの参照をたどる処理には、生成されるバイトコードによるサポートが必要です。 セルにアクセスすれば自動的にその中身が得られるわけではありません。 ほかの用途でセルオブジェクトが役立つことはあまりないでしょう。

type PyCellObject

セルオブジェクトに使われる C 構造体です。

PyTypeObject PyCell_Type

セルオブジェクトに対応する型オブジェクトです。

int PyCell_Check(PyObject *ob)

ob がセルオブジェクトの場合に真を返します; 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 でなければならず、かつセルオブジェクトでなければなりません。