On Fri, May 1, 2009 at 7:28 AM, Dag Sverre Seljebotn <[email protected]> wrote: > A new directive which allows Cython to assume that integers passed to [] > are not negative. > > Currently buffers have the negative_indices option: > > object[int, negative_indices=False] arr = ... > > but this can be cumbersome and less flexible. The rationale for not > doing this in the first place was that it changes semantics during > normal running rather than under exceptional circumstances, but now > @cdivision has crossed that line anyway.
+1 for me. Since directives can be module, function or block scoped they're pretty flexible, and it makes it clear & explicit that different semantics are going on. The current state allows the use of two different negative_indices type buffers in the same expression: arr_neg[a,b] = arr_neg[a,b] + arr_no_neg[abs(a), abs(b)] While that would be impossible with the proposed directive. I can't easily think of cases when I'd like to mix negative & non_negative indexing in the same expression, or when I couldn't just revert to regular indexing for these cases when required -- presumably I'm giving the arr_no_neg 'negative_indices=False' since I want to speed things up, and I should do the same for the other arrays. I like that it lifts the semantics out of the individual arrays and puts it in a directive. Kurt > > Also note that this could potentially apply to typed lists and tuples as > well, if there's a benefit. > > -- > Dag Sverre > _______________________________________________ > Cython-dev mailing list > [email protected] > http://codespeak.net/mailman/listinfo/cython-dev _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
