Я пишу расширение Python для существующей библиотеки.Некоторые функции принимают указатель на примитив, поэтому аргумент arg может выступать в качестве вывода.
Это не очень питонно, поэтому я хочу использовать карты типов, как описано в документации SWIG здесь так что вместо этого функции возвращают кортежи.
Вот фрагмент моего файла интерфейса 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 не проясняет,Я могу использовать несколько OUTPUT (макросов?), Как я это делал выше - это безопасно?