source file of the GNU LilyPond music typesetter
- (c) 1999--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1999--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "lyric-combine-music.hh"
-#include "musical-pitch.hh"
+#include "lyric-combine-music-iterator.hh"
+#include "pitch.hh"
-Lyric_combine_music::Lyric_combine_music (Music * m, Music * l)
+Lyric_combine_music::Lyric_combine_music (SCM l)
+ : Music (l)
{
- music_p_ = m;
- lyrics_p_ = l;
+ set_mus_property ("iterator-ctor",
+ Lyric_combine_music_iterator::constructor_cxx_function);
}
-Lyric_combine_music::~Lyric_combine_music ()
-{
- delete music_p_;
- delete lyrics_p_;
-}
-
-Lyric_combine_music::Lyric_combine_music (Lyric_combine_music const&s)
- : Music (s)
-{
- music_p_ = s.music_p_ ? s.music_p_->clone ():0;
- lyrics_p_ = s.lyrics_p_ ? s.lyrics_p_->clone ():0;
-}
void
-Lyric_combine_music::transpose (Musical_pitch p)
+Lyric_combine_music::transpose (Pitch p)
{
- music_p_->transpose (p);
- lyrics_p_->transpose (p);
+ music_l ()->transpose (p);
+ lyrics_l () ->transpose (p);
}
-void
-Lyric_combine_music::do_print () const
-{
- music_p_->print();
- lyrics_p_->print ();
-}
Moment
Lyric_combine_music::length_mom () const
{
- return music_p_->length_mom ();
+ return music_l ()->length_mom ();
}
-Musical_pitch
-Lyric_combine_music::to_relative_octave ( Musical_pitch p )
+Pitch
+Lyric_combine_music::to_relative_octave (Pitch p)
{
- p = music_p_->to_relative_octave (p);
- return lyrics_p_->to_relative_octave (p);
+ p = music_l ()->to_relative_octave (p);
+ return lyrics_l () ->to_relative_octave (p);
}
void
Lyric_combine_music::compress (Moment m)
{
- music_p_->compress (m);
+ music_l ()->compress (m);
}
+
+
Music*
Lyric_combine_music::music_l () const
{
- return music_p_;
+ SCM l = get_mus_property ("elements");
+ if (!gh_pair_p (l))
+ return 0;
+ return unsmob_music (gh_car (l));
}
+
Music*
Lyric_combine_music::lyrics_l () const
{
- return lyrics_p_;
+ 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));
}
+
+Lyric_combine_music::Lyric_combine_music ()
+ : Music (SCM_EOL)
+{
+}
+
+ADD_MUSIC (Lyric_combine_music);