]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/repeated-music.cc
patch::: 1.1.27.jcn2: hat
[lilypond.git] / lily / repeated-music.cc
index 8f51eaf519d37bc0d359488e6eed26523004e730..e34a5c8da64606079c1aaa11d0cc74bb02f670e4 100644 (file)
 #include "repeated-music.hh"
 #include "musical-pitch.hh"
 
-//Repeated_music::Repeated_music (Music* r, int n, Music_list* a)
-Repeated_music::Repeated_music (Music* r, int n, Sequential_music* a)
+Repeated_music::Repeated_music (Music* r, int n, Music_sequence* a)
 {
   repeats_i_ = n;
+  unfold_b_ = false;
   repeat_p_ = r;
   alternative_p_ = a;
 }
@@ -29,7 +29,7 @@ Repeated_music::Repeated_music (Repeated_music const& s)
 {
   repeat_p_ = (s.repeat_p_) ? s.repeat_p_->clone () : 0;
   // urg?
-//  alternative_p_ = (Sequential_music*)(s.alternative_p_) ? s.alternative_p_->clone () : 0;
+  alternative_p_ = (s.alternative_p_) ? dynamic_cast <Music_sequence*> (s.alternative_p_->clone ()) : 0;
 }
 
 void
@@ -51,13 +51,33 @@ Repeated_music::transpose (Musical_pitch p)
 }
 
 Moment
-Repeated_music::duration () const
+Repeated_music::length_mom () const
 {
   Moment m;
   if (repeat_p_)
-    m += repeat_p_->duration ();
+    m += repeat_p_->length_mom ();
   if (alternative_p_)
-    m += alternative_p_->duration ();
+    m += alternative_p_->length_mom ();
   return m;
 }
 
+
+Musical_pitch
+Repeated_music::to_relative_octave (Musical_pitch p)
+{
+  p = repeat_p_->to_relative_octave (p);
+
+  p = alternative_p_->do_relative_octave (p, false); 
+  return p;
+  
+  /* ugh.  Should 
+     \relative c'' \repeat 2  { c4 } { < ... > }
+
+     and 
+     
+     \relative c'' \repeat 2  { c4 }
+     { { ...} }
+
+     behave differently?
+   */
+}