On May 6, 2009, at 11:23 PM, Stefan Behnel wrote:

> Robert Bradshaw wrote:
>> On May 6, 2009, at 1:08 PM, Carl Witty wrote:
>>> Yes, but you said that you only implement it within a single module
>>> (which is what I see in element.c); I'm saying that it should  
>>> also be
>>> possible to implement across modules (just make tp_new functions
>>> non-static, add an extern declaration in the second module, and call
>>> the function directly).
>>
>> Yes, I we could do this. We could also support exported cdef
>> functions this way, instead of the current function import mechanism.
>> (Or was there some reason it wasn't done this way in the first place?
>
> There are two cdef function export mechanisms: "public" and "api". The
> second is targeted towards calling functions between separate  
> extension
> modules (through "__pyx_capi"), while "public" (and declaration in the
> module .pxd file IIRC) simply removes the name mangling and makes  
> functions
> non-static for use in other C files linked into the same extension  
> module.
>
> So this would mimic the "public" mechanism in a way, although it'd be
> better to do the normal name mangling for tp_new() even if we  
> export it.

Yes, I'm thinking of "api" functions, mangled and all, but without  
the __pyx_capi object. Actually, I don't know if this would work, as  
the .so files may not be loaded in the right order.

- Robert

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

Reply via email to