#include "music-iterator.hh"
#include "translator.hh"
#include "request.hh"
-#include "interpreter.hh"
#include "debug.hh"
IMPLEMENT_STATIC_NAME(Music_iterator);
Music_iterator::get_req_translator_l()
{
assert(report_to_l_);
- if (report_to_l_->interpreter_l() )
+ if (report_to_l_->is_bottom_engraver_b() )
return report_to_l_;
set_translator( report_to_l_->get_default_interpreter() );
}
void
-Music_iterator::next(Moment)
+Music_iterator::process_and_next(Moment)
{
first_b_ = false;
}
}
void
-Chord_iterator::next(Moment until)
+Chord_iterator::process_and_next(Moment until)
{
for (iter(children_p_list_.top(), i); i.ok(); ) {
if (i->next_moment() == until) {
- i->next(until);
+ i->process_and_next(until);
}
if (!i->ok())
delete i.remove_p();
else
i++;
}
- Music_iterator::next(until);
+ Music_iterator::process_and_next(until);
// assert(!ok() || next_moment() > until);
}
IMPLEMENT_IS_TYPE_B1(Voice_iterator,Music_iterator);
void
-Voice_iterator::next(Moment until)
+Voice_iterator::process_and_next(Moment until)
{
while (ok()) {
Moment local_until = until - here_mom_;
Moment here = iter_p_->next_moment();
if (here != local_until)
return;
- iter_p_->next(local_until);
+ iter_p_->process_and_next(local_until);
}
if (!iter_p_)
iter_p_ = Music_iterator::get_iterator_p( ptr() );
else if (!iter_p_->ok() )
next_element();
}
- Music_iterator::next(until);
+ Music_iterator::process_and_next(until);
assert(!ok() || next_moment() > until);
}
}
/* ***************** */
+
void
Request_iterator::do_print()const
{
mtor << req_l_->name() ;
}
+
Request_iterator::Request_iterator(Request const*c)
{
req_l_ = (Request*)c;
}
void
-Request_iterator::next(Moment m)
+Request_iterator::process_and_next(Moment m)
{
- if ( first_b_) {
- bool gotcha = daddy_iter_l_->report_to_l_->
- interpreter_l()->interpret_request_b(req_l_);
+ if ( first_b_ ) {
+ bool gotcha = daddy_iter_l_->report_to_l_->try_request(req_l_);
if (!gotcha)
req_l_->warning("Junking request: " + String(req_l_->name()));
first_b_ = false;
{
return (req_l_->duration() && !last_b_) || first_b_; // ugh
}
+
IMPLEMENT_STATIC_NAME(Request_iterator);
IMPLEMENT_IS_TYPE_B1(Request_iterator, Music_iterator);
TODO: pop/pushgroup
*/
void
-Change_iterator::next(Moment mom)
+Change_iterator::process_and_next(Moment mom)
{
#if 0
Engraver_group_engraver *group_l =
report_to_l_->daddy_grav_l_->remove_engraver_p(report_to_l_);
group_l->add(report_to_l_);
#endif
- Music_iterator::next(mom);
+ Music_iterator::process_and_next(mom);
}
Voice_element_iterator::construct_children()
{
get_req_translator_l();
-/*
- if ( daddy_iter_l_
- && daddy_iter_l_->is_type_b(Voice_iterator::static_name() )) {
- set_translator(daddy_iter_l_-> get_req_translator_l());
- } else if (daddy_iter_l_
- && daddy_iter_l_-> is_type_b( Chord_iterator::static_name() )) {
-
- get_req_translator_l();
- }
- */
Chord_iterator::construct_children();
}