+#include "event.hh"
+#include "note-head.hh"
+#include "grob.hh"
+#include "music-iterator.hh"
+
+class Lyric_combine_music_iterator : public Music_iterator
+{
+public:
+ VIRTUAL_COPY_CONS (Music_iterator);
+ 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 Music_iterator *try_music_in_children (Music *) const;
+
+ virtual bool ok () const;
+ virtual void derived_mark () const;
+ virtual void derived_substitute (Translator_group*,Translator_group*) ;
+private:
+ bool get_busy_status ()const ;
+ bool melisma_busy ();
+
+ Music_iterator * music_iter_;
+ Music_iterator * lyric_iter_;
+};
+
+
+bool
+melisma_busy (Translator* tr)
+{
+ SCM melisma_properties = tr->get_property ("melismaBusyProperties");
+ bool busy = false;
+
+ for (; gh_pair_p (melisma_properties);
+ melisma_properties = gh_cdr (melisma_properties))
+ busy = busy || to_boolean (tr->internal_get_property (gh_car (melisma_properties)));
+
+ return busy;
+}
+
+