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

"セル (cell)" オブジェクトは、複数のスコープから参照される変数群を実装
するために使われます。セルは各変数について作成され、各々の値を記憶しま
す; この値を参照する各スタックフレームにおけるローカル変数には、そのス
タックフレームの外側で同じ値を参照しているセルに対する参照が入ります。
セルで表現された値にアクセスすると、セルオブジェクト自体の代わりにセル
内の値が使われます。このセルオブジェクトを使った間接参照 (dereference)
は、インタプリタによって生成されたバイトコード内でサポートされている必
要があります; セルオブジェクトにアクセスした際に、自動的に間接参照は起
こりません。上記以外の状況では、セルオブジェクトは役に立たないはずです
。

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)
    *戻り値: 新しい参照。*

   Return the contents of the cell *cell*, which can be "NULL". If
   *cell* is not a cell object, returns "NULL" with an exception set.

PyObject *PyCell_GET(PyObject *cell)
    *戻り値: 借用参照。*

   *cell* の内容を返しますが、*cell* が非 "NULL" かつセルオブジェクト
   であるかどうかはチェックしません。

int PyCell_Set(PyObject *cell, PyObject *value)

   Set the contents of the cell object *cell* to *value*.  This
   releases the reference to any current content of the cell. *value*
   may be "NULL".  *cell* must be non-"NULL".

   On success, return "0". If *cell* is not a cell object, set an
   exception and return "-1".

void PyCell_SET(PyObject *cell, PyObject *value)

   セルオブジェクト *cell* の値を *value* に設定します。 参照カウント
   に対する変更はなく、安全のためのチェックは何も行いません。*cell* は
   非 "NULL" でなければならず、かつセルオブジェクトでなければなりませ
   ん。
