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.
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.
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);
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
virtual void construct_children () ;
virtual Moment next_moment () const;
virtual bool ok () const;
+ virtual Music *get_next_music ();
protected:
virtual void do_print () const;
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);
return 0;
}
+Music*
+Music_iterator::get_next_music ()
+{
+ return 0;
+}
{
return child_iter_p_->try_music (m);
}
+
+
+Music*
+Music_wrapper_iterator::get_next_music ()
+{
+ return child_iter_p_->get_next_music ();
+}
#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"
Rhythm_interrogate_req* first_rhythmic_inquisition;
Rhythm_interrogate_req* second_rhythmic_inquisition;
+#include <iostream.h>
+
void
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);
Array<Duration>* first_durations = &first_rhythmic_inquisition->duration_arr_;
Array<Duration>* 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<Rhythmic_req*> (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 ())
{
{
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;
+}
\consists "Script_engraver";
\consists "Script_column_engraver";
\consists "Rhythmic_column_engraver";
- \consists "Slur_engraver";
+%% \consists "Slur_engraver";
\consists "Tie_engraver";
}
\translator {
\consists "Script_engraver";
\consists "Script_column_engraver";
\consists "Rhythmic_column_engraver";
- \consists "Slur_engraver";
+%% \consists "Slur_engraver";
\consists "Tie_engraver";
}
\translator {