-bool
-Music_iterator::ok() const
-{
- return first_b_;
-}
-
-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))
- {
- 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 ;
- }