On May 12, 2009, at 12:50 AM, Dag Sverre Seljebotn wrote:

> I found myself in a corner where the utility code mechanism was not
> fine-grained enough. Rather than adding yet-another-special-case I
> decided to refactor some stuff. Reviews welcome; I can of course  
> change
> it back (though hopefully not until after 0.11.2).
>
> a) In Code.py: GlobalState, there's now a list code_layout:
>      code_layout = [
>          'h_code',
>          'utility_code_proto',
>          'type_declarations',
>          'module_declarations',
>          'typeinfo',
>          'before_global_var',
>          'global_var',
>          'all_the_rest',
>          'utility_code_def'
>      ]
>
> This identifies code stream blocks that are set up initially (in that
> order).
>
> b) At any point, your code instance represents the default  
> location, but
> you can also output to other places:
>
> otherplace = code.globalstate['typeinfo']
> otherplace.putln(...)
>
> If just the right location isn't available, just split up an existing
> stream in (a).
>
> c) An alternative to the classic utility code is now this:
>
> if your_id not in code.globalstate.utility_codes:
>      code.globalstate.utility_codes.add(your_id)
>      somestream = code.globalstate['somestream']
>      somestream.putln(...)
>
> I.e. the presence of "some utility code" is now fully orthogonal to
> which code stream/location in the output the code ends up at. (The
> UtilityCode class is a convenience for this with a couple of hard- 
> coded
> streams.)
>
> http://hg.cython.org/cython-devel/rev/b86a7b374a95
> http://hg.cython.org/cython-devel/rev/fd6cc8a5998d
> http://hg.cython.org/cython-devel/rev/df8dd466bc4a

Looks fine to me after a cursory glance.

- Robert


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

Reply via email to