I have the following question. We have to pass callback functions to the C code. If the function is a Cython function in the same module, the situation is quite simple
In Cython:
def callme(int x):
c_callme(x, <int (*)(int)>&callbackme)
cdef int callbackme(int x):
print <int> x
return <int>x
In C:
int c_callme(int x, int (*f)(int))
{
printf("---%d\n",x);
printf("--%d\n",f(x));
return x;
}
The question is as follows: we want to generalize this code in the most Pythonic way so that it can accept also python functions as callback arguments (of course, some additional layer is needed), and also C/Cython functions from another module. I suppose, for C/Cython functions from a separate module one has to get the address of these functions (convert to long int?) and for Python function a certain wrapper is needed