X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpart-combine-music.cc;h=8724d8607113841323fec17b5dcf12d30d25ae70;hb=27c10914b6b29e751a97d0e73be86f101e7069a7;hp=d9e98329b3be75126a6068f0c7d1a424eaf255bb;hpb=efaf6bd61c89103205039c82fbcfc4d9ab1bb55e;p=lilypond.git diff --git a/lily/part-combine-music.cc b/lily/part-combine-music.cc index d9e98329b3..8724d86071 100644 --- a/lily/part-combine-music.cc +++ b/lily/part-combine-music.cc @@ -3,36 +3,29 @@ source file of the GNU LilyPond music typesetter - (c) 2000 Jan Nieuwenhuizen + (c) 2000--2002 Jan Nieuwenhuizen */ #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 ()); - - scm_unprotect_object (f->self_scm()); - scm_unprotect_object (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 @@ -40,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); @@ -57,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);