+ VIRTUAL_COPY_CONS (Music_iterator);
+
+ Moment music_get_length () const;
+ Moment music_start_mom () const;
+ Music_iterator ();
+ Music_iterator (Music_iterator const&);
+
+ /**
+ Do the reporting. Will try MUSIC_L_ in its own translator first,
+ then its children. Returns the iterator that succeeded
+ */
+ Music_iterator * try_music (Music *) const;
+
+ /**
+ The translation unit that we this iterator is reporting to now.
+ */
+ Translator_group* report_to () const;
+
+ void set_translator (Translator_group*);
+
+ /** Get an iterator matching the type of MUS, and use TRANS to find
+ an accompanying translation unit
+ */
+ static SCM get_static_get_iterator (Music * mus);
+ void init_translator (Music *, Translator_group *);
+void quit ();
+
+
+ virtual Moment pending_moment () const;
+ virtual bool ok () const;
+ virtual SCM get_pending_events (Moment until)const;
+ virtual void process (Moment until);
+ virtual void skip (Moment until);
+ virtual void derived_mark ()const;
+ virtual void construct_children ();
+
+ /**
+ Construct sub-iterators, and set the translator to
+ report to.
+ */
+
+ DECLARE_SCHEME_CALLBACK(constructor, ());
+
+ /**
+ Get an iterator for MUS, inheriting the translation unit from THIS.
+ */
+ SCM get_iterator (Music *) const;
+
+ virtual Music_iterator* try_music_in_children (Music *) const;
+
+ Music * get_music () const;