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 ();
-
+ 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;
+}
+
+
/*
Ugh, why static?
Lyric_combine_music_iterator::Lyric_combine_music_iterator ()
{
+ music_iter_ =0;
+ lyric_iter_ =0;
+
if (!busy_req)
{
busy_req
melisma_playing_req
= make_music_by_name (ly_symbol2scm ("MelismaPlayingEvent"));
}
-
- music_iter_ =0;
- lyric_iter_ =0;
}
Moment
scm_gc_mark (lyric_iter_->self_scm());
}
+void
+Lyric_combine_music_iterator::derived_substitute (Translator_group*f,Translator_group* t)
+{
+ if (music_iter_)
+ music_iter_->substitute_outlet (f,t);
+ if (lyric_iter_)
+ lyric_iter_->substitute_outlet (f,t);
+}
+
void
Lyric_combine_music_iterator::construct_children ()
{
music_iter_->quit();
if (lyric_iter_)
lyric_iter_->quit();
-
}
+
Lyric_combine_music_iterator::Lyric_combine_music_iterator (Lyric_combine_music_iterator const & src)
: Music_iterator (src)
{