Inline keyword for cdef functions, variable assignment on declaration (+optimization)
authorRobert Bradshaw <robertwb@math.washington.edu>
Tue, 27 Feb 2007 11:46:35 +0000 (03:46 -0800)
committerRobert Bradshaw <robertwb@math.washington.edu>
Tue, 27 Feb 2007 11:46:35 +0000 (03:46 -0800)
commita72407b4fff57f0b8a78a08af3b70e693186247c
treee2e4309aba166dba2ce242a23cbb9f0a308a951d
parenta5e1b89af3d2f8f5ebc1ea8a8b1090c48179e226
Inline keyword for cdef functions, variable assignment on declaration (+optimization)

"cdef inline foo()" now valid, and will place inline in the resulting c code

"cdef o = expr" and "cdef type x = expr" now valid.
This may not seem like a huge change, but it ended up requiring
quite a bit of work. The variables are still all declared at the
top, but the assignment takes place at the specified line in the
code.

If an assignment is made at declaration, the variable is initalized to
0 rather than None (also skipping an INCREF) and Py_XDECREF is used on
exiting the function (in case an error occured before the actual value
was calculated). Hence these variables MUST NOT be used before they are
defined or it will probably segfault.
Cython/Compiler/Code.py
Cython/Compiler/Nodes.py
Cython/Compiler/Parsing.py