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 を生成します。関数 destrNULL でない場合、オブジェクトが回収される際に呼び出されます。

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

void* cobj から PyCObject を生成します。関数 destrNULL でない場合、オブジェクトが回収される際に呼び出されます。引数 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 にデストラクタが関連づけられていてはなりません。成功すると真値を返し、失敗すると偽値を返します。