]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/repeated-music.cc
release: 1.1.9
[lilypond.git] / lily / repeated-music.cc
index ab6aad08176f1f2af73e5ccb0f753d9c09ca411c..a3751c38cb4538501c766e029c2933cc344c1c7d 100644 (file)
@@ -8,10 +8,10 @@
  */
 
 #include "repeated-music.hh"
-#include "music-wrapper.hh"
-#include "music-list.hh"
+#include "musical-pitch.hh"
 
-Repeated_music::Repeated_music (Music_wrapper *r, int n, Sequential_music* a)
+//Repeated_music::Repeated_music (Music* r, int n, Music_list* a)
+Repeated_music::Repeated_music (Music* r, int n, Music_sequence* a)
 {
   repeats_i_ = n;
   repeat_p_ = r;
@@ -27,11 +27,10 @@ Repeated_music::~Repeated_music ()
 Repeated_music::Repeated_music (Repeated_music const& s)
   : Music (s)
 {
-#if 0
- // urg?
-  repeat_p_ = (Music_wrapper*)(s.repeat_p_) ? s.repeat_p_->clone () : 0;
-  alternative_p_ = (Sequential_music*)(s.alternative_p_) ? s.alternative_p_->clone () : 0;
-#endif 
+  repeat_p_ = (s.repeat_p_) ? s.repeat_p_->clone () : 0;
+  // urg?
+//  alternative_p_ = (s.alternative_p_) ? dynamic_cast <Music_list*> (s.alternative_p_->clone ()) : 0;
+  alternative_p_ = (s.alternative_p_) ? dynamic_cast <Music_sequence*> (s.alternative_p_->clone ()) : 0;
 }
 
 void
@@ -62,3 +61,24 @@ Repeated_music::duration () const
     m += alternative_p_->duration ();
   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?
+   */
+}