]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/folded-repeat-iterator.cc
patch::: 1.3.147.jcn1
[lilypond.git] / lily / folded-repeat-iterator.cc
index 514192a5cd84f4918c779782cf867c3154b37984..16454dba80f3d296a1dc2b761d16f80c2eb5617e 100644 (file)
@@ -3,10 +3,16 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1999--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
+
+/*
+   Folded repeats are a stupid idea at this point, so we refrain from
+   implementing get_music () and skip ().
+*/
+
 #include "folded-repeat-iterator.hh"
 #include "repeated-music.hh"
 #include "music-list.hh"
@@ -31,15 +37,23 @@ Folded_repeat_iterator::~Folded_repeat_iterator ()
   delete alternative_iter_p_;
 }
 
+Folded_repeat_iterator::Folded_repeat_iterator (Folded_repeat_iterator const &src)
+  : Music_iterator (src)
+{
+  main_iter_p_ = src.main_iter_p_ ? src.main_iter_p_->clone () : 0;
+  alternative_iter_p_ = src.alternative_iter_p_ ? src.alternative_iter_p_->clone () : 0;
+  main_length_mom_ = src.main_length_mom_;
+}
+
 Moment
-Folded_repeat_iterator::next_moment () const
+Folded_repeat_iterator::pending_moment () const
 {
   if (main_iter_p_)
     {
-      return main_iter_p_->next_moment ();
+      return main_iter_p_->pending_moment ();
     }
   else
-    return main_length_mom_ + alternative_iter_p_->next_moment ();
+    return main_length_mom_ + alternative_iter_p_->pending_moment ();
 }
 
 void
@@ -47,21 +61,21 @@ Folded_repeat_iterator::construct_children ()
 {
   Repeated_music  *  mus = dynamic_cast<Repeated_music*> (music_l_);
   main_iter_p_ = get_iterator_p (mus->body ());
-  if (!main_iter_p_->ok())
+  if (!main_iter_p_->ok ())
     {
-      leave_body ();
+     leave_body ();
       enter_alternative ();
     }
 }
 
 void
-Folded_repeat_iterator::do_process (Moment m)
+Folded_repeat_iterator::process (Moment m)
 {
   if (!m)
     {
       bool success = try_music (music_l_);
       if (!success)
-       music_l_->origin ()->warning ( _("no one to print a repeat brace"));
+       music_l_->origin ()->warning (("no one to print a repeat brace"));
     }
   
   if (main_iter_p_)
@@ -123,3 +137,5 @@ Folded_repeat_iterator::try_music_in_children (Music * m) const
     return alternative_iter_p_->try_music (m);
   return 0;
 }
+
+IMPLEMENT_CTOR_CALLBACK (Folded_repeat_iterator);