私は私のソフトウェア・ライブラリ用のPython用のSWIGを使用してラッパーを作成していると私は、次の機能があります。この場合SWIG:戻り値として関数テンプレートと共有ポインタでのpythonコールバック
template<class PR>
boost::shared_ptr<JobT<PR> > Client::WaitForJob() {
boost::shared_ptr<JobT<PR> > job;
while (!job.get()) {
list<boost::shared_ptr<Job> > jobs = GetJobs(p_jobName, p_jobID, "", JobT<PR>::New);
while (jobs.size() > 0) {
job = boost::dynamic_pointer_cast<JobT<PR> >(jobs.front());
jobs.pop_front();
if (ClaimJob(job)) return job;
else job.reset();
}
}
return job;
}
を私ができますよJobTのクラスを作成するためにboos_pointerも使用しました。 現在、私は私のインターフェースファイルに次のようなものを持っています:
%template(jobme)JobT; % "boost_shared_ptr.i"を含む %shared_ptr(jobme)
%テンプレート(waitforme)Client :: WaitForJob;
waitforme関数テンプレートはswig pythonオブジェクトへのポインタを返します。これは正しいですが、私はそれをjobmeポインタと同じにします。
これが可能なら誰かが指摘できますか?