From: Jan Nieuwenhuizen Date: Mon, 23 Nov 1998 21:29:27 +0000 (+0100) Subject: patch::: 1.1.8.jcn1: pats X-Git-Tag: release/1.1.9~4 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2b3853cd624f78756ba0f891fe220776a496d288;p=lilypond.git patch::: 1.1.8.jcn1: pats pl 8.jcn1 - bf: lyric-engraver: handle multiple requests (don't overwrite) - bf: guile-config - music-list-iterator --- Generated by janneke@gnu.org using package-diff 0.62, >From = lilypond-1.1.8, To = lilypond-1.1.8.jcn1 usage cd lilypond-source-dir; patch -E -p1 < lilypond-1.1.8.jcn1.diff Patches do not contain automatically generated files or (urg) empty directories, i.e., you should rerun autoconf, configure and possibly make outdirs. --state 1.1.8 1.1.8.jcn1 ++state --- diff --git a/NEWS b/NEWS index 7dcddaa33b..4c5561f826 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,14 @@ ---- ../lilypond-1.1.8/NEWS Sun Nov 22 20:16:26 1998 +--- ../lilypond-1.1.8/NEWS Sat Nov 21 12:21:29 1998 +++ b/NEWS Mon Nov 23 21:47:36 1998 +@@ -1,3 +1,8 @@ +pl 8.jcn1 + - bf: lyric-engraver: handle multiple requests (don't overwrite) + - bf: guile-config + - music-list-iterator + + pl 8 + + pl7.jcn3--- ../lilypond-1.1.8/NEWS Sun Nov 22 20:16:26 1998 ++ b/NEWS Sun Nov 22 20:43:39 1998 @@ -1,3 +1,6 @@ pl 8.hwn1 diff --git a/VERSION b/VERSION index 2a172de0de..216dcd2ab1 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 PATCH_LEVEL=8 -MY_PATCH_LEVEL=hwn1 +MY_PATCH_LEVEL=jcn1 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/aclocal.m4 b/aclocal.m4 index 46b9e1839e..50748a506a 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -170,7 +170,7 @@ AC_DEFUN(AC_STEPMAKE_GUILE, [ AC_CHECK_LIB(guile, scm_boot_guile)\ ) if test "$ac_cv_lib_guile_scm_shell" != yes -a \ - "$ac_cv_lib_scm_boot_guile" != yes ; then + "$ac_cv_lib_guile_scm_boot_guile" != yes ; then AC_STEPMAKE_WARN(You should install guile 1.3 or newer) fi ]) diff --git a/input/test/repeat.fly b/input/test/repeat.fly deleted file mode 100644 index a41926a8a6..0000000000 --- a/input/test/repeat.fly +++ /dev/null @@ -1 +0,0 @@ -a b c d \repeat 2 { { c c c c d d d d e e e e } } \alternative { { e e e e } { e e e g } } c c c c c c c c diff --git a/input/test/repeat.ly b/input/test/repeat.ly new file mode 100644 index 0000000000..f4dbf0feb9 --- /dev/null +++ b/input/test/repeat.ly @@ -0,0 +1,18 @@ +\score{ + < + \type Staff \notes\relative c''{ + c c c c + \repeat 2 { { d d d d } } + \alternative { { a a a a } { a a a a } } + } + \type Lyrics \lyrics { + De eer- ste < { maat } { moet } > + \repeat 2 { { } } + \alternative < + { en dan twee keer } + { een koe- plet _ } + > + en dan nog dit er ach- ter aan + } + > +} diff --git a/input/test/star.ly b/input/test/star.ly index 9ec0ea4a97..f498e0bf4d 100644 --- a/input/test/star.ly +++ b/input/test/star.ly @@ -56,19 +56,15 @@ $staff2_voice_2 = \notes { [g8. g16] fis4.~a,8 [d8 e8] fis2 [b8 b8] a4. a8 a,4 d2 s4 } -$text1 = \lyrics{ - Oh4 __ say. can you see,2 by8. the16 dawn's4 ear- ly light2 What8 +$text = \lyrics{ + Oh4 __ \repeat 2 { { } } + \alternative < + { say. can you see,2 by8. the16 dawn's4 ear- ly light2 What8 so8 proud-4. ly8 we4 hailed,2 At8. the16 twi-4 light's last gleam- - ing. Whose8. broad16 -} - -$text2 = \lyrics{ - _4 stripes and bright stars,2 through8 the8 per-4 il- ous fight,2 - O'er8 the8 ram-4. parts8 we4 watched,2 were8. so16 gal-4 lant- ly - _ _ _ -} - -$text3 = \lyrics{ + ing. Whose8. broad16 } + { stripes4 and bright stars,2 through8. the16 per-4 il- ous fight,2 + O'er8 the8 ram-4. parts8 we4 watched,2 were8. so16 gal-4 lant- ly } + > stream-4 ing. And8. the16 rock-4 ets' red glare,2 the8 bombs8 burst-4 ing in air,2 gave4 proof4. through8 the4 night2 that8. our16 flag4 was still there,2 Oh4 say, does that star- span- @@ -81,9 +77,7 @@ global = \notes { \key D; \partial 4; \skip 4; - \bar "|:"; \skip 2.*8; - \bar ":|"; \skip 2.*16; \skip 2.; \bar "|."; @@ -99,10 +93,7 @@ global = \notes { \notes \transpose c'' {\voicetwo \$staff1_voice_2 } > \type Lyrics = one \lyrics < -% urg, too much distance between two texts; fixme first -% \$text1 -% { \$text2 \$text3 } - { \$text1 \$text3 } + \$text > \type Staff=staffB < \global diff --git a/lily/chord-iterator.cc b/lily/chord-iterator.cc deleted file mode 100644 index 1f61364c2b..0000000000 --- a/lily/chord-iterator.cc +++ /dev/null @@ -1,89 +0,0 @@ -/* - Simultaneous_music-iter.cc -- implement Simultaneous_music_iterator - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - -#include "translator-group.hh" -#include "debug.hh" -#include "chord-iterator.hh" - -#include "music-list.hh" - - -void -Simultaneous_music_iterator::construct_children() -{ - int j = 0; - for (PCursor i (simultaneous_music_l ()->music_p_list_p_->top()); - i.ok(); j++, i++) - { - Music_iterator * mi = get_iterator_p (i.ptr()); - if (mi->ok()) - { - if (simultaneous_music_l ()->translator_type_str_.empty_b ()) - set_translator (mi->report_to_l()->ancestor_l (0)); - children_p_list_.bottom().add (mi); - } - else - delete mi; - } -} - - -void -Simultaneous_music_iterator::do_print() const -{ -#ifndef NPRINT - for (PCursor i (children_p_list_.top()); i.ok (); i++) - { - i->print(); - } -#endif -} - -void -Simultaneous_music_iterator::do_process_and_next (Moment until) -{ - for (PCursor i (children_p_list_.top()); i.ok ();) - { - if (i->next_moment() == until) - { - i->process_and_next (until); - } - if (!i->ok()) - delete i.remove_p(); - else - i++; - } - Music_iterator::do_process_and_next (until); -} - - - - -Moment -Simultaneous_music_iterator::next_moment() const -{ - Moment next; - next.set_infinite (1); - for (PCursor i (children_p_list_.top()); i.ok (); i++) - next = next next_moment() ; - return next; -} - - - -bool -Simultaneous_music_iterator::ok() const -{ - return children_p_list_.size(); -} - -Simultaneous_music* -Simultaneous_music_iterator::simultaneous_music_l ()const -{ - return ( Simultaneous_music *) music_l_; -} diff --git a/lily/include/chord-iterator.hh b/lily/include/chord-iterator.hh deleted file mode 100644 index 6b689e945d..0000000000 --- a/lily/include/chord-iterator.hh +++ /dev/null @@ -1,31 +0,0 @@ -/* - chord-iter.hh -- declare Chord_iterator - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#ifndef Simultaneous_music_ITER_HH -#define Simultaneous_music_ITER_HH - - -#include "music-iterator.hh" -#include "plist.hh" - -class Simultaneous_music_iterator : public Music_iterator -{ - Simultaneous_music *simultaneous_music_l() const; - Pointer_list children_p_list_; -public: - // construction is public -protected: - virtual void do_print() const; - virtual void construct_children(); - virtual void do_process_and_next (Moment); - virtual Moment next_moment() const; - virtual bool ok() const; -}; - -#endif // Simultaneous_music_ITER_HH diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 6c75f333d2..20a49da261 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -78,10 +78,6 @@ struct General_script_def; struct Graphical_element; struct Graphical_axis_group; -struct Mark_req; -struct Music_output; -struct Musical_pitch; -struct Music_output_def; struct Global_translator; struct Hara_kiri_line_group_engraver; struct Hara_kiri_vertical_group_spanner; @@ -114,7 +110,7 @@ struct Local_key_engraver; struct Lookup; struct Lyric_item; struct Lyric_req; -struct My_lily_lexer; +struct Mark_req; struct Measure_grouping_req; struct Melodic_req; struct Midi_def; @@ -137,14 +133,19 @@ struct Molecule; struct Multi_measure_rest; struct Multi_measure_rest_req; struct Multi_measure_rest_engraver; -struct Musical_script_req; -struct Music_list; +struct Music; struct Musical_req; struct Musical_span_req; -struct Music; +struct Musical_script_req; +struct Music_list; +struct Music_list_iterator; +struct Music_output; +struct Music_output_def; +struct Musical_pitch; struct Music_sequence; -struct Music_wrapper_iterator; struct Music_wrapper; +struct Music_wrapper_iterator; +struct My_lily_lexer; struct My_lily_parser; struct Note_column; struct Note_column_engraver; diff --git a/lily/include/lyric-engraver.hh b/lily/include/lyric-engraver.hh index 47a2b58bb1..15b5f510e0 100644 --- a/lily/include/lyric-engraver.hh +++ b/lily/include/lyric-engraver.hh @@ -14,17 +14,21 @@ #include "lily-proto.hh" -class Lyric_engraver : public Engraver { - Lyric_req* lreq_l_; - Text_item *lyric_item_p_; +class Lyric_engraver : public Engraver +{ protected: virtual void do_pre_move_processing(); virtual bool do_try_music (Music*); virtual void do_process_requests(); virtual void do_post_move_processing(); + public: - VIRTUAL_COPY_CONS(Translator); - Lyric_engraver(); + VIRTUAL_COPY_CONS(Translator); + +private: + Link_array lyric_req_l_arr_; + Link_array text_p_arr_; }; + #endif // LYRIC_ENGRAVER_HH diff --git a/lily/include/music-list-iterator.hh b/lily/include/music-list-iterator.hh new file mode 100644 index 0000000000..6cc15b5763 --- /dev/null +++ b/lily/include/music-list-iterator.hh @@ -0,0 +1,34 @@ +/* + music-list-iterator.hh -- declare Music_list_iterator + + source file of the GNU LilyPond music typesetter + + (c) 1998 Jan Nieuwenhuizen +*/ + + +#ifndef MUSIC_LIST_ITERATOR_HH +#define MUSIC_LIST_ITERATOR_HH + +#include "music-iterator.hh" +#include "pcursor.hh" +#include "plist.hh" + +class Music_list_iterator : public Music_iterator +{ +public: + Music_list_iterator (); + virtual ~Music_list_iterator (); + + virtual void construct_children (); + virtual Moment next_moment () const; + virtual bool ok () const; + +protected: + Music_list* music_list_l () const; + + virtual void do_print () const; + virtual void do_process_and_next (Moment); +}; + +#endif // MUSIC_LIST_ITERATOR_HH diff --git a/lily/include/repeated-music-iterator.hh b/lily/include/repeated-music-iterator.hh index 081faa7c71..5495440493 100644 --- a/lily/include/repeated-music-iterator.hh +++ b/lily/include/repeated-music-iterator.hh @@ -10,14 +10,13 @@ #ifndef REPEATED_MUSIC_ITERATOR_HH #define REPEATED_MUSIC_ITERATOR_HH -#include "music-wrapper-iterator.hh" -#include "sequential-music-iterator.hh" +#include "music-list-iterator.hh" -class Repeated_music_iterator : public Music_iterator +class Repeated_music_iterator : public Music_list_iterator { public: Repeated_music_iterator (); - ~Repeated_music_iterator (); + virtual ~Repeated_music_iterator (); virtual void construct_children (); virtual Moment next_moment () const; @@ -25,12 +24,13 @@ public: protected: virtual Repeated_music* repeated_music_l () const; + virtual void do_print () const; virtual void do_process_and_next (Moment); private: Music_iterator* repeat_iter_p_; - Sequential_music_iterator* alternative_iter_p_; + Music_list_iterator* alternative_iter_p_; }; #endif /* REPEATED_MUSIC_ITERATOR_HH */ diff --git a/lily/include/repeated-music.hh b/lily/include/repeated-music.hh index b068c242ca..1a4641ff5a 100644 --- a/lily/include/repeated-music.hh +++ b/lily/include/repeated-music.hh @@ -21,10 +21,10 @@ public: int repeats_i_; Music* repeat_p_; // Music_list* alternative_p_; - Sequential_music* alternative_p_; + Music_sequence* alternative_p_; // Repeated_music (Music*, int n, Music_list*); - Repeated_music (Music*, int n, Sequential_music*); + Repeated_music (Music*, int n, Music_sequence*); Repeated_music (Repeated_music const& s); virtual ~Repeated_music (); diff --git a/lily/include/sequential-music-iterator.hh b/lily/include/sequential-music-iterator.hh index bcbf81769c..8cf39854c8 100644 --- a/lily/include/sequential-music-iterator.hh +++ b/lily/include/sequential-music-iterator.hh @@ -1,33 +1,32 @@ /* - Sequential_music-iter.hh -- declare Sequential_music_iterator + Sequential_music-iterator.hh -- declare Sequential_music_iterator source file of the GNU LilyPond music typesetter (c) 1997--1998 Han-Wen Nienhuys */ -#ifndef SEQUENTIAL_MUSIC_ITER_HH -#define SEQUENTIAL_MUSIC_ITER_HH +#ifndef SEQUENTIAL_MUSIC_ITERATOR_HH +#define SEQUENTIAL_MUSIC_ITERATOR_HH -#include "music-iterator.hh" -#include "pcursor.hh" +#include "music-list-iterator.hh" /** Sequential_music iteration: walk each element in turn, and construct an iterator for every element. */ -class Sequential_music_iterator : public Music_iterator +class Sequential_music_iterator : public Music_list_iterator { public: Sequential_music_iterator (); - ~Sequential_music_iterator (); + virtual ~Sequential_music_iterator (); virtual void construct_children (); virtual Moment next_moment () const; virtual bool ok () const; protected: - Sequential_music * sequential_music_l() const; + Sequential_music* sequential_music_l () const; virtual void do_print() const; virtual void do_process_and_next (Moment); @@ -45,4 +44,4 @@ private: void set_Sequential_music_translator(); }; -#endif // SEQUENTIAL_MUSIC_ITER_HH +#endif // SEQUENTIAL_MUSIC_ITERATOR_HH diff --git a/lily/include/simultaneous-music-iterator.hh b/lily/include/simultaneous-music-iterator.hh new file mode 100644 index 0000000000..e2c1eb4ee6 --- /dev/null +++ b/lily/include/simultaneous-music-iterator.hh @@ -0,0 +1,35 @@ +/* + simultaneous-music-iterator.hh -- declare Simultaneous_music_iterator + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#ifndef SIMULTANEOUS_MUSIC_ITERATOR_HH +#define SIMULTANEOUS_MUSIC_ITERATOR_HH + +#include "music-list-iterator.hh" + +class Simultaneous_music_iterator : public Music_list_iterator +{ +public: + Simultaneous_music_iterator (); + virtual ~Simultaneous_music_iterator (); + + virtual void construct_children (); + virtual Moment next_moment () const; + virtual bool ok () const; + +protected: + Simultaneous_music* simultaneous_music_l () const; + + virtual void do_print () const; + virtual void do_process_and_next (Moment); + +private: + Pointer_list children_p_list_; +}; + +#endif // SIMULTANEOUS_MUSIC_ITERATOR_HH diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index d3c6fdf657..e1be97be83 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -4,6 +4,7 @@ source file of the GNU LilyPond music typesetter (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #include "lyric-engraver.hh" @@ -13,19 +14,20 @@ #include "lookup.hh" #include "paper-def.hh" #include "main.hh" +#include "dimensions.hh" + +ADD_THIS_TRANSLATOR(Lyric_engraver); Lyric_engraver::Lyric_engraver() { - lreq_l_ =0; - lyric_item_p_ =0; } bool Lyric_engraver::do_try_music (Music*r) { - if (Lyric_req * lr = dynamic_cast (r)) + if (Lyric_req* l = dynamic_cast (r)) { - lreq_l_ = lr; + lyric_req_l_arr_.push (l); return true; } return false; @@ -34,46 +36,47 @@ Lyric_engraver::do_try_music (Music*r) void Lyric_engraver::do_process_requests() { - if (lreq_l_) + if (text_p_arr_.size ()) + return; + + Scalar style = get_property ("textstyle"); + Scalar alignment = get_property ("textalignment"); + for (int i=0; i < lyric_req_l_arr_.size (); i++) { - Text_def *td_p = new Text_def; - td_p->text_str_ = lreq_l_->text_str_; - td_p->align_dir_ = LEFT; - Scalar style = get_property ("textstyle"); + Lyric_req* request_l = lyric_req_l_arr_[i]; + Text_def* text_p = new Text_def; + text_p->text_str_ = request_l->text_str_; + text_p->align_dir_ = LEFT; if (style.length_i ()) - { - td_p->style_str_ = style; - } - Scalar alignment = get_property ("textalignment"); + text_p->style_str_ = style; if (alignment.isnum_b()) - { - td_p->align_dir_= (Direction)(int)alignment; - } + text_p->align_dir_= (Direction)(int)alignment; - lyric_item_p_ = new Text_item (td_p); - - lyric_item_p_->dir_ = DOWN; - lyric_item_p_->fat_b_ = true; - announce_element (Score_element_info (lyric_item_p_, lreq_l_)); + Text_item* item_p = new Text_item (text_p); + item_p->dir_ = DOWN; + item_p->fat_b_ = true; + // urg + // item_p->translate (Offset (0, (i - 1) * item_p->height ().length_i ())); +// if (i && ((Text_def*)text_p_arr_[i - 1]->tdef_p_)->text_str_.length_i ()) + item_p->translate (Offset (0, - i * 12 PT)); + text_p_arr_.push (item_p); + announce_element (Score_element_info (item_p, request_l)); } } void Lyric_engraver::do_post_move_processing() { - lreq_l_ =0; } void Lyric_engraver::do_pre_move_processing() { - if (lyric_item_p_) + for (int i=0; i < text_p_arr_.size (); i++) { - typeset_element (lyric_item_p_); - lyric_item_p_ =0; + typeset_element (text_p_arr_[i]); } + text_p_arr_.clear (); + lyric_req_l_arr_.clear (); } - - -ADD_THIS_TRANSLATOR(Lyric_engraver); diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index 718490df5e..3d22831fbf 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -8,10 +8,10 @@ #include "debug.hh" #include "music-list.hh" #include "music-iterator.hh" -#include "sequential-music-iterator.hh" #include "property-iterator.hh" -#include "chord-iterator.hh" #include "request-iterator.hh" +#include "sequential-music-iterator.hh" +#include "simultaneous-music-iterator.hh" #include "translator-group.hh" #include "translation-property.hh" #include "change-iterator.hh" diff --git a/lily/music-list-iterator.cc b/lily/music-list-iterator.cc new file mode 100644 index 0000000000..d243aed3f1 --- /dev/null +++ b/lily/music-list-iterator.cc @@ -0,0 +1,52 @@ +/* + Music_list-iterator.cc -- implement Music_list_iterator + + source file of the GNU LilyPond music typesetter + + (c) 1998 Jan Nieuwenhuizen +*/ + +#include "music-list-iterator.hh" +#include "music-list.hh" + +Music_list_iterator::Music_list_iterator () +{ +} + +Music_list_iterator::~Music_list_iterator () +{ +} + +void +Music_list_iterator::construct_children () +{ +} + +void +Music_list_iterator::do_print() const +{ +} + +void +Music_list_iterator::do_process_and_next (Moment) +{ +} + +Music_list* +Music_list_iterator::music_list_l () const +{ + return (Music_list *) music_l_; +} + +Moment +Music_list_iterator::next_moment () const +{ + return 0; +} + +bool +Music_list_iterator::ok () const +{ + return false; +} + diff --git a/lily/parser.yy b/lily/parser.yy index 9b27b9a120..64c9dd8bae 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -739,15 +739,19 @@ Alternative_music: { Music_list* m = new Music_list; $$ = new Sequential_music (m); } - | ALTERNATIVE '{' Music_list '}' { - $$ = new Sequential_music ($3); + | ALTERNATIVE Simultaneous_music { + $$ = $2; + } + | ALTERNATIVE Sequential_music { + $$ = $2; } ; Repeated_music: REPEAT unsigned '{' Music '}' Alternative_music { // s/r conflicts -> '{' '}' - Sequential_music* s = (Sequential_music*)$6; - $$ = new Repeated_music ($4, $2, s); + Music_sequence* m = dynamic_cast ($6); + assert (m); + $$ = new Repeated_music ($4, $2, m); } ; diff --git a/lily/repeated-music-iterator.cc b/lily/repeated-music-iterator.cc index 768a289b8f..5faf0880e7 100644 --- a/lily/repeated-music-iterator.cc +++ b/lily/repeated-music-iterator.cc @@ -94,8 +94,8 @@ Repeated_music_iterator::ok () const Repeated_music_iterator *urg = (Repeated_music_iterator*)this; delete urg->repeat_iter_p_; urg->repeat_iter_p_ = 0; - urg->alternative_iter_p_ = dynamic_cast - (get_iterator_p (repeated_music_l ()->alternative_p_)); + urg->alternative_iter_p_ = dynamic_cast + (get_iterator_p ((Music*)repeated_music_l ()->alternative_p_)); } } if (alternative_iter_p_) diff --git a/lily/repeated-music.cc b/lily/repeated-music.cc index 4f22f72c27..e0692aca8a 100644 --- a/lily/repeated-music.cc +++ b/lily/repeated-music.cc @@ -11,7 +11,7 @@ #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; repeat_p_ = r; @@ -29,7 +29,8 @@ Repeated_music::Repeated_music (Repeated_music const& s) { repeat_p_ = (s.repeat_p_) ? s.repeat_p_->clone () : 0; // urg? - alternative_p_ = (s.alternative_p_) ? dynamic_cast (s.alternative_p_->clone ()) : 0; +// alternative_p_ = (s.alternative_p_) ? dynamic_cast (s.alternative_p_->clone ()) : 0; + alternative_p_ = (s.alternative_p_) ? dynamic_cast (s.alternative_p_->clone ()) : 0; } void diff --git a/lily/simultaneous-music-iterator.cc b/lily/simultaneous-music-iterator.cc new file mode 100644 index 0000000000..764bcdfe8b --- /dev/null +++ b/lily/simultaneous-music-iterator.cc @@ -0,0 +1,96 @@ +/* + Simultaneous_music-iterator.cc -- implement Simultaneous_music_iterator + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + +#include "translator-group.hh" +#include "debug.hh" +#include "simultaneous-music-iterator.hh" + +#include "music-list.hh" + +Simultaneous_music_iterator::Simultaneous_music_iterator () +{ +} + +Simultaneous_music_iterator::~Simultaneous_music_iterator () +{ +} + +void +Simultaneous_music_iterator::construct_children() +{ + int j = 0; + for (PCursor i (simultaneous_music_l ()->music_p_list_p_->top()); + i.ok(); j++, i++) + { + Music_iterator * mi = get_iterator_p (i.ptr()); + if (mi->ok()) + { + if (simultaneous_music_l ()->translator_type_str_.empty_b ()) + set_translator (mi->report_to_l()->ancestor_l (0)); + children_p_list_.bottom().add (mi); + } + else + delete mi; + } +} + + +void +Simultaneous_music_iterator::do_print() const +{ +#ifndef NPRINT + for (PCursor i (children_p_list_.top()); i.ok (); i++) + { + i->print(); + } +#endif +} + +void +Simultaneous_music_iterator::do_process_and_next (Moment until) +{ + for (PCursor i (children_p_list_.top()); i.ok ();) + { + if (i->next_moment() == until) + { + i->process_and_next (until); + } + if (!i->ok()) + delete i.remove_p(); + else + i++; + } + Music_iterator::do_process_and_next (until); +} + + + + +Moment +Simultaneous_music_iterator::next_moment() const +{ + Moment next; + next.set_infinite (1); + for (PCursor i (children_p_list_.top()); i.ok (); i++) + next = next next_moment() ; + return next; +} + + + +bool +Simultaneous_music_iterator::ok() const +{ + return children_p_list_.size(); +} + +Simultaneous_music* +Simultaneous_music_iterator::simultaneous_music_l ()const +{ + return ( Simultaneous_music *) music_l_; +} diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index ab45326524..01156c40ec 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -168,7 +168,7 @@ AC_DEFUN(AC_STEPMAKE_GUILE, [ AC_CHECK_LIB(guile, scm_boot_guile)\ ) if test "$ac_cv_lib_guile_scm_shell" != yes -a \ - "$ac_cv_lib_scm_boot_guile" != yes ; then + "$ac_cv_lib_guile_scm_boot_guile" != yes ; then AC_STEPMAKE_WARN(You should install guile 1.3 or newer) fi ])