]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/voice-iterator.cc
patch::: 1.1.3.jcn4: jcn4
[lilypond.git] / lily / voice-iterator.cc
index a5b3d60711d5f733d70dfef15692654c413b940e..3c902918d5ef3045ceb3cd1d299f2f12005320b4 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  voice-iter.cc -- implement Voice_iterator
+  Sequential_music-iter.cc -- implement Sequential_music_iterator
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
 
 
 void
-Voice_iterator::do_print() const
+Sequential_music_iterator::do_print() const
 {
   if (iter_p_)
     iter_p_->print();
 }
 
-Voice_iterator::Voice_iterator (Voice const*v)
-  : PCursor<Music*> (v->music_p_list_)
+Sequential_music_iterator::Sequential_music_iterator ()
 {
-  here_mom_ = v->offset_mom_;
-  voice_C_ = v;
+  cursor_p_ = 0;
+  here_mom_ = 0;
   iter_p_ =0;
 }
 
+Sequential_music*
+Sequential_music_iterator::sequential_music_l () const
+{
+  return (Sequential_music *)music_l_;
+}
+
 void
-Voice_iterator::construct_children()
+Sequential_music_iterator::construct_children()
 {
-  while (PCursor<Music*>::ok()) 
+  cursor_p_ = new PCursor<Music*> (sequential_music_l ()->music_p_list_p_->top ());
+  
+  while (cursor_p_->ok()) 
     {
       start_next_element();
       if (!iter_p_->ok()) 
@@ -39,47 +46,47 @@ Voice_iterator::construct_children()
        }
       else 
        {
-         set_voice_translator();
+         set_Sequential_music_translator();
          break;
        }
     }
 }
 
 void 
-Voice_iterator::leave_element()
+Sequential_music_iterator::leave_element()
 {
   delete iter_p_;
   iter_p_ =0;
-  MInterval elt_time = ptr()->time_int ();
-  if (!elt_time.empty_b())
-    here_mom_ += elt_time.length();
-  PCursor<Music*>::next();
+  Moment elt_time = cursor_p_->ptr()->duration ();
+  here_mom_ += elt_time;
+  cursor_p_->next();
 }
 
 void
-Voice_iterator::start_next_element()
+Sequential_music_iterator::start_next_element()
 {
   assert (!iter_p_);
-  iter_p_ = get_iterator_p (ptr());
+  iter_p_ = get_iterator_p ( cursor_p_->ptr());
 }
 
 void
-Voice_iterator::set_voice_translator()
+Sequential_music_iterator::set_Sequential_music_translator()
 {
   if (iter_p_->report_to_l()->depth_i () > report_to_l ()->depth_i ())
     set_translator (iter_p_->report_to_l());
 }
 
-Voice_iterator::~Voice_iterator()
+Sequential_music_iterator::~Sequential_music_iterator()
 {
+  delete cursor_p_;
   assert (! iter_p_);
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Voice_iterator,Music_iterator);
+IMPLEMENT_IS_TYPE_B1(Sequential_music_iterator,Music_iterator);
 
 void
-Voice_iterator::process_and_next (Moment until)
+Sequential_music_iterator::do_process_and_next (Moment until)
 {
   while (1) 
     {
@@ -97,10 +104,10 @@ Voice_iterator::process_and_next (Moment until)
        {
          leave_element();
          
-         if (PCursor<Music*>::ok()) 
+         if (cursor_p_->ok()) 
            {
              start_next_element();
-             set_voice_translator();
+             set_Sequential_music_translator();
            }
          else 
            {
@@ -111,19 +118,18 @@ Voice_iterator::process_and_next (Moment until)
 
 loopexit:
 
-  Music_iterator::process_and_next (until);
+  Music_iterator::do_process_and_next (until);
 }
 
 Moment
-Voice_iterator::next_moment() const
+Sequential_music_iterator::next_moment() const
 {
   return iter_p_->next_moment() + here_mom_;
 }
 
 bool
-Voice_iterator::ok() const
+Sequential_music_iterator::ok() const
 {
   return iter_p_;
 }
 
-