Python / Cython / C e callbacks, chamando uma função Python de C usando Cython
Eu tenho a seguinte pergunta. Temos que passar as funções de retorno de chamada para o código C. Se a função é uma função Cython no mesmo módulo, a situação é bastante simples
Em Cython:
def callme(int x):
c_callme(x, <int (*)(int)>&callbackme)
cdef int callbackme(int x):
print <int> x
return <int>x
Em C:
int c_callme(int x, int (*f)(int))
{
printf("---%d\n",x);
printf("--%d\n",f(x));
return x;
}
A questão é a seguinte: queremos generalizar este código da maneira mais Pythonica para que ele possa aceitar também funções python como argumentos de callback (claro, é necessária alguma camada adicional), e também funções C / Cython de outro módulo. Eu suponho que, para funções C / Cython de um módulo separado, é necessário obter o endereço dessas funções (converter em long int?) E, para a função Python, um determinado wrapper é necessário