From 0e0a18dbaa12275d0a07b76104243a15da821a15 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 13 Sep 2000 21:28:07 +0200 Subject: [PATCH] patch::: 1.3.86.jcn2 --- VERSION | 2 +- input/bugs/voice-switch-slur.ly | 21 ++++++ input/bugs/voice-switch.ly | 21 ------ input/test/voice-switch.ly | 21 ++++++ input/test/volta.ly | 66 +++++++++++------- lily/a2-devnull-engraver.cc | 1 + lily/auto-change-iterator.cc | 6 +- lily/change-iterator.cc | 6 +- lily/chord-tremolo-iterator.cc | 4 +- lily/folded-repeat-iterator.cc | 6 +- lily/global-translator.cc | 44 +++++++++--- lily/grace-iterator.cc | 4 +- lily/include/auto-change-iterator.hh | 2 +- lily/include/change-iterator.hh | 8 +-- lily/include/chord-tremolo-iterator.hh | 2 +- lily/include/folded-repeat-iterator.hh | 2 +- lily/include/global-translator.hh | 2 +- lily/include/grace-iterator.hh | 2 +- lily/include/lyric-combine-music-iterator.hh | 2 +- lily/include/music-iterator.hh | 12 ++-- lily/include/music-wrapper-iterator.hh | 4 +- lily/include/part-combine-music-iterator.hh | 7 +- lily/include/property-iterator.hh | 10 +-- lily/include/request-chord-iterator.hh | 2 +- lily/include/sequential-music-iterator.hh | 5 +- lily/include/simple-music-iterator.hh | 4 +- lily/include/simultaneous-music-iterator.hh | 5 +- lily/include/time-scaled-music-iterator.hh | 4 +- lily/include/unfolded-repeat-iterator.hh | 2 +- lily/lyric-combine-music-iterator.cc | 8 +-- lily/music-iterator.cc | 73 ++++++++++---------- lily/music-wrapper-iterator.cc | 8 +-- lily/part-combine-music-iterator.cc | 55 +++++++++------ lily/property-iterator.cc | 13 ++-- lily/request-chord-iterator.cc | 4 +- lily/sequential-music-iterator.cc | 31 +++++++-- lily/simple-music-iterator.cc | 6 +- lily/simultaneous-music-iterator.cc | 41 ++++++----- lily/time-scaled-music-iterator.cc | 4 +- lily/unfolded-repeat-iterator.cc | 4 +- lily/voice-devnull-engraver.cc | 4 +- 41 files changed, 314 insertions(+), 214 deletions(-) create mode 100644 input/bugs/voice-switch-slur.ly create mode 100644 input/test/voice-switch.ly diff --git a/VERSION b/VERSION index f8465bf1cd..9bae1a9363 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=86 -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/input/bugs/voice-switch-slur.ly b/input/bugs/voice-switch-slur.ly new file mode 100644 index 0000000000..f576f20993 --- /dev/null +++ b/input/bugs/voice-switch-slur.ly @@ -0,0 +1,21 @@ +\score{ + \context Staff < + \context Voice=one\skip 1; + \context Voice=two\skip 1; + \context Voice=one \partcombine Voice + \context Thread=one \notes\relative c'' { + c4( c b )a + a( b c )d + } + \context Thread=two \notes\relative c'' { + a4( c b )a + a( b c )a + + } + > + \paper{ + linewidth=140.\mm; + } +} + + diff --git a/input/bugs/voice-switch.ly b/input/bugs/voice-switch.ly index d515666e94..e69de29bb2 100644 --- a/input/bugs/voice-switch.ly +++ b/input/bugs/voice-switch.ly @@ -1,21 +0,0 @@ -\score{ - \context Staff < - \context Voice=one\skip 1; - \context Voice=two\skip 1; - \context Voice=one \partcombine Voice - \context Thread=one \notes\relative c'' { - c2 c2 - c2 c2 - } - \context Thread=two \notes\relative c'' { - b2 a4 () a - a2 a4 () a - - } - > - \paper{ - linewidth=140.\mm; - } -} - - diff --git a/input/test/voice-switch.ly b/input/test/voice-switch.ly new file mode 100644 index 0000000000..d515666e94 --- /dev/null +++ b/input/test/voice-switch.ly @@ -0,0 +1,21 @@ +\score{ + \context Staff < + \context Voice=one\skip 1; + \context Voice=two\skip 1; + \context Voice=one \partcombine Voice + \context Thread=one \notes\relative c'' { + c2 c2 + c2 c2 + } + \context Thread=two \notes\relative c'' { + b2 a4 () a + a2 a4 () a + + } + > + \paper{ + linewidth=140.\mm; + } +} + + diff --git a/input/test/volta.ly b/input/test/volta.ly index 443f79dfde..48889cf91a 100644 --- a/input/test/volta.ly +++ b/input/test/volta.ly @@ -1,24 +1,42 @@ -\score { - \context Voice \notes\relative c { - % Test of prima/secunda volta brackets in conjunction with - % line breaks and special bars. - - c' d e f | - \repeat "volta" 2 { g a b c } - \alternative { { c b a g a g a g} { f e d c } } - \repeat "volta" 2 { g a b c } - \alternative { { c b a g \break a g a g} { f e d c } } - c' d e f | - \repeat "volta" 2 { g a b c } - \alternative { { c b a g \break a g a g \break a b a b } { f e d c } } - c' d e f | - \repeat "volta" 2 { g a b c } - \alternative { { c b a g } { f e d c \break a g a g} } - c' d e f | - \repeat "volta" 2 { g a b c } - \alternative { { c b a g a g a g} { f e d c \bar "|.";} } - - } - \paper { } - \midi { } -} \ No newline at end of file + +voice4 = \notes { +\clef bass; + \property Staff.instrument = "Bass" + \property Staff.instr = "B" + \time 4/4; f,2 ( ) f,8 r8 f8 e8 +\repeat volta 2 +{ + d8. d16 e8. f16 f8 c8 c16 c8. +} +\alternative +{ + { f,2 ( ) f,8 r8 f8 e8 ( \break } + { ) f,2. r8 c16 c16 | + } +} +} +voicedefault = \notes { + \property Staff.timeSignatureStyle="C" + \time 4/4; \key f; + \tempo 4 = 200; +} +\score{ + \notes < + + + \context Staff="4" + { + \$voicedefault + \$voice4 + } + + > + \paper { + font_normal = 12.; + \translator { + \StaffContext + \consists Instrument_name_engraver; + } + } +} + diff --git a/lily/a2-devnull-engraver.cc b/lily/a2-devnull-engraver.cc index 32aa7d958a..ab905a49d4 100644 --- a/lily/a2-devnull-engraver.cc +++ b/lily/a2-devnull-engraver.cc @@ -30,6 +30,7 @@ ADD_THIS_TRANSLATOR (A2_devnull_engraver); bool A2_devnull_engraver::do_try_music (Music *m) { + return false; if (1 //daddy_trans_l_->id_str_ == "two" && (to_boolean (get_property ("unison")) || to_boolean (get_property ("unisilence")))) diff --git a/lily/auto-change-iterator.cc b/lily/auto-change-iterator.cc index 0ae3021d46..ec4a498c74 100644 --- a/lily/auto-change-iterator.cc +++ b/lily/auto-change-iterator.cc @@ -65,11 +65,13 @@ Auto_change_iterator::change_to (Music_iterator *it, String to_type, ; // error (_ ("none of these in my family")); } + Pitch_interrogate_req* spanish_inquisition; // nobody expects it + void -Auto_change_iterator::do_process_and_next (Moment m) +Auto_change_iterator::do_process (Moment m) { - Music_wrapper_iterator::do_process_and_next (m); + Music_wrapper_iterator::do_process (m); if (!spanish_inquisition) spanish_inquisition = new Pitch_interrogate_req; diff --git a/lily/change-iterator.cc b/lily/change-iterator.cc index 730e4adc8e..36eb168f29 100644 --- a/lily/change-iterator.cc +++ b/lily/change-iterator.cc @@ -24,7 +24,7 @@ Change_iterator::error (String reason) /* GUHG! */ - String warn2= "Change_iterator::do_process_and_next (): " + String warn2= "Change_iterator::do_process (): " + report_to_l ()->type_str_ + " = `" + report_to_l ()->id_str_ + "': "; warning (warn2); @@ -35,7 +35,7 @@ Change_iterator::error (String reason) move to construct_children ? */ void -Change_iterator::do_process_and_next (Moment m) +Change_iterator::do_process (Moment m) { Translator_group * current = report_to_l (); Translator_group * last = 0; @@ -80,7 +80,7 @@ Change_iterator::do_process_and_next (Moment m) } else error (_ ("none of these in my family")); - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); } diff --git a/lily/chord-tremolo-iterator.cc b/lily/chord-tremolo-iterator.cc index 1fe1425527..e853e851da 100644 --- a/lily/chord-tremolo-iterator.cc +++ b/lily/chord-tremolo-iterator.cc @@ -31,7 +31,7 @@ Chord_tremolo_iterator::Chord_tremolo_iterator() } void -Chord_tremolo_iterator::do_process_and_next (Moment m) +Chord_tremolo_iterator::do_process (Moment m) { if (!m) { @@ -42,7 +42,7 @@ Chord_tremolo_iterator::do_process_and_next (Moment m) music_l_->origin ()->warning ( _("no one to print a tremolos")); } - child_iter_p_->process_and_next (factor_ * m); + child_iter_p_->process (factor_ * m); } diff --git a/lily/folded-repeat-iterator.cc b/lily/folded-repeat-iterator.cc index 38241b8cf4..514192a5cd 100644 --- a/lily/folded-repeat-iterator.cc +++ b/lily/folded-repeat-iterator.cc @@ -55,7 +55,7 @@ Folded_repeat_iterator::construct_children () } void -Folded_repeat_iterator::do_process_and_next (Moment m) +Folded_repeat_iterator::do_process (Moment m) { if (!m) { @@ -66,7 +66,7 @@ Folded_repeat_iterator::do_process_and_next (Moment m) if (main_iter_p_) { - main_iter_p_->process_and_next (m); + main_iter_p_->process (m); if (!main_iter_p_->ok ()) leave_body (); } @@ -78,7 +78,7 @@ Folded_repeat_iterator::do_process_and_next (Moment m) if (alternative_iter_p_) { - alternative_iter_p_->process_and_next (m - main_length_mom_); + alternative_iter_p_->process (m - main_length_mom_); if (!alternative_iter_p_->ok ()) { delete alternative_iter_p_; diff --git a/lily/global-translator.cc b/lily/global-translator.cc index 4993504d7b..3ecc44b4e0 100644 --- a/lily/global-translator.cc +++ b/lily/global-translator.cc @@ -6,11 +6,12 @@ (c) 1997--2000 Han-Wen Nienhuys */ -#include "global-translator.hh" -#include "music-iterator.hh" #include "debug.hh" +#include "music.hh" +#include "music-iterator.hh" +#include "global-translator.hh" -Global_translator::Global_translator() +Global_translator::Global_translator () { } @@ -29,13 +30,12 @@ Global_translator::add_moment_to_process (Moment m) extra_mom_pq_.insert (m); } -void -Global_translator::modify_next (Moment &w) +Moment +Global_translator::sneaky_insert_extra_moment (Moment w) { - while (extra_mom_pq_.size() && - extra_mom_pq_.front() <= w) - - w =extra_mom_pq_.get(); + while (extra_mom_pq_.size() && extra_mom_pq_.front() <= w) + w = extra_mom_pq_.get(); + return w; } int @@ -93,13 +93,35 @@ Global_translator::run_iterator_on_me (Music_iterator * iter) iter->print(); } - modify_next (w); + w = sneaky_insert_extra_moment (w); prepare (w); if (flower_dstream && !flower_dstream->silent_b ("walking")) print(); - iter->process_and_next (w); + iter->process (w); + for (SCM i = iter->get_music (); gh_pair_p (i); i = SCM_CDR (i)) + { + assert (gh_pair_p (i)); + SCM p = SCM_CAR (i); + Music *m = unsmob_music (SCM_CAR (p)); + Translator *t = unsmob_translator (SCM_CDR (p)); + assert (m); + assert (t); + bool b = t->try_music (m); + if (!b) + { + /* + Children? + */ + printf ("junking:\n"); + m->print (); + t->print (); + } + + } + + iter->next (); process(); } } diff --git a/lily/grace-iterator.cc b/lily/grace-iterator.cc index 52ba6f57e0..86e8fa9a1e 100644 --- a/lily/grace-iterator.cc +++ b/lily/grace-iterator.cc @@ -27,7 +27,7 @@ Grace_iterator::construct_children () } void -Grace_iterator::do_process_and_next (Moment m) +Grace_iterator::do_process (Moment m) { Global_translator * t = dynamic_cast(report_to_l ()); if (t) @@ -42,7 +42,7 @@ Grace_iterator::do_process_and_next (Moment m) { warning (_("no Grace context available")); } - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); } Moment diff --git a/lily/include/auto-change-iterator.hh b/lily/include/auto-change-iterator.hh index aa03806c27..5160fac293 100644 --- a/lily/include/auto-change-iterator.hh +++ b/lily/include/auto-change-iterator.hh @@ -20,7 +20,7 @@ public: Auto_change_iterator (); protected: - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); private: Direction where_dir_; diff --git a/lily/include/change-iterator.hh b/lily/include/change-iterator.hh index a43c4da5f2..f52eb63120 100644 --- a/lily/include/change-iterator.hh +++ b/lily/include/change-iterator.hh @@ -17,12 +17,8 @@ class Change_iterator : public Music_iterator { public: VIRTUAL_COPY_CONS (Music_iterator); - /* - CTOR is public - */ - -protected: - virtual void do_process_and_next (Moment); + /* constructor is public */ + virtual void do_process (Moment); private: void error (String); diff --git a/lily/include/chord-tremolo-iterator.hh b/lily/include/chord-tremolo-iterator.hh index 6d25034d6d..f83e497a31 100644 --- a/lily/include/chord-tremolo-iterator.hh +++ b/lily/include/chord-tremolo-iterator.hh @@ -24,7 +24,7 @@ protected: virtual void construct_children () ; virtual bool ok () const; virtual void do_print () const; - virtual void do_process_and_next (Moment) ; + virtual void do_process (Moment) ; virtual Music_iterator *try_music_in_children (Music *) const; private: diff --git a/lily/include/folded-repeat-iterator.hh b/lily/include/folded-repeat-iterator.hh index 1b36df304a..c5f73658df 100644 --- a/lily/include/folded-repeat-iterator.hh +++ b/lily/include/folded-repeat-iterator.hh @@ -31,7 +31,7 @@ protected: void enter_alternative (); void leave_body (); - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; private: diff --git a/lily/include/global-translator.hh b/lily/include/global-translator.hh index ebcb6b34e9..34e9921142 100644 --- a/lily/include/global-translator.hh +++ b/lily/include/global-translator.hh @@ -25,7 +25,7 @@ public: Global_translator(); int moments_left_i() const; - void modify_next (Moment&); + Moment sneaky_insert_extra_moment (Moment); void add_moment_to_process (Moment); void run_iterator_on_me (Music_iterator*); diff --git a/lily/include/grace-iterator.hh b/lily/include/grace-iterator.hh index c253d078e8..49db1a9d39 100644 --- a/lily/include/grace-iterator.hh +++ b/lily/include/grace-iterator.hh @@ -18,7 +18,7 @@ public: VIRTUAL_COPY_CONS (Music_iterator); ~Grace_iterator (); virtual void construct_children () ; - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); Moment next_moment () const; }; diff --git a/lily/include/lyric-combine-music-iterator.hh b/lily/include/lyric-combine-music-iterator.hh index 31a47b4896..eada524f80 100644 --- a/lily/include/lyric-combine-music-iterator.hh +++ b/lily/include/lyric-combine-music-iterator.hh @@ -22,7 +22,7 @@ public: protected: virtual void construct_children (); virtual Moment next_moment () const; - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; virtual bool ok () const; diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index 87644b494f..7ea76005a5 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -42,7 +42,7 @@ public: /** 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*); @@ -59,11 +59,10 @@ public: ///Are we finished with this piece of music? virtual bool ok () const; - virtual Music* get_music (); + virtual SCM get_music (); virtual bool next (); - ///Report all musical information that occurs between now and UNTIL - void process_and_next (Moment until); + void process (Moment until); /** Construct sub-iterators, and set the translator to @@ -94,10 +93,7 @@ protected: */ Music_iterator* get_iterator_p (Music *) const; - /** Do the actual move. This should be overriden in derived - classes. It is called by #process_and_next#, the public interface - */ - virtual void do_process_and_next (Moment until); + virtual void do_process (Moment); virtual Music_iterator* try_music_in_children (Music *) const; diff --git a/lily/include/music-wrapper-iterator.hh b/lily/include/music-wrapper-iterator.hh index 1d97eb9067..edb6b8a4d8 100644 --- a/lily/include/music-wrapper-iterator.hh +++ b/lily/include/music-wrapper-iterator.hh @@ -29,12 +29,12 @@ public: virtual void construct_children () ; virtual Moment next_moment () const; virtual bool ok () const; - virtual Music* get_music (); + virtual SCM get_music (); virtual bool next (); protected: virtual void do_print () const; - virtual void do_process_and_next (Moment) ; + virtual void do_process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; Music_iterator *child_iter_p_; diff --git a/lily/include/part-combine-music-iterator.hh b/lily/include/part-combine-music-iterator.hh index d43a00a72d..ee27bebb3a 100644 --- a/lily/include/part-combine-music-iterator.hh +++ b/lily/include/part-combine-music-iterator.hh @@ -19,14 +19,17 @@ public: Part_combine_music_iterator (); protected: + virtual ~Part_combine_music_iterator (); + virtual void construct_children (); virtual Moment next_moment () const; - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; virtual bool ok () const; + virtual bool next (); + virtual SCM get_music (); virtual void do_print () const; - virtual ~Part_combine_music_iterator (); private: void change_to (Music_iterator*, String, String); diff --git a/lily/include/property-iterator.hh b/lily/include/property-iterator.hh index 66c7143656..bda6483ec9 100644 --- a/lily/include/property-iterator.hh +++ b/lily/include/property-iterator.hh @@ -22,9 +22,9 @@ class Property_iterator : public Music_iterator { public: VIRTUAL_COPY_CONS (Music_iterator); - // construction + /* construction */ protected: - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); }; class Push_property_iterator : public Music_iterator @@ -32,7 +32,8 @@ class Push_property_iterator : public Music_iterator public: VIRTUAL_COPY_CONS (Music_iterator); protected: - virtual void do_process_and_next (Moment); + /* construction */ + virtual void do_process (Moment); }; class Pop_property_iterator : public Music_iterator @@ -40,7 +41,8 @@ class Pop_property_iterator : public Music_iterator public: VIRTUAL_COPY_CONS (Music_iterator); protected: - virtual void do_process_and_next (Moment); + /* construction */ + virtual void do_process (Moment); }; diff --git a/lily/include/request-chord-iterator.hh b/lily/include/request-chord-iterator.hh index a4794f100b..0e820f7b1f 100644 --- a/lily/include/request-chord-iterator.hh +++ b/lily/include/request-chord-iterator.hh @@ -33,7 +33,7 @@ public: virtual bool ok () const; protected: - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); virtual Moment next_moment() const; virtual void construct_children(); virtual void do_print() const; diff --git a/lily/include/sequential-music-iterator.hh b/lily/include/sequential-music-iterator.hh index 1a2dc730e7..661ce709b4 100644 --- a/lily/include/sequential-music-iterator.hh +++ b/lily/include/sequential-music-iterator.hh @@ -26,15 +26,14 @@ public: virtual void construct_children (); virtual Moment next_moment () const; virtual bool ok () const; - virtual Music* get_music (); + virtual SCM get_music (); virtual bool next (); protected: virtual void do_print() const; - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; - private: Moment here_mom_; diff --git a/lily/include/simple-music-iterator.hh b/lily/include/simple-music-iterator.hh index 324c9b952a..f81a4cd629 100644 --- a/lily/include/simple-music-iterator.hh +++ b/lily/include/simple-music-iterator.hh @@ -17,9 +17,7 @@ public: VIRTUAL_COPY_CONS (Music_iterator); Simple_music_iterator (); Simple_music_iterator (Simple_music_iterator const &); - -protected: - virtual void do_process_and_next (Moment ); + virtual void do_process (Moment); }; #endif /* SIMPLE_MUSIC_ITERATOR_HH */ diff --git a/lily/include/simultaneous-music-iterator.hh b/lily/include/simultaneous-music-iterator.hh index 26666c339c..20efba729e 100644 --- a/lily/include/simultaneous-music-iterator.hh +++ b/lily/include/simultaneous-music-iterator.hh @@ -29,14 +29,13 @@ public: virtual Moment next_moment () const; virtual bool ok () const; virtual bool next (); - virtual Music* get_music (); + virtual SCM get_music (); protected: virtual void do_print () const; - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; - private: Cons_list children_p_list_; }; diff --git a/lily/include/time-scaled-music-iterator.hh b/lily/include/time-scaled-music-iterator.hh index abdd2ac6a6..e124bf2d42 100644 --- a/lily/include/time-scaled-music-iterator.hh +++ b/lily/include/time-scaled-music-iterator.hh @@ -16,9 +16,9 @@ class Time_scaled_music_iterator : public Music_wrapper_iterator { public: VIRTUAL_COPY_CONS (Music_iterator); - // construction + /* construction */ protected: - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); }; diff --git a/lily/include/unfolded-repeat-iterator.hh b/lily/include/unfolded-repeat-iterator.hh index e52361b473..08a51b5041 100644 --- a/lily/include/unfolded-repeat-iterator.hh +++ b/lily/include/unfolded-repeat-iterator.hh @@ -48,7 +48,7 @@ public: protected: virtual void construct_children (); virtual Moment next_moment () const; - virtual void do_process_and_next (Moment); + virtual void do_process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; virtual bool ok () const; diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc index c422d79e63..ff1e6e1798 100644 --- a/lily/lyric-combine-music-iterator.cc +++ b/lily/lyric-combine-music-iterator.cc @@ -66,13 +66,13 @@ Lyric_combine_music_iterator::construct_children () } void -Lyric_combine_music_iterator::do_process_and_next (Moment m) +Lyric_combine_music_iterator::do_process (Moment m) { Moment my_next = music_iter_p_->next_moment (); if (my_next > m) return; - music_iter_p_->process_and_next (m); + music_iter_p_->process (m); bool busy = try_music (busy_req); if (busy) @@ -91,12 +91,12 @@ Lyric_combine_music_iterator::do_process_and_next (Moment m) #endif Moment m= lyric_iter_p_->next_moment (); - lyric_iter_p_->process_and_next (m); + lyric_iter_p_->process (m); } } } - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); } Lyric_combine_music_iterator::~Lyric_combine_music_iterator () diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index bae22a94af..bb7fa19310 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -53,78 +53,77 @@ Music_iterator::Music_iterator (Music_iterator const& src) music_l_ = src.music_l_; } -Music_iterator::~Music_iterator() +Music_iterator::~Music_iterator () { } void -Music_iterator::do_print() const +Music_iterator::do_print () const { } void -Music_iterator::print() const +Music_iterator::print () const { #ifndef NPRINT if (!flower_dstream) return ; - DEBUG_OUT << classname(this) << "{"; - Translator_group *t = report_to_l(); + DEBUG_OUT << classname (this) << "{"; + Translator_group *t = report_to_l (); DEBUG_OUT << "report to " << t->type_str_ << " = " << t->id_str_ << "\n"; - if (ok()) - DEBUG_OUT << "next at " << next_moment() << " "; + if (ok ()) + DEBUG_OUT << "next at " << next_moment () << " "; else DEBUG_OUT << "not feeling well today.."; - do_print(); + do_print (); DEBUG_OUT << "}\n"; #endif } Translator_group* -Music_iterator::get_req_translator_l() +Music_iterator::get_req_translator_l () { - assert (report_to_l()); - if (report_to_l()->is_bottom_translator_b ()) - return report_to_l(); + assert (report_to_l ()); + if (report_to_l ()->is_bottom_translator_b ()) + return report_to_l (); - set_translator (report_to_l()->get_default_interpreter ()); - return report_to_l(); + set_translator (report_to_l ()->get_default_interpreter ()); + return report_to_l (); } Translator_group* -Music_iterator::report_to_l() const +Music_iterator::report_to_l () const { return handle_.report_to_l (); } void -Music_iterator::set_translator (Translator_group*trans) +Music_iterator::set_translator (Translator_group *trans) { handle_.set_translator (trans); } void -Music_iterator::construct_children() +Music_iterator::construct_children () { } Moment -Music_iterator::next_moment() const +Music_iterator::next_moment () const { return 0; } - void -Music_iterator::process_and_next (Moment m) +Music_iterator::process (Moment m) { - do_process_and_next (m); + do_process (m); } void -Music_iterator::do_process_and_next (Moment) +Music_iterator::do_process (Moment) { first_b_ = false; } @@ -135,12 +134,14 @@ Music_iterator::ok () const return first_b_; } -Music* +SCM Music_iterator::get_music () { if (ok ()) - return music_l_; - return 0; + return scm_listify (scm_cons (music_l_->self_scm (), + report_to_l ()->self_scm ()), + SCM_UNDEFINED); + return SCM_EOL; } bool @@ -151,7 +152,7 @@ Music_iterator::next () } Music_iterator* -Music_iterator::static_get_iterator_p (Music *m) +Music_iterator::static_get_iterator_p (Music *m) { Music_iterator * p =0; @@ -169,9 +170,9 @@ Music_iterator::static_get_iterator_p (Music *m) p = new Property_iterator; else if (dynamic_cast (m)) p = new Change_iterator; - else if (dynamic_cast(m)) + else if (dynamic_cast (m)) p = new Push_property_iterator; - else if (dynamic_cast(m)) + else if (dynamic_cast (m)) p = new Pop_property_iterator; else if (dynamic_cast (m)) p = new Time_scaled_music_iterator; @@ -202,10 +203,10 @@ Music_iterator::static_get_iterator_p (Music *m) } void -Music_iterator::init_translator (Music *m, Translator_group *report_l) +Music_iterator::init_translator (Music *m, Translator_group *report_l) { music_l_ = m; - if (Context_specced_music * csm =dynamic_cast(m)) + if (Context_specced_music * csm =dynamic_cast (m)) { Translator_group* a =report_l-> find_create_translator_l (csm->translator_type_str_, csm->translator_id_str_); @@ -214,7 +215,7 @@ Music_iterator::init_translator (Music *m, Translator_group *report_l) } - if (! report_to_l()) + if (! report_to_l ()) set_translator (report_l); } @@ -223,16 +224,16 @@ Music_iterator* Music_iterator::get_iterator_p (Music *m) const { Music_iterator*p = static_get_iterator_p (m); - p->init_translator (m, report_to_l()); + p->init_translator (m, report_to_l ()); - p->construct_children(); + p->construct_children (); return p; } Music_iterator* -Music_iterator::try_music (Music *m) const +Music_iterator::try_music (Music *m) const { - bool b = report_to_l ()->try_music ((Music*)m); // ugh + bool b = report_to_l ()->try_music ( (Music*)m); // ugh Music_iterator * it = b ? (Music_iterator*) this : 0; // ugh if (!it) it = try_music_in_children (m); @@ -240,7 +241,7 @@ Music_iterator::try_music (Music *m) const } Music_iterator* -Music_iterator::try_music_in_children (Music * ) const +Music_iterator::try_music_in_children (Music *) const { return 0; } diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc index 396e9c4657..46f9b6da26 100644 --- a/lily/music-wrapper-iterator.cc +++ b/lily/music-wrapper-iterator.cc @@ -47,13 +47,13 @@ Music_wrapper_iterator::ok () const } void -Music_wrapper_iterator::do_process_and_next (Moment m) +Music_wrapper_iterator::do_process (Moment m) { - child_iter_p_->process_and_next (m); - Music_iterator::do_process_and_next (m); + child_iter_p_->process (m); + Music_iterator::do_process (m); } -Music* +SCM Music_wrapper_iterator::get_music () { return child_iter_p_->get_music (); diff --git a/lily/part-combine-music-iterator.cc b/lily/part-combine-music-iterator.cc index b5c3780961..9ed054e1ec 100644 --- a/lily/part-combine-music-iterator.cc +++ b/lily/part-combine-music-iterator.cc @@ -48,6 +48,23 @@ Part_combine_music_iterator::ok () const return first_iter_p_->ok () || second_iter_p_->ok (); } +SCM +Part_combine_music_iterator::get_music () +{ + return SCM_EOL; +} + +bool +Part_combine_music_iterator::next () +{ + bool b = false; + if (first_iter_p_->ok ()) + b = first_iter_p_->next (); + if (second_iter_p_->ok ()) + b = second_iter_p_->next () || b; + return b; +} + void Part_combine_music_iterator::do_print () const { @@ -116,7 +133,7 @@ Part_combine_music_iterator::change_to (Music_iterator *it, String to_type, } void -Part_combine_music_iterator::do_process_and_next (Moment m) +Part_combine_music_iterator::do_process (Moment m) { Part_combine_music const * p = dynamic_cast (music_l_); @@ -127,44 +144,42 @@ Part_combine_music_iterator::do_process_and_next (Moment m) if (first_iter_p_->ok ()) { Music_iterator* i = first_iter_p_->clone (); - Moment until = i->next_moment (); /* Urg, silly first_b_ stuff */ - if (now && i->next ()) - until = i->next_moment (); + if (now) + i->next (); - /* How about a 'now_moment ()' for iterators? */ - for (; i->ok () && i->next_moment () == until; i->next ()) + SCM s = i->get_music (); + if (gh_pair_p (s)) { - if (Music_sequence* m = dynamic_cast (i->get_music ())) + if (Music_sequence* m = dynamic_cast (unsmob_music (SCM_CAR (SCM_CAR (s))))) { for (SCM s = m->music_list (); gh_pair_p (s); s = gh_cdr (s)) { Music *u = unsmob_music (gh_car (s)); if (Melodic_req *r = dynamic_cast (u)) - first_pitches.push (r->pitch_); + first_pitches.push (r->pitch_); if (Rhythmic_req *r = dynamic_cast (u)) first_durations.push (r->duration_); } } } } - + Array second_pitches; Array second_durations; if (second_iter_p_->ok ()) { Music_iterator* i = second_iter_p_->clone (); - Moment until = i->next_moment (); /* Urg, silly second_b_ stuff */ - if (now && i->next ()) - until = i->next_moment (); + if (now) + i->next (); - /* How about a 'now_moment ()' for iterators? */ - for (; i->ok () && i->next_moment () == until; i->next ()) + SCM s = i->get_music (); + if (gh_pair_p (s)) { - if (Music_sequence* m = dynamic_cast (i->get_music ())) + if (Music_sequence* m = dynamic_cast (unsmob_music (SCM_CAR (SCM_CAR (s))))) { for (SCM s = m->music_list (); gh_pair_p (s); s = gh_cdr (s)) { @@ -172,7 +187,7 @@ Part_combine_music_iterator::do_process_and_next (Moment m) if (Melodic_req *r = dynamic_cast (u)) second_pitches.push (r->pitch_); if (Rhythmic_req *r = dynamic_cast (u)) - second_durations.push (r->duration_); + second_durations.push (r->duration_); } } } @@ -202,7 +217,7 @@ Part_combine_music_iterator::do_process_and_next (Moment m) second_until_ = new_until; } -#if 0 /* DEBUG */ +#if 1 /* DEBUG */ printf ("now: %s\n", now.str ().ch_C ()); printf ("first: "); for (int i = 0; i < first_pitches.size (); i++) @@ -296,12 +311,12 @@ Part_combine_music_iterator::do_process_and_next (Moment m) Hmm, shouldn't we check per iterator if next_moment < m? */ if (first_iter_p_->ok ()) - first_iter_p_->process_and_next (m); + first_iter_p_->process (m); if (second_iter_p_->ok ()) - second_iter_p_->process_and_next (m); + second_iter_p_->process (m); - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); } Music_iterator* diff --git a/lily/property-iterator.cc b/lily/property-iterator.cc index 2f44683094..3b6c47f9f7 100644 --- a/lily/property-iterator.cc +++ b/lily/property-iterator.cc @@ -16,17 +16,16 @@ translation unit, and set the property. */ void -Property_iterator::do_process_and_next (Moment m) +Property_iterator::do_process (Moment m) { SCM sym = music_l_->get_mus_property ("symbol"); if (gh_symbol_p(sym)) report_to_l ()->set_property (sym, music_l_->get_mus_property ("value")); - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); } - void -Push_property_iterator::do_process_and_next (Moment m) +Push_property_iterator::do_process (Moment m) { SCM syms = music_l_->get_mus_property ("symbols"); SCM eprop = music_l_->get_mus_property ("element-property"); @@ -34,15 +33,15 @@ Push_property_iterator::do_process_and_next (Moment m) Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, val); - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); } void -Pop_property_iterator::do_process_and_next (Moment m) +Pop_property_iterator::do_process (Moment m) { SCM syms = music_l_->get_mus_property ("symbols"); SCM eprop = music_l_->get_mus_property ("element-property"); Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED); - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); } diff --git a/lily/request-chord-iterator.cc b/lily/request-chord-iterator.cc index 7ac4c2e2c7..c13de02132 100644 --- a/lily/request-chord-iterator.cc +++ b/lily/request-chord-iterator.cc @@ -72,8 +72,9 @@ Request_chord_iterator::next () } void -Request_chord_iterator::do_process_and_next (Moment) +Request_chord_iterator::do_process (Moment) { +#if 0 // URG if (first_b_) { @@ -93,4 +94,5 @@ Request_chord_iterator::do_process_and_next (Moment) } next (); +#endif } diff --git a/lily/sequential-music-iterator.cc b/lily/sequential-music-iterator.cc index 8ba2fa20db..8e0ec23362 100644 --- a/lily/sequential-music-iterator.cc +++ b/lily/sequential-music-iterator.cc @@ -93,18 +93,21 @@ Sequential_music_iterator::set_sequential_music_translator() set_translator (child_report); } -Music* +SCM Sequential_music_iterator::get_music () { if (ok ()) - return unsmob_music (gh_car (cursor_)); + return scm_listify (scm_cons (SCM_CAR (cursor_), + report_to_l ()->self_scm ()), + SCM_UNDEFINED); - return 0; + return SCM_EOL; } bool Sequential_music_iterator::next () { +#if 0 if (ok ()) { bool b = false; @@ -121,14 +124,27 @@ Sequential_music_iterator::next () return b; } return false; +#else + if (ok ()) + { + set_sequential_music_translator (); + leave_element (); + if (gh_pair_p (cursor_)) + start_next_element (); + return ok (); + } + return false; +#endif } /* This should use get_music () and next () */ void -Sequential_music_iterator::do_process_and_next (Moment until) +Sequential_music_iterator::do_process (Moment until) { + return; +#if 0 if (ok ()) { while (1) @@ -138,9 +154,9 @@ Sequential_music_iterator::do_process_and_next (Moment until) { Moment here = iter_p_->next_moment (); if (here != local_until) - return Music_iterator::do_process_and_next (until); + return Music_iterator::do_process (until); - iter_p_->process_and_next (local_until); + iter_p_->process (local_until); } if (!iter_p_->ok ()) @@ -151,10 +167,11 @@ Sequential_music_iterator::do_process_and_next (Moment until) if (gh_pair_p (cursor_)) start_next_element (); else - return Music_iterator::do_process_and_next (until); + return Music_iterator::do_process (until); } } } +#endif } Moment diff --git a/lily/simple-music-iterator.cc b/lily/simple-music-iterator.cc index d19d615a22..d6cc80b0f2 100644 --- a/lily/simple-music-iterator.cc +++ b/lily/simple-music-iterator.cc @@ -22,8 +22,9 @@ Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src) } void -Simple_music_iterator::do_process_and_next (Moment m) +Simple_music_iterator::do_process (Moment m) { +#if 0 if (ok ()) { bool b = try_music (get_music ()); @@ -32,5 +33,6 @@ Simple_music_iterator::do_process_and_next (Moment m) classname (music_l_))); } - Music_iterator::do_process_and_next (m); + Music_iterator::do_process (m); +#endif } diff --git a/lily/simultaneous-music-iterator.cc b/lily/simultaneous-music-iterator.cc index 3e4d821ede..08f337c065 100644 --- a/lily/simultaneous-music-iterator.cc +++ b/lily/simultaneous-music-iterator.cc @@ -38,23 +38,29 @@ Simultaneous_music_iterator::~Simultaneous_music_iterator () bool Simultaneous_music_iterator::next () { - if (cursor_i_ < children_p_list_.size_i ()) - cursor_i_++; - return cursor_i_ < children_p_list_.size_i (); + for (Cons **pp = &children_p_list_.head_; *pp;) + { + Music_iterator *i = (*pp)->car_; + if (i->ok ()) + i->next (); + if (!i->ok ()) + delete children_p_list_.remove_cons (pp); + else + pp = &(*pp)->next_; + } + return ok (); } -Music* +SCM Simultaneous_music_iterator::get_music () { - if (cursor_i_ < children_p_list_.size_i ()) + SCM s = SCM_EOL; + // SCM t = report_to_l ()-self_scm (); + for (Cons *p = children_p_list_.head_; p; p = p->next_) { - Cons *p = children_p_list_.head_; - for (int i = 0; i <= cursor_i_ && p; i++) - p = p->next_; - if (p) - return p->car_->get_music (); + scm_cons (p->car_->get_music (), s); } - return 0; + return s; } void @@ -102,26 +108,25 @@ Simultaneous_music_iterator::do_print() const } void -Simultaneous_music_iterator::do_process_and_next (Moment until) +Simultaneous_music_iterator::do_process (Moment until) { - for (Cons **pp = &children_p_list_.head_; *pp; ) +#if 1 + for (Cons **pp = &children_p_list_.head_; *pp;) { Music_iterator * i = (*pp)->car_; if (i->next_moment() == until) { - i->process_and_next (until); + i->process (until); } if (!i->ok()) delete children_p_list_.remove_cons (pp); else pp = &(*pp)->next_; } - Music_iterator::do_process_and_next (until); + Music_iterator::do_process (until); +#endif } - - - Moment Simultaneous_music_iterator::next_moment() const { diff --git a/lily/time-scaled-music-iterator.cc b/lily/time-scaled-music-iterator.cc index 6230181c88..6c111441f9 100644 --- a/lily/time-scaled-music-iterator.cc +++ b/lily/time-scaled-music-iterator.cc @@ -14,7 +14,7 @@ #include "command-request.hh" void -Time_scaled_music_iterator::do_process_and_next (Moment m) +Time_scaled_music_iterator::do_process (Moment m) { if (!m) { @@ -25,5 +25,5 @@ Time_scaled_music_iterator::do_process_and_next (Moment m) music_l_->origin ()->warning ( _("no one to print a tuplet start bracket")); } - Music_wrapper_iterator::do_process_and_next (m); + Music_wrapper_iterator::do_process (m); } diff --git a/lily/unfolded-repeat-iterator.cc b/lily/unfolded-repeat-iterator.cc index 6395987a1d..92b501f0a5 100644 --- a/lily/unfolded-repeat-iterator.cc +++ b/lily/unfolded-repeat-iterator.cc @@ -135,7 +135,7 @@ Unfolded_repeat_iterator::construct_children () } void -Unfolded_repeat_iterator::do_process_and_next (Moment m) +Unfolded_repeat_iterator::do_process (Moment m) { if (!m) { @@ -156,7 +156,7 @@ Unfolded_repeat_iterator::do_process_and_next (Moment m) } if (m - done_mom_ >= current_iter_p_->next_moment ()) - current_iter_p_->process_and_next (m - done_mom_); + current_iter_p_->process (m - done_mom_); else return; } diff --git a/lily/voice-devnull-engraver.cc b/lily/voice-devnull-engraver.cc index a6684ed454..eb9bf86354 100644 --- a/lily/voice-devnull-engraver.cc +++ b/lily/voice-devnull-engraver.cc @@ -23,7 +23,9 @@ protected: ADD_THIS_TRANSLATOR (Voice_devnull_engraver); static char const *junk_interfaces[] = { - // "beam-interface", +#if 0 + "beam-interface", +#endif "slur-interface", "tie-interface", "text-item-interface", -- 2.39.2