-Music_iterator*
-Music_iterator::static_get_iterator_p (Music *m)
-{
- Music_iterator * p =0;
-
- SCM type = m->get_mus_property ("type") ;
-
- if (type == ly_symbol2scm ("property-set"))
- p = new Property_iterator;
- else if (type == ly_symbol2scm ("property-push"))
- p = new Push_property_iterator;
- else if (type == ly_symbol2scm ("property-pop"))
- p = new Pop_property_iterator;
- else if (type == ly_symbol2scm ("output-property"))
- p = new Output_property_music_iterator;
- else if (type == ly_symbol2scm ("request-chord"))
- p = new Request_chord_iterator;
- else if (type == ly_symbol2scm ("lyric-combine-music"))
- p = new Lyric_combine_music_iterator;
- else if (type == ly_symbol2scm ("simultaneous-music"))
- p = new Simultaneous_music_iterator;
- else if (type == ly_symbol2scm ("sequential-music"))
- p = new Sequential_music_iterator;
- else if (type == ly_symbol2scm ("change-translator"))
- p = new Change_iterator;
- else if (type == ly_symbol2scm ("time-scaled-music"))
- p = new Time_scaled_music_iterator;
- else if (type == ly_symbol2scm ("grace-music"))
- p = new Grace_iterator;
- else if (type == ly_symbol2scm ("auto-change-music"))
- p = new Auto_change_iterator;
- else if (type == ly_symbol2scm ("part-combined-music"))
- p = new Part_combine_music_iterator;
- else if (dynamic_cast<Music_wrapper *> (m))
- p = new Music_wrapper_iterator;
- else if (Repeated_music * n = dynamic_cast<Repeated_music *> (m))
- {
- if (n->type_ == "tremolo")
- p = new Chord_tremolo_iterator;
- else if (n->fold_b_)
- p = new Folded_repeat_iterator;
- else
- p = new Unfolded_repeat_iterator;
- }
- else
- {
- p = new Simple_music_iterator ;
- }