-Music_iterator*
-Music_iterator::static_get_iterator_p (Music *m)
-{
- Music_iterator * p =0;
-
- /* It would be nice to do this decentrally, but the order of this is
- significant. */
- if (dynamic_cast<Request_chord *> (m))
- p = new Request_chord_iterator;
- else if (dynamic_cast<Lyric_combine_music *> (m))
- p = new Lyric_combine_music_iterator;
- else if (dynamic_cast<Simultaneous_music *> (m))
- p = new Simultaneous_music_iterator;
- else if (dynamic_cast<Sequential_music *> (m))
- p = new Sequential_music_iterator;
- else if (dynamic_cast<Translation_property *> (m))
- p = new Property_iterator;
- else if (dynamic_cast<Change_translator *> (m))
- p = new Change_iterator;
- else if (dynamic_cast<Push_translation_property*> (m))
- p = new Push_property_iterator;
- else if (dynamic_cast<Pop_translation_property*> (m))
- p = new Pop_property_iterator;
- else if (dynamic_cast<Time_scaled_music *> (m))
- p = new Time_scaled_music_iterator;
- else if (dynamic_cast<Grace_music *> (m))
- p = new Grace_iterator;
- else if (dynamic_cast<Auto_change_music *> (m))
- p = new Auto_change_iterator;
- else if (dynamic_cast<Part_combine_music *> (m))
- 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))