From 45f9f9a9e20cd16ea8ef0ae5410a6d71495b962f Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Fri, 1 Sep 2000 16:36:02 +0200 Subject: [PATCH] patch::: 1.3.81.jcn2 --- VERSION | 2 +- lily/include/music-iterator.hh | 27 ++++++++++--------- lily/include/music-wrapper-iterator.hh | 1 + lily/include/sequential-music-iterator.hh | 2 ++ lily/music-iterator.cc | 5 ++++ lily/music-wrapper-iterator.cc | 7 +++++ lily/part-combine-music-iterator.cc | 23 ++++++++++++++-- lily/sequential-music-iterator.cc | 8 ++++++ mutopia/Coriolan/coriolan-paper.ly | 2 +- .../Coriolan/coriolan-part-combine-paper.ly | 2 +- 10 files changed, 61 insertions(+), 18 deletions(-) diff --git a/VERSION b/VERSION index d8889964f6..ab1fe483c5 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=81 -MY_PATCH_LEVEL=jcn1 +MY_PATCH_LEVEL=jcn2 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index 561e9c11eb..d1293bb409 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -37,12 +37,12 @@ protected: Do the actual printing. This should be overriden in derived classes. It is called by #print#, in the public interface */ - virtual void do_print() const; + virtual void do_print () const; /** Find a bottom notation context to deliver requests to. */ - virtual Translator_group* get_req_translator_l(); + virtual Translator_group* get_req_translator_l (); /** Get an iterator for MUS, inheriting the translation unit from THIS. @@ -63,32 +63,32 @@ public: Do the reporting. Will try MUSIC_L_ in its own translator first, then its children. Returns the iterator that succeeded */ - Music_iterator * try_music (Music *) const; + Music_iterator *try_music (Music*) const; /** The translation unit that we this iterator is reporting to now. */ - Translator_group*report_to_l() const; + Translator_group*report_to_l () const; void set_translator (Translator_group*); /** Get an iterator matching the type of MUS, and use TRANS to find an accompanying translation unit */ - static Music_iterator* static_get_iterator_p (Music * mus); - void init_translator (Music *, Translator_group *); + static Music_iterator* static_get_iterator_p (Music *); + void init_translator (Music *, Translator_group *); - Music_iterator(); + Music_iterator (); /// Find the next interesting point in time. - virtual Moment next_moment() const; - + virtual Moment next_moment () const; ///Are we finished with this piece of music? - virtual bool ok() const; + virtual bool ok () const; - virtual ~Music_iterator(); + virtual ~Music_iterator (); + virtual Music *get_next_music (); ///Report all musical information that occurs between now and UNTIL void process_and_next (Moment until); @@ -97,8 +97,9 @@ public: Construct sub-iterators, and set the translator to report to. */ - virtual void construct_children(); - void print() const; + virtual void construct_children (); + + void print () const; }; #endif // MUSIC_ITERATOR_HH diff --git a/lily/include/music-wrapper-iterator.hh b/lily/include/music-wrapper-iterator.hh index 8200709e52..a9c5143825 100644 --- a/lily/include/music-wrapper-iterator.hh +++ b/lily/include/music-wrapper-iterator.hh @@ -27,6 +27,7 @@ public: virtual void construct_children () ; virtual Moment next_moment () const; virtual bool ok () const; + virtual Music *get_next_music (); protected: virtual void do_print () const; diff --git a/lily/include/sequential-music-iterator.hh b/lily/include/sequential-music-iterator.hh index 79f493fa87..8888e462b9 100644 --- a/lily/include/sequential-music-iterator.hh +++ b/lily/include/sequential-music-iterator.hh @@ -25,6 +25,8 @@ public: virtual Moment next_moment () const; virtual bool ok () const; + virtual Music* get_next_music (); + protected: virtual void do_print() const; virtual void do_process_and_next (Moment); diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index bfa597527b..39478c2d05 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -223,3 +223,8 @@ Music_iterator::try_music_in_children (Music * ) const return 0; } +Music* +Music_iterator::get_next_music () +{ + return 0; +} diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc index af658cf72a..17931466a1 100644 --- a/lily/music-wrapper-iterator.cc +++ b/lily/music-wrapper-iterator.cc @@ -63,3 +63,10 @@ Music_wrapper_iterator::try_music_in_children (Music *m) const { return child_iter_p_->try_music (m); } + + +Music* +Music_wrapper_iterator::get_next_music () +{ + return child_iter_p_->get_next_music (); +} diff --git a/lily/part-combine-music-iterator.cc b/lily/part-combine-music-iterator.cc index 1f57157c48..17e79b2423 100644 --- a/lily/part-combine-music-iterator.cc +++ b/lily/part-combine-music-iterator.cc @@ -8,6 +8,7 @@ #include "part-combine-music.hh" #include "part-combine-music-iterator.hh" +#include "sequential-music-iterator.hh" #include "translator-group.hh" #include "musical-request.hh" #include "warn.hh" @@ -123,6 +124,8 @@ Pitch_interrogate_req* second_spanish_inquisition; // won't strike twice Rhythm_interrogate_req* first_rhythmic_inquisition; Rhythm_interrogate_req* second_rhythmic_inquisition; +#include + void Part_combine_music_iterator::do_process_and_next (Moment m) { @@ -130,14 +133,23 @@ Part_combine_music_iterator::do_process_and_next (Moment m) now_ = next_moment (); + Music* first_music = 0; + Music* second_music = 0; + /* Hmm, shouldn't we check per iterator if next_moment < m? */ if (first_iter_p_->ok ()) - first_iter_p_->process_and_next (m); + { + first_music = first_iter_p_->get_next_music (); + first_iter_p_->process_and_next (m); + } if (second_iter_p_->ok ()) - second_iter_p_->process_and_next (m); + { + second_music = second_iter_p_->get_next_music (); + second_iter_p_->process_and_next (m); + } Music_iterator::do_process_and_next (m); @@ -187,6 +199,13 @@ Part_combine_music_iterator::do_process_and_next (Moment m) Array* first_durations = &first_rhythmic_inquisition->duration_arr_; Array* second_durations = &second_rhythmic_inquisition->duration_arr_; + if (!first_durations->empty ()) + cout << "first_durations: " << first_durations->top ().length_mom ().str () << endl; + + // if (Rhythmic_req *r = dynamic_cast (first_music)) + if (first_music) + cout << "first_music: " << first_music->length_mom ().str (); + SCM interval = SCM_BOOL_F; if (first_pitches->size () && second_pitches->size ()) { diff --git a/lily/sequential-music-iterator.cc b/lily/sequential-music-iterator.cc index d99381cf54..d98dc5738f 100644 --- a/lily/sequential-music-iterator.cc +++ b/lily/sequential-music-iterator.cc @@ -139,3 +139,11 @@ Sequential_music_iterator::try_music_in_children (Music *m) const { return iter_p_ ? iter_p_->try_music (m) : 0; } + +Music* +Sequential_music_iterator::get_next_music () +{ + if (cursor_ && gh_pair_p (cursor_)) + return unsmob_music (gh_car (cursor_)); + return 0; +} diff --git a/mutopia/Coriolan/coriolan-paper.ly b/mutopia/Coriolan/coriolan-paper.ly index 9d33209b23..9a277e310c 100644 --- a/mutopia/Coriolan/coriolan-paper.ly +++ b/mutopia/Coriolan/coriolan-paper.ly @@ -94,7 +94,7 @@ \consists "Script_engraver"; \consists "Script_column_engraver"; \consists "Rhythmic_column_engraver"; - \consists "Slur_engraver"; +%% \consists "Slur_engraver"; \consists "Tie_engraver"; } \translator { diff --git a/mutopia/Coriolan/coriolan-part-combine-paper.ly b/mutopia/Coriolan/coriolan-part-combine-paper.ly index c23c88937a..dd045ff0e4 100644 --- a/mutopia/Coriolan/coriolan-part-combine-paper.ly +++ b/mutopia/Coriolan/coriolan-part-combine-paper.ly @@ -94,7 +94,7 @@ \consists "Script_engraver"; \consists "Script_column_engraver"; \consists "Rhythmic_column_engraver"; - \consists "Slur_engraver"; +%% \consists "Slur_engraver"; \consists "Tie_engraver"; } \translator { -- 2.39.5