Lisandro Dalcin wrote:
> I'm having a hard time trying to make mpi4py compatible with Microsoft
> MPI. All the MPI calls are annotated with __stdcall, and callbacks
> functions (in my case written in Cython) should also be. But other MPI
> implementations (MPICH2 and DeinoMPI) does different, they require
> __cdecl. I cannot figure out how to solve that without the help of
> Cython....
> 
> I'm thinking about ADDITIONALLY supporting the following sintax:
> 
> cde int "CALL_SPEC" somefunc():
> 
> then I would be able to pass -DCALL_SPEC=__xxx or even conditionally
> "#define CALL_SPEC __xxx" in some header...
> 
> This could have other uses as well, as the string literal could
> provide other annotations (like __attribute__ stuff in GCC).
> 
> I've already modified the parser and all seems to work. The only thing
> left is to make Cython not so strict about the signatures

Could we have a decorator instead, perhaps? Or some way of declaring a 
new callspec?

ccallspec __stdcall

...

I'm just thinking about the

cdef extern unsigned int public inline __stdcall foo "realfoo" () 
expect+: ...



> 
> I mean, if I use a bare string literal for annotating the function,
> then the function types
> 
> int "ABC" foo()
> 
> int "XYZ" bar()
> 
> would be treated as equivalent to the unannotated:
> 
> inf fun()
> 
> What do you think?
> 
> BTW, we should add support for __fastcall calling conventions, like this
> 
> int __fastcall func()
> 
> -
> 


-- 
Dag Sverre
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to