On Sat, May 16, 2009 at 5:05 PM, Dag Sverre Seljebotn
<[email protected]> wrote:
>>      def same_calling_convention_as(self, other):
>>         callspec_words = ("__stdcall", "__cdecl", "__fastcall")
>>         cs1 =
>>         cs2 = other.calling_convention
>>         if (cs1 in callspec_words or
>>             cs2 in callspec_words):
>>             return cs1 == cs2
>>         else:
>>             return True
>
> Why is this function only considering those, and not user-defined
> callspecs as well?
>
> It would seem to me that simply
>
> self.calling_convention == other.calling_convention
>
> would seem natural here, if one cannot trust "no convention" to be the
> same as any others.
>

Two reasons from my side:

1) If we are going to just push the decorator form, there is no way to
annotate external declarations until 'callspec("something")' is
introduced.

2) User-defined (and preprocessor macro controlled) calling
conventions should be seen as a power-user feature for solving corner
cases. Then I would like to be strict only with the "standard" calling
convention names. When a user has to start using things like
@cython.callspec("MY_CALL_SPEC"), I'm pretty sure that uses knows very
well why he has to do that, and also have managed to make sure
MY_CALL_SPEC is defined in the preprocessor...

Let's go back to mpi4py. I have to use
@cython.callspec("PyMPI_API_CALL") in a few callback functions. If I
were forced to add such decoration (or annotation using the second
part of my patch) in the MPI calls declared on my pxd's then I would
likely generate trouble to all mpi4py users, and almost all of them
are not working on Windows...




-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to