-/*
- Ugh, why static?
- */
-Busy_playing_req *busy_req;
-Melisma_req *melisma_start_req;
-Melisma_req *melisma_stop_req;
-Melisma_playing_req * melisma_playing_req;
+#include "dispatcher.hh"
+#include "global-context.hh"
+#include "grob.hh"
+#include "input.hh"
+#include "international.hh"
+#include "listener.hh"
+#include "music-iterator.hh"
+#include "music.hh"
+
+class Lyric_combine_music_iterator : public Music_iterator
+{
+public:
+ Lyric_combine_music_iterator ();
+ Lyric_combine_music_iterator (Lyric_combine_music_iterator const &src);
+ DECLARE_SCHEME_CALLBACK (constructor, ());
+protected:
+ virtual void construct_children ();
+ virtual Moment pending_moment () const;
+ virtual void do_quit ();
+ virtual void process (Moment);
+ virtual bool run_always ()const;
+ virtual bool ok () const;
+ virtual void derived_mark () const;
+ virtual void derived_substitute (Context *, Context *);
+ void set_music_context (Context *to);
+private:
+ bool start_new_syllable ();
+ Context *find_voice ();
+ DECLARE_LISTENER (set_busy);
+ DECLARE_LISTENER (check_new_context);
+
+ bool pending_grace_lyric_;
+ bool music_found_;
+ Context *lyrics_context_;
+ Context *music_context_;
+ SCM lyricsto_voice_name_;
+
+ bool busy_;
+ Music_iterator *lyric_iter_;
+};