弱参照オブジェクト
******************

Python は *弱参照* を第一級オブジェクト (first-class object) としてサ
ポートします。弱参照を直接実装する二種類の固有のオブジェクト型がありま
す。第一は単純な参照オブジェクトで、第二はオリジナルのオブジェクトに対
して可能な限りプロキシとして振舞うオブジェクトです。

int PyWeakref_Check(ob)

   *ob* が参照オブジェクトかプロキシオブジェクトの場合に真を返します。

   バージョン 2.2 で追加.

int PyWeakref_CheckRef(ob)

   *ob* が参照オブジェクトの場合に真を返します。

   バージョン 2.2 で追加.

int PyWeakref_CheckProxy(ob)

   *ob* がプロキシオブジェクトの場合に真を返します。

   バージョン 2.2 で追加.

PyObject* PyWeakref_NewRef(PyObject *ob, PyObject *callback)
    *Return value: New reference.*

   *ob* に対する弱参照オブジェクトを返します。この関数は常に新たな参照
   を返しますが、必ずしも新たなオブジェクトを作る保証はありません; 既
   存の参照オブジェクトが返されることもあります。第二のパラメタ
   *callback* は呼び出し可能オブジェクトで、 *ob* がガーベジコレクショ
   ンされた際に通知を受け取ります; *callback* は弱参照オブジェクト自体
   を単一のパラメタとして受け取ります。 *callback* は "None" や *NULL*
   にしてもかまいません。 *ob* が弱参照できないオブジェクトの場合や、
   *callback* が呼び出し可能オブジェクト、 "None" 、 *NULL* のいずれで
   もない場合は、 *NULL* を返して "TypeError" を送出します。

   バージョン 2.2 で追加.

PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
    *Return value: New reference.*

   *ob* に対する弱参照プロキシオブジェクトを返します。この関数は常に新
   たな参照を返しますが、必ずしも新たなオブジェクトを作る保証はありま
   せん; 既存の参照オブジェクトが返されることもあります。第二のパラメ
   タ *callback* は呼び出し可能オブジェクトで、 *ob* がガーベジコレク
   ションされた際に通知を受け取ります; *callback* は弱参照オブジェクト
   自体を単一のパラメタとして受け取ります。 *callback* は "None" や
   *NULL* にしてもかまいません。 *ob* が弱参照できないオブジェクトの場
   合や、 *callback* が呼び出し可能オブジェクト、 "None" 、 *NULL* の
   いずれでもない場合は、 *NULL* を返して "TypeError" を送出します。

   バージョン 2.2 で追加.

PyObject* PyWeakref_GetObject(PyObject *ref)
    *Return value: Borrowed reference.*

   弱参照 *ref* が参照しているオブジェクトを返します。被参照オブジェク
   トがすでに存続していない場合、 "Py_None" を返します。

   バージョン 2.2 で追加.

   警告: この関数は参照先オブジェクトの **借り物の参照** を返します
     。その ため、そのオブジェクトを利用している間そのオブジェクトが破
     棄され ないことが判っている場合を除き、常に "Py_INCREF()" を呼び
     出すべき です。

PyObject* PyWeakref_GET_OBJECT(PyObject *ref)
    *Return value: Borrowed reference.*

   "PyWeakref_GetObject()" に似ていますが、マクロで実装されていて、エ
   ラーチェックを行いません。

   バージョン 2.2 で追加.
