おそらく次のようなものを使用できます。
%{
#include <boost/scoped_array.hpp>
%}
namespace boost {
template<class T>
class scoped_array {
public:
scoped_array();
~scoped_array();
void reset();
void swap(scoped_array& b);
%extend
{
scoped_array(unsigned n)
{
return new scoped_array<T>(new T[n]);
}
T __getitem__(unsigned int idx)
{
return (*self)[idx];
}
void __setitem__(unsigned int idx,T val)
{
(*self)[idx]=val;
}
};
};
}
出発点として。の重要なビットを公開し、SWIG がその標準 typemap ライブラリに持っている実装boost::scoped_array
に大まかに基づいています。std::vector
特別なメンバー関数と、同時にいくつかのストレージを割り当てる新しいコンストラクターを追加します。ターゲット言語での使用が見られなかったため、SWIG の定義の一部を示していません。
注:これはコンパイルおよびチェックしていません。SWIG はこれに満足しており、生成されたラッパーは正常に見えます。