]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/part-combine-music.cc
* GNUmakefile.in (short-examples):
[lilypond.git] / lily / part-combine-music.cc
index 27064244b7628996c83685b30524affc92cf8581..8724d8607113841323fec17b5dcf12d30d25ae70 100644 (file)
@@ -3,34 +3,29 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 2000--2002 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
 #include "part-combine-music.hh"
-#include "musical-pitch.hh"
+#include "part-combine-music-iterator.hh"
+#include "pitch.hh"
 
-Part_combine_music::Part_combine_music (String what, Music * f, Music * s)
+Part_combine_music::Part_combine_music (SCM l)
+  : Music (l)
 {
-  what_str_ = what;
-  set_mus_property ("one", f->self_scm ());
-  set_mus_property ("two", s->self_scm ());  
+  set_mus_property ("iterator-ctor",
+                   Part_combine_music_iterator::constructor_cxx_function);
 }
 
-
 void
-Part_combine_music::transpose (Musical_pitch p)
+Part_combine_music::transpose (Pitch p)
 {
   first_l ()->transpose (p);
   second_l () ->transpose (p);
 }
 
-void
-Part_combine_music::do_print () const  
-{
-  first_l ()->print();
-  second_l () ->print ();
-}
+
 
 Moment
 Part_combine_music::length_mom () const
@@ -38,8 +33,8 @@ Part_combine_music::length_mom () const
   return first_l ()->length_mom ();
 }
 
-Musical_pitch
-Part_combine_music::to_relative_octave (Musical_pitch p)
+Pitch
+Part_combine_music::to_relative_octave (Pitch p)
 {
   p = first_l ()->to_relative_octave (p);
   return second_l ()->to_relative_octave (p);
@@ -55,11 +50,29 @@ Part_combine_music::compress (Moment m)
 Music*
 Part_combine_music::first_l () const
 {
-  return unsmob_music (get_mus_property ("one"));
+  SCM l = get_mus_property ("elements");
+  if (!gh_pair_p (l))
+    return 0;
+  return unsmob_music (gh_car (l));
 }
 
+
 Music*
 Part_combine_music::second_l () const
 {
-  return unsmob_music (get_mus_property ("two"));
+  SCM l = get_mus_property ("elements");
+  if (!gh_pair_p (l))
+    return 0;
+  l = gh_cdr (l);
+  if (!gh_pair_p (l))
+    return 0;
+  return unsmob_music (gh_car (l));
 }
+
+
+Part_combine_music::Part_combine_music ()
+  : Music (SCM_EOL)
+{
+}
+
+ADD_MUSIC (Part_combine_music);