typemaps.i
Typemap は実際には SWIG がすべての型を処理する方法ですが、特に必要がない場合は、次のようにします。
%module x
%include <cpointer.i>
%pointer_functions(int,int)
%inline %{
void check(int k, int *i) {
if (k % 2 == 0)
*i = 1;
else
*i = 0;
}
%}
cpointer.i
型への単純なポインターを作成できます。使用例を次に示します。
>>> import x
>>> i=x.new_int()
>>> x.check(6,i)
>>> x.int_value(i)
1
>>> x.delete_int(i)
しかし、実際には、使用する方が簡単typemaps.i
です。以下は、事前定義されたtypemap を%apply
適用し、将来のすべてのパラメーターが出力パラメーターであることを宣言します。Python は呼び出しにパラメーターを必要とせず、代わりに出力としてパラメーターを返します。通常の戻り値とすべての出力パラメーターは、必要に応じてタプルを使用して返されます。OUTPUT
int *
%module x
%include <typemaps.i>
%apply int *OUTPUT { int * };
%inline %{
void check(int k, int *i) {
if (k % 2 == 0)
*i = 1;
else
*i = 0;
}
%}
使用例:
>>> import x
>>> x.check(5)
0
>>> x.check(6)
1