Cオブジェクト (CObject)
***********************

警告: CObject API は Python 2.7 から非推奨になりました。新しい カプ
  セル APIへ移行してください。

PyCObject

   この "PyObject" のサブタイプは、任意の値を表し、C拡張モジュールから
   Pythonコードを経由して他のC言語のコードに任意の値を("void*" ポイン
   タの形で)渡す必要があるときに有用です。あるモジュール内で定義されて
   いるC言語関数のポインタを、他のモジュールに渡してそこから呼び出せる
   ようにするためによく使われます。これにより、動的にロードされるモジ
   ュールの中の C API に通常の import 機構を通してアクセスすることがで
   きます。

int PyCObject_Check(PyObject *p)

   引数が "PyCObject" の場合に真を返します。

PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))
    *Return value: New reference.*

   "void*" *cobj* から "PyCObject" を生成します。関数 *destr* が
   *NULL* でない場合、オブジェクトが回収される際に呼び出されます。

PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))
    *Return value: New reference.*

   "void*" *cobj* から "PyCObject" を生成します。関数 *destr* が
   *NULL* でない場合、オブジェクトが回収される際に呼び出されます。引数
   *desc* を使って、デストラクタ関数に追加のコールバックデータを渡せま
   す。

void* PyCObject_AsVoidPtr(PyObject* self)

   "PyCObject" オブジェクト *self* を生成するのに用いたオブジェクト
   "void *" を返します。

void* PyCObject_GetDesc(PyObject* self)

   "PyCObject" オブジェクト *self* を生成するのに用いたコールバックデ
   ータ "void *" を返します。

int PyCObject_SetVoidPtr(PyObject* self, void* cobj)

   *self* 内の void ポインタに *cobj* をセットします。 "PyCObject" に
   デストラクタが関連づけられていてはなりません。成功すると真値を返し
   、失敗すると偽値を返します。
