Robert Bradshaw wrote:
> On Oct 2, 2008, at 2:03 PM, Gabriel Gellner wrote:
>
>   
>> On Thu, Oct 02, 2008 at 05:00:40PM -0400, Gabriel Gellner wrote:
>>     
>>> is there any way to assign an cdef C array at assignment time?
>>>
>>> I want something like:
>>>
>>>     cdef double a[4] = {0.5, 0.3, 0.1, 0.1}
>>>
>>> as anything like this possible in Cython? Or do I need to do explicit
>>> initialization.
>>>
>>>       
>> And if it is explicit is there any way to not just do (can I do  
>> some kind of
>> block assignment?)
>>
>>     a[0] = 0.5
>>         ...
>>     a[3] = 0.1
>>     
>
> This will now work
>
>      cdef double *a = [0.5, 0.3, 0.1, 0.1]
>
> Note that it is still allocated on the stack, but a pointer type is  
> needed as arrays aren't lvalues.
It looks a bit confusing...

I mean, for a traditional Cython user it looks like a temporary Python 
list is coerced, meaning that a will point to deallocated memory.

Ignoring that issue, what even happens if you reassign a to some other 
pointer? Or is that disallowed?

The initial syntax proposed avoids these problems. I understand that 
this was probably much easier, OTOH it might be better not to have a 
feature rather than having a confusing feature...

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

Reply via email to