]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/simultaneous-music-iterator.cc
Run `make grand-replace'.
[lilypond.git] / lily / simultaneous-music-iterator.cc
index 0619f45ca087756c0f967ad23b741c05c6d52afb..271ae1dc7d59610b4a16ab7be3715fd3b3fd7886 100644 (file)
@@ -1,25 +1,23 @@
 /*
-  Simultaneous_music-iterator.cc -- implement Simultaneous_music_iterator
+  simultaneous-music-iterator.cc -- implement Simultaneous_music_iterator
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
+#include "simultaneous-music-iterator.hh"
+#include "music.hh"
 #include "context.hh"
 #include "warn.hh"
-#include "simultaneous-music-iterator.hh"
-#include "music-list.hh"
 #include "context-def.hh"
 
-
 Simultaneous_music_iterator::Simultaneous_music_iterator ()
 {
   create_separate_contexts_ = false;
   children_list_ = SCM_EOL;
 }
 
-
 void
 Simultaneous_music_iterator::derived_mark () const
 {
@@ -27,10 +25,10 @@ Simultaneous_music_iterator::derived_mark () const
 }
 
 void
-Simultaneous_music_iterator::derived_substitute (Context *f,Context *t)
+Simultaneous_music_iterator::derived_substitute (Context *f, Context *t)
 {
-  for (SCM s = children_list_; is_pair (s); s = ly_cdr (s))
-    unsmob_iterator (ly_car (s))-> substitute_outlet (f,t);
+  for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s))
+    unsmob_iterator (scm_car (s))->substitute_outlet (f, t);
 }
 
 void
@@ -41,59 +39,55 @@ Simultaneous_music_iterator::construct_children ()
   SCM i = get_music ()->get_property ("elements");
 
   children_list_ = SCM_EOL;
-  SCM * tail = &children_list_;
-  for (; is_pair (i); i = ly_cdr (i), j++)
+  SCM *tail = &children_list_;
+  for (; scm_is_pair (i); i = scm_cdr (i), j++)
     {
-      Music *mus = unsmob_music (ly_car (i));
+      Music *mus = unsmob_music (scm_car (i));
 
       SCM scm_iter = get_static_get_iterator (mus);
-      Music_iterator * mi = unsmob_iterator (scm_iter);
+      Music_iterator *mi = unsmob_iterator (scm_iter);
 
       /* if create_separate_contexts_ is set, create a new context with the
         number number as name */
 
-      SCM name = unsmob_context_def (get_outlet ()->definition_)->get_context_name ();
-      Context * t = (j && create_separate_contexts_)
+      SCM name = ly_symbol2scm (get_outlet ()->context_name ().c_str ());
+      Context *c = (j && create_separate_contexts_)
        ? get_outlet ()->find_create_context (name, to_string (j), SCM_EOL)
        : get_outlet ();
 
-      if (!t)
-       t = get_outlet ();
+      if (!c)
+       c = get_outlet ();
 
-      mi->init_translator (mus, t);
+      mi->init_context (mus, c);
       mi->construct_children ();
 
-      if (mi->ok ()) 
+      if (mi->ok ())
        {
          *tail = scm_cons (scm_iter, *tail);
          tail = SCM_CDRLOC (*tail);
        }
       else
-       mi->set_translator (0);
+       mi->quit ();
     }
 }
 
 void
 Simultaneous_music_iterator::process (Moment until)
 {
-  SCM *proc = &children_list_; 
-  while (is_pair (*proc))
+  SCM *proc = &children_list_;
+  while (scm_is_pair (*proc))
     {
-      Music_iterator * i = unsmob_iterator (ly_car (*proc));
+      Music_iterator *i = unsmob_iterator (scm_car (*proc));
       if (i->run_always ()
-         || i->pending_moment () == until) 
-       {
-         i->process (until);
-       }
+         || i->pending_moment () == until)
+       i->process (until);
       if (!i->ok ())
        {
          i->quit ();
-         *proc = ly_cdr (*proc);
+         *proc = scm_cdr (*proc);
        }
       else
-       {
-         proc = SCM_CDRLOC (*proc);
-       }
+       proc = SCM_CDRLOC (*proc);
     }
 }
 
@@ -102,27 +96,27 @@ Simultaneous_music_iterator::pending_moment () const
 {
   Moment next;
   next.set_infinite (1);
-  
-  for (SCM s = children_list_; is_pair (s); s = ly_cdr (s))
+
+  for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s))
     {
-      Music_iterator * it = unsmob_iterator (ly_car (s));
-      next = next <? it->pending_moment ();
+      Music_iterator *it = unsmob_iterator (scm_car (s));
+      next = min (next, it->pending_moment ());
     }
-  
+
   return next;
 }
 
 bool
 Simultaneous_music_iterator::ok () const
 {
-  bool run_always_ok = false; 
-  for (SCM s = children_list_; is_pair (s); s = ly_cdr (s))
+  bool run_always_ok = false;
+  for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s))
     {
-      Music_iterator * it = unsmob_iterator (ly_car (s));
+      Music_iterator *it = unsmob_iterator (scm_car (s));
       if (!it->run_always ())
        return true;
       else
-       run_always_ok =  run_always_ok || it->ok ();
+       run_always_ok = run_always_ok || it->ok ();
     }
   return run_always_ok;
 }
@@ -130,29 +124,20 @@ Simultaneous_music_iterator::ok () const
 bool
 Simultaneous_music_iterator::run_always () const
 {
-  for (SCM s = children_list_; is_pair (s); s = ly_cdr (s))
+  for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s))
     {
-      Music_iterator * it = unsmob_iterator (ly_car (s));
+      Music_iterator *it = unsmob_iterator (scm_car (s));
       if (it->run_always ())
        return true;
     }
   return false;
 }
 
-Music_iterator*
-Simultaneous_music_iterator::try_music_in_children (Music *m) const
-{
-  Music_iterator * b=0;
-  for (SCM s = children_list_; !b && is_pair (s); s = ly_cdr (s))
-    b =unsmob_iterator (ly_car (s))->try_music (m);
-  return b;
-}
-
 void
 Simultaneous_music_iterator::do_quit ()
 {
-  for (SCM s = children_list_; is_pair (s); s = ly_cdr (s))
-    unsmob_iterator (ly_car (s))->quit ();
+  for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s))
+    unsmob_iterator (scm_car (s))->quit ();
 }
 
 IMPLEMENT_CTOR_CALLBACK (Simultaneous_music_iterator);