# 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` にデストラクタが関連づけられていてはなりません。成功すると真値を返し、失敗すると偽値を返します。