SWIG C++bindingsコールバック
質問
皆様にお伝えしたくて書き込みあSWIG/PythonバインディングもC++のコードです。これはいわゆる"Kinect偶発的なAPIを持っていモーターやledの機能 作.のコールバックのリスナークラスを解析し、移植のRGBおよび深度バッファがいないようになると呼ばれるからSWIG.のデータ-キャプチャのスレッドが顕著に起動開始申し訳は、CPUがデバッグラインからのコールバックです。この方法の移植にデータのバッファーに簡単にアクセスからpython?
class KinectListener
{
public:
virtual ~KinectListener(){};
virtual void KinectDisconnected(Kinect *K) {};
virtual void DepthReceived(Kinect *K) {};
virtual void ColorReceived(Kinect *K) {};
virtual void AudioReceived(Kinect *K) {};
};
このリスナークラスの仮想手法では、Pythonに包まれたこのクラスの使用を受け継ぐにはリスナーのためのc++クラス?になっていたため、最小限のリスナーのC++、現在、残りの作業は、アクセスの配列を効率よくtypemaps.現在、私はこの素朴typemap
%typemap(out) unsigned short [ANY] {
int i;
$result = PyList_New($1_dim0);
for (i = 0; i < $1_dim0; i++) {
PyObject *o = PyInt_FromLong((long)$1[i]);
PyList_SetItem($result,i,o);
}
}
より良いオプション?
解決
ディレクター機能を使用する方法があります。 Kinectlistenerプロキシ、1行のコードに有効にします。
%feature("director") KinectListener
次に、PythonコードでKinectlistenerクラスから継承し、機能を定義できます。
他のヒント
偶然、うみへのコールバックとSWIGのようです。
SWIGが全面的にバックアップのための関数ポインタのコールバック関数が定義されたCの外国語力を身につけていきます。...しかし、既存のCの機能をご利用いただくことができ、引数として提供しますインストールしていたとして定数.今後は、一定の指令しんでみてはいかがでしょうか。
私は企画書Cのコールバックは、さまざまな方法で記述は、JNI呼び込Java.ある場合を意味するものとして、私も大好きにも聴かせてあげたいです。
所属していません StackOverflow