source file of the GNU LilyPond music typesetter
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "grace-iterator.hh"
#include "translator-group.hh"
The length of musiclist from start to up to cursor_ (cursor_ not
including), is summed
- here_mom_ = sum (length (musiclist [start ... cursor> )) %)
+ here_mom_ = sum (length (musiclist [start ... cursor>)) %)
*/
iter_p_ = 0;
}
-Sequential_music_iterator::~Sequential_music_iterator()
+Sequential_music_iterator::~Sequential_music_iterator ()
{
delete iter_p_;
}
void
-Sequential_music_iterator::construct_children()
+Sequential_music_iterator::construct_children ()
{
cursor_ = dynamic_cast<Music_sequence const*> (music_l_)->music_list ();
/*
iter_p_->ok () is tautology, but what the heck.
*/
- if (iter_p_ && iter_p_->ok())
+ if (iter_p_ && iter_p_->ok ())
descend_to_child ();
}
Sequential_music_iterator::descend_to_child ()
{
Translator_group * child_report = child_report = iter_p_->report_to_l ();
+ Translator_group * me_report = report_to_l ();
+
if (dynamic_cast<Grace_iterator*> (iter_p_))
child_report = child_report->daddy_trans_l_;
-
- if (report_to_l()->depth_i () < child_report->depth_i ())
+
+ Translator_group * c = child_report;
+ while (c && c != me_report)
+ {
+ c= c->daddy_trans_l_;
+ }
+
+ if (c == me_report)
set_translator (child_report);
}
s = gh_append2 (nm, s);
Moment m = 0;
- for (SCM i = nm; gh_pair_p(i); i = gh_cdr (i))
+ for (SCM i = nm; gh_pair_p (i); i = gh_cdr (i))
m = m >? unsmob_music (gh_car (i))->length_mom ();
if (m > Moment (0))
}
Moment
-Sequential_music_iterator::pending_moment() const
+Sequential_music_iterator::pending_moment () const
{
- return iter_p_->pending_moment() + here_mom_;
+ return iter_p_->pending_moment () + here_mom_;
}
bool
-Sequential_music_iterator::ok() const
+Sequential_music_iterator::ok () const
{
return iter_p_;
}
{
return iter_p_ ? iter_p_->try_music (m) : 0;
}
-IMPLEMENT_CTOR_CALLBACK(Sequential_music_iterator);
+IMPLEMENT_CTOR_CALLBACK (Sequential_music_iterator);