既存のライブラリの Python 拡張機能を作成しています。一部の関数はプリミティブへのポインターを受け入れるため、arg を出力として使用できます。
これはあまり Pythonic ではないので、関数が代わりにタプルを返すように、SWIG ドキュメントhereで説明されているようにタイプマップを使用したいと考えています。
ここに私のSWIGインターフェースファイルのスニペットがあります(この質問に関連する部分のみが示されています)
%include "typemaps.i" // For pointers to primitive types
%apply double *OUTPUT { double *a1, double *a2, double *a3 };
%apply double *OUTPUT { double *b1, double *b2, double *b3 };
%apply double *OUTPUT { double *c1, double *c2 };
class FooBar
{
public:
FooBar();
~FooBar();
int do(char* s, double *a1, double *a2, double *a3);
double something(int i, double *b1, double *b2, double *b3);
void great(double *c1, double *c2);
};
SWIG doc は、上記の方法で複数の OUTPUT (マクロ?) を使用できるかどうかを明確にしていないようです - これは安全ですか?