]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/simultaneous-music-iterator.cc
patch::: 1.3.58.jcn2
[lilypond.git] / lily / simultaneous-music-iterator.cc
index 72e59e1d612fda3b0d44ab0a180242374ca2ae7b..7e60780cc941bb50f8429953ab0e3f6b13ae74cf 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
@@ -28,7 +28,8 @@ Simultaneous_music_iterator::construct_children()
   int j = 0;
   Music_sequence const *sim = dynamic_cast<Music_sequence const*> (music_l_);
 
-  for (Cons<Music> *i = sim->music_p_list_p_->head_; i;  i = i->next_, j++)
+  Cons<Music> *i = (sim->music_p_list_p_) ? sim->music_p_list_p_->head_ : 0;
+  for (; i;  i = i->next_, j++)
     {
       Music_iterator * mi = static_get_iterator_p (i->car_);
 
@@ -40,6 +41,9 @@ Simultaneous_music_iterator::construct_children()
                                                    to_str (j))
        : report_to_l ();
 
+      if (!t)
+       t = report_to_l ();
+
       mi->init_translator (i->car_, t);
       mi->construct_children ();
       
@@ -101,3 +105,11 @@ Simultaneous_music_iterator::ok() const
   return children_p_list_.head_;
 }
 
+Music_iterator*
+Simultaneous_music_iterator::try_music_in_children (Music const*m) const
+{
+  Music_iterator * b=0;
+  for (Cons<Music_iterator> *p = children_p_list_.head_; !b && p; p = p->next_)
+    b =p->car_->try_music (m);
+  return b;
+}