SWIG C ++ to Python: карты типов и методы, принимающие указатели на примитивный тип - PullRequest
1 голос
/ 13 ноября 2011

Я пишу расширение 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 (макросов?), Как я это делал выше - это безопасно?

...