Как обернуть функцию C ++, которая принимает указатель на функцию в Python, используя SWIG

Вот упрощенный пример того, что я хочу сделать. Предположим, у меня есть следующий код C ++ в test.h

double f(double x);
double myfun(double (*f)(double x));

На данный момент не имеет значения, что делают эти функции. Важно то, что myfun принимает указатель на функцию.

После включения файла test.h в мой интерфейсный файл я скомпилировал модуль python «test», используя SWIG. Теперь в Python я запускаю следующие команды:

import test
f = test.f

Это создает правильно работающую функцию f, которая принимает двойное число. Тем не менее, когда я пытаюсь передать «F» в myfun в Python, это то, что происходит:

myfun(f)
TypeError: in method 'myfun', argument 1 of type 'double (*)(double)'

Как это исправить? Я полагаю, что мне нужно объявление карты типов в моем файле интерфейса SWIG, но я не уверен, каков правильный синтаксис или где его разместить. Я старался

%typemap double f(double);

но это не сработало. Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос