On Fri, Oct 3, 2008 at 5:32 AM, Robert Bradshaw
<[EMAIL PROTECTED]> wrote:
> On Oct 1, 2008, at 6:42 PM, Lisandro Dalcin wrote:
>
>> Robert, in this changeset
>>
>> changeset:   1184:515f94dc16f2
>> user:        Robert Bradshaw <[EMAIL PROTECTED]>
>> date:        Mon Sep 29 19:08:45 2008 -0700
>> summary:     Refactoring of type parsing
>>
>> you cannot parse C function typedef like this:
>>
>> cdef extern from *:
>>     void (somefunc)(int)
>>
>> Please note that this declaration is not of the form "void
>> (*somefuncptr)(int)", and AFAIK the former is valid C code.
>
> Does it have the same meaning, or is there something more subtle
> going on?

Robert, AFAIK they do not have the same meaning. the void
(func1)(args) is function typedef and void (*func2)(args) is a funtion
POINTER typedef. In short, they are really different types. MPI has
many of those (non-pointer) typedef for some callback functions.

I really believe that this is a regression. It could potentially make
invalid some codes. In fact, this change already broke my codes.

> We don't accept all valid C code, for example
>
>     int foo(void)
>
> is allowed in C but not in Cython.

Long ago I discussed that case with Sfefan, and we agreed that there
was not point on supporting 'int foo(void)', as that C declaration was
in fact related to support ancient C and the different meaning of 'int
foo()', hopefully fixed in C++.

But in the fase of function vs. function pointer typedef's, the issues
are different. They really are different types.


>> I was looking at the changes you pushed, but I was unable to discover
>> what's going on. So I really need your help here.
>
> I needed to remove the dependancy the parser had on knowing all type
> names, so in some places it needs to look ahead to determine if it's
> looking at a type or an expression. If this is the only bug
> introduced, than I'm willing to accept that, but are there other
> statements that are now illegal?
>
> - Robert
>
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>



-- 
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