-bool
-Music_iterator::ok() const
-{
- return first_b_;
-}
-
-Music_iterator*
-Music_iterator::static_get_iterator_p (Music const *m)
-{
- Music_iterator * p =0;
-
- if (dynamic_cast<Request_chord const *> (m))
- p = new Request_chord_iterator;
- else if (dynamic_cast<Simultaneous_music const *> (m))
- p = new Simultaneous_music_iterator;
- else if (dynamic_cast<Sequential_music const *> (m))
- p = new Sequential_music_iterator;
- else if (dynamic_cast<Translation_property const *> (m))
- p = new Property_iterator;
- else if (dynamic_cast<Change_translator const *> (m))
- p = new Change_iterator;
- else if (dynamic_cast<Time_scaled_music const *> (m))
- p = new Time_scaled_music_iterator;
- else if (dynamic_cast<Grace_music const*> (m))
- p = new Grace_iterator;
- else if (dynamic_cast<Music_wrapper const *> (m))
- p = new Music_wrapper_iterator;
- else if (Repeated_music const * n = dynamic_cast<Repeated_music const *> (m))
- {
- if (n->fold_b_)
- p = new Folded_repeat_iterator;
- else
- p = new Unfolded_repeat_iterator;
- }
- else
- assert (0);
+void
+Music_iterator::derived_substitute (Context *, Context *)
+{
+}
+
+SCM
+Music_iterator::get_iterator (Music *m) const
+{
+ SCM ip = get_static_get_iterator (m);
+ Music_iterator *p = unsmob_iterator (ip);