Hi,

Here's a summary of my plans for the translator (I assume all of this will 
happen after 2.10):

1) separate context-def into two parts, translator information and tree 
information. Basically, the info shared by engraver-init and performer-init 
should belong to the 'tree information', which tells us the relationships 
between context types, while the stuff specific for layout and midi, such as 
translators and grob properties, should belong to the 'translator' part. 
2) remove recurse_over_translator and friends, replace with a dispatcher 
system. This will probably be a slowdown, but not in terms of O.
3) softcode \consists, \remove as music functions. With the new event system, 
it shouldn't be difficult to add/remove translators on the fly. Depends 
slightly on (2).
4) remove Context::implementation. This member is currently only used by 
translator groups, to search for parents and children. Once (2) is done, it's 
sufficient to add a parent pointer to each translator group.

I don't have a perfectly clear picture of (1) yet, but I have a feeling that 
(1) + (3) can reveal a new way of looking at context defs; if we're lucky it 
may even be possible to encode all 'translator information' using Music (thus 
getting a nice solution to the \tempo syntax problem).

I think I'd prefer to perform the above tasks in order 2-3-4-1.

-- 
Erik


_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to