[Pyrex] The "++" operator gets stripped out (as in "++x")

Lenard Lindstrom len-l at telus.net
Sun Jan 6 21:08:11 CET 2008


This is not as simple as it appears. Pyrex is bases on Python, not C. So 
its grammar should be consistent with Python. In Python, the unary '+' 
can be overridden. So if x where a Python variable then ++x is 
equivalent to +(+x). Now the unary '+' can also be overloaded in C++. So 
for future considerations in C++ support shouldn't ++x also translate to 
+(+x) for statically cdef'd variables to be consistent with Python grammar.


Lenard Lindstrom


Dan Gindikin wrote:
> This thought occurred to me, but perhaps there ought to at least be a warning in 
> this case? It's an easy mistake to make.
>
> John Machin wrote:
>   
>> Dan Gindikin wrote:
>>     
>>> Hi,
>>>
>>> It appears the "++" prefix operator gets silently stripped out. If you 
>>> have the following,
>>>
>>>     cdef int x
>>>     x=0
>>>     ++x           # in the .c file, this is just "__pyx_v_x"
>>>     print x
>>>
>>> a "0" is printed.
>>>
>>> This is with version 0.9.6.4
>>>
>>>   
>>>       
>> There is no such thing as a "++" prefix operator in Python and Pyrex 
>> (and Pyrex doesn't support x += 1). You have two "+" prefix operators, 
>> with the expected result.
>>
>>
>>     
>
>   




More information about the Pyrex mailing list