| --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
| +++ b/cgen/templates/inlined/PyRangeIter_Type Fri May 11 16:21:51 2012 -0700 |
| @@ -0,0 +1,23 @@ |
| + { |
| + typedef struct { |
| + PyObject_HEAD |
| + long index; |
| + long start; |
| + long step; |
| + long len; |
| + } rangeiterobject; |
| + |
| + if (((rangeiterobject*)v)->index < ((rangeiterobject*)v)->len) { |
| + /* cast to unsigned to avoid possible signed overflow |
| + in intermediate calculations. */ |
| + x= PyLong_FromLong((long)(((rangeiterobject*)v)->start + |
| + (unsigned long)(((rangeiterobject*)v)->index++) |
| + * ((rangeiterobject*)v)->step)); |
| + PUSH(x); |
| + DISPATCH(); |
| + } |
| + else { |
| + x = NULL; |
| + goto FOR_ITER_CONTINUE; |
| + } // if |
| + } |