From: Jan Nieuwenhuizen Date: Tue, 12 Sep 2000 20:53:12 +0000 (+0200) Subject: patch::: 1.3.85.jcn4 X-Git-Tag: release/1.3.86~2 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=9b34d4afef6dd3f50c8f9cec1e613eb44f8c7913;p=lilypond.git patch::: 1.3.85.jcn4 1.3.85.jcn4 =========== * Added clone () to music iterators, so that we can do next () on a copy. --- diff --git a/CHANGES b/CHANGES index 78430277db..d2632bd90b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,8 @@ +1.3.85.jcn4 +=========== + +* Added clone () to music iterators, so that we can do next () on a copy. + 1.3.85.jcn3 =========== diff --git a/VERSION b/VERSION index 87ad523c6f..606e08f2f9 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=85 -MY_PATCH_LEVEL=jcn3 +MY_PATCH_LEVEL=jcn4 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/lily/include/auto-change-iterator.hh b/lily/include/auto-change-iterator.hh index ff55700bc1..aa03806c27 100644 --- a/lily/include/auto-change-iterator.hh +++ b/lily/include/auto-change-iterator.hh @@ -13,15 +13,18 @@ #include "music-wrapper-iterator.hh" #include "direction.hh" -class Auto_change_iterator : public Music_wrapper_iterator +class Auto_change_iterator : public Music_wrapper_iterator { - Direction where_dir_; +public: + VIRTUAL_COPY_CONS (Music_iterator); + Auto_change_iterator (); - void change_to (Music_iterator* , String, String); protected: virtual void do_process_and_next (Moment); -public: - Auto_change_iterator (); + +private: + Direction where_dir_; + void change_to (Music_iterator* , String, String); }; #endif /* AUTO_CHANGE_ITERATOR_HH */ diff --git a/lily/include/change-iterator.hh b/lily/include/change-iterator.hh index 4ab9d99e4a..a43c4da5f2 100644 --- a/lily/include/change-iterator.hh +++ b/lily/include/change-iterator.hh @@ -15,15 +15,17 @@ class Change_iterator : public Music_iterator { - void error (String); - -protected: - virtual void do_process_and_next (Moment); - public: + VIRTUAL_COPY_CONS (Music_iterator); /* CTOR is public */ + +protected: + virtual void do_process_and_next (Moment); + +private: + void error (String); }; #endif diff --git a/lily/include/chord-tremolo-iterator.hh b/lily/include/chord-tremolo-iterator.hh index 9cd632985d..6d25034d6d 100644 --- a/lily/include/chord-tremolo-iterator.hh +++ b/lily/include/chord-tremolo-iterator.hh @@ -14,10 +14,8 @@ class Chord_tremolo_iterator : public Music_iterator { - Moment factor_; - Music_iterator * child_iter_p_; - public: + VIRTUAL_COPY_CONS (Music_iterator); Chord_tremolo_iterator (); protected: @@ -28,6 +26,10 @@ protected: virtual void do_print () const; virtual void do_process_and_next (Moment) ; virtual Music_iterator *try_music_in_children (Music *) const; + +private: + Moment factor_; + Music_iterator * child_iter_p_; }; diff --git a/lily/include/folded-repeat-iterator.hh b/lily/include/folded-repeat-iterator.hh index e26bac173e..1b36df304a 100644 --- a/lily/include/folded-repeat-iterator.hh +++ b/lily/include/folded-repeat-iterator.hh @@ -18,11 +18,8 @@ */ class Folded_repeat_iterator : public Music_iterator { - Music_iterator * main_iter_p_; - Music_iterator * alternative_iter_p_; - int count_; - Moment main_length_mom_; public: + VIRTUAL_COPY_CONS (Music_iterator); Folded_repeat_iterator (); ~Folded_repeat_iterator (); @@ -36,6 +33,12 @@ protected: virtual void do_process_and_next (Moment); virtual Music_iterator *try_music_in_children (Music *) const; + +private: + Music_iterator * main_iter_p_; + Music_iterator * alternative_iter_p_; + int count_; + Moment main_length_mom_; }; #endif /* FOLDED_REPEAT_ITERATOR_HH */ diff --git a/lily/include/grace-iterator.hh b/lily/include/grace-iterator.hh index 9743d7ab90..c253d078e8 100644 --- a/lily/include/grace-iterator.hh +++ b/lily/include/grace-iterator.hh @@ -15,6 +15,7 @@ class Grace_iterator : public Music_wrapper_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); ~Grace_iterator (); virtual void construct_children () ; virtual void do_process_and_next (Moment); diff --git a/lily/include/interpretation-context-handle.hh b/lily/include/interpretation-context-handle.hh index a8adf33cb4..fc15f7a19d 100644 --- a/lily/include/interpretation-context-handle.hh +++ b/lily/include/interpretation-context-handle.hh @@ -14,6 +14,7 @@ class Interpretation_context_handle { Translator_group * report_to_l_; +public: void down (); void up (Translator_group*); public: diff --git a/lily/include/lyric-combine-music-iterator.hh b/lily/include/lyric-combine-music-iterator.hh index 2264996110..31a47b4896 100644 --- a/lily/include/lyric-combine-music-iterator.hh +++ b/lily/include/lyric-combine-music-iterator.hh @@ -15,9 +15,10 @@ class Lyric_combine_music_iterator : public Music_iterator { - Music_iterator * music_iter_p_; - Music_iterator * lyric_iter_p_; - +public: + VIRTUAL_COPY_CONS (Music_iterator); + Lyric_combine_music_iterator (); + protected: virtual void construct_children (); virtual Moment next_moment () const; @@ -27,8 +28,10 @@ protected: virtual bool ok () const; virtual void do_print () const; virtual ~Lyric_combine_music_iterator (); -public: - Lyric_combine_music_iterator (); + +private: + Music_iterator * music_iter_p_; + Music_iterator * lyric_iter_p_; }; #endif /* LYRIC_COMBINE_MUSIC_ITERATOR_HH */ diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index bb6d36f80e..81b1bfe0bc 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -24,7 +24,10 @@ The state of an iterator would be the intersection of the particular music construct with one point in musical time. */ -class Music_iterator { +class Music_iterator +{ + //private: +public: Interpretation_context_handle handle_; protected: @@ -58,6 +61,12 @@ protected: virtual Music_iterator* try_music_in_children (Music *) const; public: + VIRTUAL_COPY_CONS (Music_iterator); + + Music_iterator(); + Music_iterator (Music_iterator const&); + virtual ~Music_iterator(); + /** Do the reporting. Will try MUSIC_L_ in its own translator first, @@ -78,8 +87,6 @@ public: static Music_iterator* static_get_iterator_p (Music * mus); void init_translator (Music *, Translator_group *); - Music_iterator(); - /// Find the next interesting point in time. virtual Moment next_moment() const; @@ -90,9 +97,6 @@ public: virtual Music* get_music (); virtual bool next (); - virtual ~Music_iterator(); - - ///Report all musical information that occurs between now and UNTIL void process_and_next (Moment until); diff --git a/lily/include/music-wrapper-iterator.hh b/lily/include/music-wrapper-iterator.hh index 1429f00be6..1d97eb9067 100644 --- a/lily/include/music-wrapper-iterator.hh +++ b/lily/include/music-wrapper-iterator.hh @@ -21,7 +21,9 @@ class Music_wrapper_iterator : public Music_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); Music_wrapper_iterator (); + Music_wrapper_iterator (Music_wrapper_iterator const&); ~Music_wrapper_iterator (); virtual void construct_children () ; diff --git a/lily/include/part-combine-music-iterator.hh b/lily/include/part-combine-music-iterator.hh index 7b38e0f033..caf7b4dcd7 100644 --- a/lily/include/part-combine-music-iterator.hh +++ b/lily/include/part-combine-music-iterator.hh @@ -15,6 +15,7 @@ class Part_combine_music_iterator : public Music_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); Part_combine_music_iterator (); protected: diff --git a/lily/include/property-iterator.hh b/lily/include/property-iterator.hh index 7591fce277..66c7143656 100644 --- a/lily/include/property-iterator.hh +++ b/lily/include/property-iterator.hh @@ -21,6 +21,7 @@ class Property_iterator : public Music_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); // construction protected: virtual void do_process_and_next (Moment); @@ -28,12 +29,16 @@ protected: class Push_property_iterator : public Music_iterator { +public: + VIRTUAL_COPY_CONS (Music_iterator); protected: virtual void do_process_and_next (Moment); }; class Pop_property_iterator : public Music_iterator { +public: + VIRTUAL_COPY_CONS (Music_iterator); protected: virtual void do_process_and_next (Moment); }; diff --git a/lily/include/request-chord-iterator.hh b/lily/include/request-chord-iterator.hh index ec88c28e32..a4794f100b 100644 --- a/lily/include/request-chord-iterator.hh +++ b/lily/include/request-chord-iterator.hh @@ -25,7 +25,9 @@ class Request_chord_iterator : public Music_iterator bool last_b_; public: + VIRTUAL_COPY_CONS (Music_iterator); Request_chord_iterator (); + Request_chord_iterator (Request_chord_iterator const&); virtual bool next (); virtual bool ok () const; diff --git a/lily/include/sequential-music-iterator.hh b/lily/include/sequential-music-iterator.hh index 17e7aede8b..1a2dc730e7 100644 --- a/lily/include/sequential-music-iterator.hh +++ b/lily/include/sequential-music-iterator.hh @@ -18,7 +18,9 @@ class Sequential_music_iterator : public Music_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); Sequential_music_iterator (); + Sequential_music_iterator (Sequential_music_iterator const&); virtual ~Sequential_music_iterator (); virtual void construct_children (); diff --git a/lily/include/simple-music-iterator.hh b/lily/include/simple-music-iterator.hh index 00e9f66d4f..1fa5bb7d16 100644 --- a/lily/include/simple-music-iterator.hh +++ b/lily/include/simple-music-iterator.hh @@ -14,6 +14,10 @@ class Simple_music_iterator : public Music_iterator { +public: + VIRTUAL_COPY_CONS (Music_iterator); + Simple_music_iterator (); + Simple_music_iterator (Simple_music_iterator const &); protected: virtual void do_process_and_next (Moment ); }; diff --git a/lily/include/simultaneous-music-iterator.hh b/lily/include/simultaneous-music-iterator.hh index 6c4008a95b..7ab54be77c 100644 --- a/lily/include/simultaneous-music-iterator.hh +++ b/lily/include/simultaneous-music-iterator.hh @@ -15,6 +15,7 @@ class Simultaneous_music_iterator : public Music_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); /// make a new context for every child. bool separate_contexts_b_; diff --git a/lily/include/time-scaled-music-iterator.hh b/lily/include/time-scaled-music-iterator.hh index 28ab473db0..abdd2ac6a6 100644 --- a/lily/include/time-scaled-music-iterator.hh +++ b/lily/include/time-scaled-music-iterator.hh @@ -15,6 +15,7 @@ class Time_scaled_music_iterator : public Music_wrapper_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); // construction protected: virtual void do_process_and_next (Moment); diff --git a/lily/include/unfolded-repeat-iterator.hh b/lily/include/unfolded-repeat-iterator.hh index 97a649a10a..e52361b473 100644 --- a/lily/include/unfolded-repeat-iterator.hh +++ b/lily/include/unfolded-repeat-iterator.hh @@ -19,6 +19,7 @@ class Unfolded_repeat_iterator : public Music_iterator { public: + VIRTUAL_COPY_CONS (Music_iterator); /** How often have we done the body (assuming bodies are interspersed.)? */ diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index 3abd8cecb3..e0978106da 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -41,6 +41,22 @@ #include "output-property.hh" #include "chord-tremolo-iterator.hh" +Music_iterator::Music_iterator () +{ + first_b_ = true; +} + +Music_iterator::Music_iterator (Music_iterator const& src) +{ + first_b_ = src.first_b_; + handle_ = src.handle_; + music_l_ = src.music_l_; +} + +Music_iterator::~Music_iterator() +{ +} + void Music_iterator::do_print() const { @@ -94,10 +110,6 @@ Music_iterator::construct_children() { } -Music_iterator::~Music_iterator() -{ -} - Moment Music_iterator::next_moment() const { @@ -217,11 +229,6 @@ Music_iterator::get_iterator_p (Music *m) const return p; } -Music_iterator::Music_iterator() -{ - first_b_ = true; -} - Music_iterator* Music_iterator::try_music (Music *m) const { diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc index 43fe4b495c..4aa13bd9a2 100644 --- a/lily/music-wrapper-iterator.cc +++ b/lily/music-wrapper-iterator.cc @@ -16,7 +16,16 @@ Music_wrapper_iterator::Music_wrapper_iterator () child_iter_p_ =0; } +Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper_iterator const &src) + : Music_iterator (src) +{ + child_iter_p_ = src.child_iter_p_; +} +Music_wrapper_iterator::~Music_wrapper_iterator () +{ + delete child_iter_p_; +} void Music_wrapper_iterator::do_print () const @@ -31,12 +40,6 @@ Music_wrapper_iterator::construct_children () get_iterator_p (dynamic_cast (music_l_)->element ()); } -Music_wrapper_iterator::~Music_wrapper_iterator () -{ - delete child_iter_p_; -} - - bool Music_wrapper_iterator::ok () const { diff --git a/lily/part-combine-music-iterator.cc b/lily/part-combine-music-iterator.cc index 9c924c1284..ab2ec18b9a 100644 --- a/lily/part-combine-music-iterator.cc +++ b/lily/part-combine-music-iterator.cc @@ -118,197 +118,11 @@ Part_combine_music_iterator::change_to (Music_iterator *it, String to_type, error (_f ("none of these in my family: `%s'", to_id.ch_C ())); } -#if 0 -Pitch_interrogate_req* first_spanish_inquisition; // nobody expects it -Pitch_interrogate_req* second_spanish_inquisition; // won't strike twice - -Rhythm_interrogate_req* first_rhythmic_inquisition; -Rhythm_interrogate_req* second_rhythmic_inquisition; - -void -Part_combine_music_iterator::do_process_and_next (Moment m) -{ - Part_combine_music const * p = dynamic_cast (music_l_); - - now_ = next_moment (); - - /* - Hmm, shouldn't we check per iterator if next_moment < m? - */ - if (first_iter_p_->ok ()) - first_iter_p_->process_and_next (m); - - if (second_iter_p_->ok ()) - second_iter_p_->process_and_next (m); - - Music_iterator::do_process_and_next (m); - - /* - TODO: - - * Maybe we need a Skip_engraver? - - (check): can this all be handled now? - - Maybe different modes exist? - - * Wind instruments (Flute I/II) - * Hymnals: - - - Rules for Hymnals/SATB (John Henckel ): - - 1. if S and A differ by less than a third, the stems should be up/down. - 2. else if S and A have different values, the stems should be up/down. - 3. else if A sings "la" or higher, both S and A stems should be down. - 4. else both stems should be up - - * This may get really tricky: combining voices/staffs: string instruments - - */ - - if (!first_spanish_inquisition) - first_spanish_inquisition = new Pitch_interrogate_req; - first_iter_p_->try_music (first_spanish_inquisition); - - if (!second_spanish_inquisition) - second_spanish_inquisition = new Pitch_interrogate_req; - second_iter_p_->try_music (second_spanish_inquisition); - - Array* first_pitches = &first_spanish_inquisition->pitch_arr_; - Array* second_pitches = &second_spanish_inquisition->pitch_arr_; - - if (!first_rhythmic_inquisition) - first_rhythmic_inquisition = new Rhythm_interrogate_req; - first_iter_p_->try_music (first_rhythmic_inquisition); - - if (!second_rhythmic_inquisition) - second_rhythmic_inquisition = new Rhythm_interrogate_req; - second_iter_p_->try_music (second_rhythmic_inquisition); - - Array* first_durations = &first_rhythmic_inquisition->duration_arr_; - Array* second_durations = &second_rhythmic_inquisition->duration_arr_; - - SCM interval = SCM_BOOL_F; - if (first_pitches->size () && second_pitches->size ()) - { - first_pitches->sort (Musical_pitch::compare); - second_pitches->sort (Musical_pitch::compare); - interval = gh_int2scm (first_pitches->top ().steps () - - (*second_pitches)[0].steps ()); - } - if (first_durations->size ()) - { - first_durations->sort (Duration::compare); - Moment new_until = now_ + first_durations->top ().length_mom (); - if (new_until > first_until_) - first_until_ = new_until; - } - - if (second_durations->size ()) - { - second_durations->sort (Duration::compare); - Moment new_until = now_ + second_durations->top ().length_mom (); - if (new_until > second_until_) - second_until_ = new_until; - } - - Translator_group * fir = first_iter_p_->report_to_l (); - Translator_group * sir = second_iter_p_->report_to_l (); - - bool solo_b = (first_pitches->empty () != second_pitches->empty ()) - && !(first_until_ > now_ && second_until_ > now_); - - bool unirhythm_b = !solo_b && !compare (first_durations, second_durations); - bool unison_b = unirhythm_b && !first_pitches->empty () - &&!compare (first_pitches, second_pitches); - bool unisilence_b = unirhythm_b && first_pitches->empty (); - - Translator_group * fd = fir->find_create_translator_l (p->what_str_, "one"); - Translator_group * sd = sir->find_create_translator_l (p->what_str_, "two"); - - bool split_interval_b = false; - if (gh_number_p (interval)) - { - SCM s = fd->get_property (ly_symbol2scm ("splitInterval")); - int i = gh_scm2int (interval); - if (gh_pair_p (s) - && gh_number_p (gh_car (s)) - && gh_number_p (gh_cdr (s)) - && i >= gh_scm2int (gh_car (s)) - && i <= gh_scm2int (gh_cdr (s))) - split_interval_b = true; - } - - /* - Hmm, maybe we should set/check combined_b_ against - - first_iter_p_->report_to_l () == second_iter_p_->report_to_l () - - ? - */ - - String to_id = combined_b_ ? "one" : "two"; - if ((!unirhythm_b && combined_b_) - || (split_interval_b && combined_b_) - || (solo_b && combined_b_) - /*|| (unisilence_b && combined_b_) */ - || ((unirhythm_b || unison_b || unisilence_b) - && !combined_b_ && !split_interval_b && !solo_b)) - { - combined_b_ = !combined_b_; - to_id = combined_b_ ? "one" : "two"; - change_to (second_iter_p_, p->what_str_, to_id); - } - - if (!combined_b_) - sir = second_iter_p_->report_to_l (); - - SCM b = unirhythm_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("unirhythm", b); - sd->set_property ("unirhythm", b); - - b = split_interval_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("split-interval", b); - sd->set_property ("split-interval", b); - - b = unisilence_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("unisilence", b); - sd->set_property ("unisilence", b); - - b = unison_b ? SCM_BOOL_T : SCM_BOOL_F; - fd->set_property ("unison", b); - sd->set_property ("unison", b); - - b = solo_b ? SCM_BOOL_T : SCM_BOOL_F; - if (first_pitches->size ()) - { - fd->set_property ("solo", b); - sd->set_property ("solo", SCM_BOOL_F); - } - - if (second_pitches->size ()) - { - fd->set_property ("solo", SCM_BOOL_F); - sd->set_property ("solo", b); - } - - first_pitches->clear (); - second_pitches->clear (); - first_durations->clear (); - second_durations->clear (); -} -#else void Part_combine_music_iterator::do_process_and_next (Moment m) { Part_combine_music const * p = dynamic_cast (music_l_); - /* - Huh? - */ - // now_ = next_moment (); - /* TODO: @@ -333,14 +147,32 @@ Part_combine_music_iterator::do_process_and_next (Moment m) */ -#if 1 + /* + Huh? + */ + now_ = next_moment (); Music *first_music; - Music *second_music; - if (first_iter_p_->ok ()) - first_music = first_iter_p_->get_music (); + Music_iterator* first_next = first_iter_p_->clone (); + //first_next->next (); + if (first_next->ok ()) + first_music = first_next->get_music (); +#if 0 + delete first_next; +#else + //URGURURGU + first_next->handle_.down (); +#endif - if (second_iter_p_->ok ()) - second_music = second_iter_p_->get_music (); + Music *second_music; + Music_iterator* second_next = second_iter_p_->clone (); + //second_next->next (); + if (second_next->ok ()) + second_music = second_next->get_music (); +#if 0 + delete second_next; +#else + //URGURURGU + second_next->handle_.down (); #endif Array first_pitches; @@ -485,7 +317,6 @@ Part_combine_music_iterator::do_process_and_next (Moment m) Music_iterator::do_process_and_next (m); now_ = next_moment (); } -#endif Music_iterator* Part_combine_music_iterator::try_music_in_children (Music *m) const diff --git a/lily/request-chord-iterator.cc b/lily/request-chord-iterator.cc index a1d711ef9c..61e38b3094 100644 --- a/lily/request-chord-iterator.cc +++ b/lily/request-chord-iterator.cc @@ -12,7 +12,17 @@ #include "music-list.hh" #include "request.hh" +Request_chord_iterator::Request_chord_iterator () +{ + last_b_ = false; +} +Request_chord_iterator::Request_chord_iterator (Request_chord_iterator const &src) + : Music_iterator (src) +{ + last_b_ = src.last_b_; + elt_length_mom_ = src.elt_length_mom_; +} void Request_chord_iterator::construct_children() @@ -27,12 +37,6 @@ Request_chord_iterator::elt_l () const return (Request_chord*) music_l_; } -Request_chord_iterator::Request_chord_iterator () -{ - last_b_ = false; -} - - bool Request_chord_iterator::ok() const { diff --git a/lily/sequential-music-iterator.cc b/lily/sequential-music-iterator.cc index 16cd0e5e59..3e89e02522 100644 --- a/lily/sequential-music-iterator.cc +++ b/lily/sequential-music-iterator.cc @@ -12,19 +12,37 @@ #include "music-list.hh" #include "request-chord-iterator.hh" +Sequential_music_iterator::Sequential_music_iterator () +{ + cursor_ = 0; + here_mom_ = 0; + iter_p_ =0; +} -void -Sequential_music_iterator::do_print() const +Sequential_music_iterator::Sequential_music_iterator (Sequential_music_iterator const &src) + : Music_iterator (src) +{ + cursor_ = src.cursor_; + here_mom_ = src.here_mom_; + iter_p_ = src.iter_p_; +} + +Sequential_music_iterator::~Sequential_music_iterator() { if (iter_p_) - iter_p_->print(); + { + if (iter_p_->ok ()) + music_l_->origin ()->warning (_ ("Must stop before this music ends")); + delete iter_p_; + iter_p_ = 0; + } } -Sequential_music_iterator::Sequential_music_iterator () +void +Sequential_music_iterator::do_print() const { - cursor_ = 0; - here_mom_ = 0; - iter_p_ =0; + if (iter_p_) + iter_p_->print(); } void @@ -75,17 +93,6 @@ Sequential_music_iterator::set_sequential_music_translator() set_translator (child_report); } -Sequential_music_iterator::~Sequential_music_iterator() -{ - if (iter_p_) - { - if (iter_p_->ok ()) - music_l_->origin ()->warning (_ ("Must stop before this music ends")); - delete iter_p_; - iter_p_ = 0; - } -} - Music* Sequential_music_iterator::get_music () { diff --git a/lily/simple-music-iterator.cc b/lily/simple-music-iterator.cc index 4c925f3c91..d19d615a22 100644 --- a/lily/simple-music-iterator.cc +++ b/lily/simple-music-iterator.cc @@ -11,6 +11,15 @@ #include "music.hh" #include "input.hh" +Simple_music_iterator::Simple_music_iterator () + : Music_iterator () +{ +} + +Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src) + : Music_iterator (src) +{ +} void Simple_music_iterator::do_process_and_next (Moment m)