2007/11/17, Rune Zedeler <[EMAIL PROTECTED]>: > (assuming you took this off the list on purpose)
No, on accident actually. > > No, it's better that we don't do this. If you need marking of some > > sort, pass a set<Context_def*> into the function. It would be even > > nicer to do without, but I'm not sure if it is possible in this case, > > but see > > > > http://en.wikipedia.org/wiki/Floyd's_cycle-finding_algorithm > > Problem is that floyd's is meant for graphs where each node only has one > outgoing edge. If nodes have more than one edge then the algorithm explodes. > > A totally different approach would be to simply mark cyclic contexts in > engraver-init.ly. That is - StaffGroup and ChoirStaff must be marked as > being cyclic. Furthermore we must require that all contexts that accept > cyclic contexts also must accept anything that the cyclic context > accepts. I.e. if Foo accepts StaffGroup and StaffGroup accepts Bar then > Foo must also accept Bar. > This way we can simply skip the cyclic contexts in > Context_def::path_to_acceptable_context I don't think that will work. We can change all these definitions on the fly using \with { \accepts .. } Even if this might not be working right now, but it should be in the future. I think that you it will be trivially easy to use a set<> iso. writing into the Context_def. Modifying read-only data is a no, because it will make our lives much more difficult if we ever want to share data between different executions (eg. threading.) > Perhaps we could even do this automatically during startup - doing one > test for cyclic contexts is acceptable - doing it each time > path_to_acceptable_context is called is not. -- Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel