/*
- voice-iter.cc -- implement Voice_iterator
+ Sequential_music-iter.cc -- implement Sequential_music_iterator
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "translator-group.hh"
void
-Voice_iterator::do_print() const
+Sequential_music_iterator::do_print() const
{
if (iter_p_)
iter_p_->print();
}
-Voice_iterator::Voice_iterator (Voice const*v)
- : PCursor<Music*> (v->music_p_list_)
+Sequential_music_iterator::Sequential_music_iterator ()
{
- here_mom_ = v->offset_mom_;
- voice_C_ = v;
+ cursor_p_ = 0;
+ here_mom_ = 0;
iter_p_ =0;
}
+Sequential_music*
+Sequential_music_iterator::sequential_music_l () const
+{
+ return (Sequential_music *)music_l_;
+}
+
void
-Voice_iterator::construct_children()
+Sequential_music_iterator::construct_children()
{
- while (PCursor<Music*>::ok())
+ cursor_p_ = new PCursor<Music*> (sequential_music_l ()->music_p_list_p_->top ());
+
+ while (cursor_p_->ok())
{
start_next_element();
if (!iter_p_->ok())
}
else
{
- set_voice_translator();
+ set_Sequential_music_translator();
break;
}
}
}
void
-Voice_iterator::leave_element()
+Sequential_music_iterator::leave_element()
{
delete iter_p_;
iter_p_ =0;
- MInterval elt_time = ptr()->time_int ();
- if (!elt_time.empty_b())
- here_mom_ += elt_time.length();
- PCursor<Music*>::next();
+ Moment elt_time = cursor_p_->ptr()->duration ();
+ here_mom_ += elt_time;
+ cursor_p_->next();
}
void
-Voice_iterator::start_next_element()
+Sequential_music_iterator::start_next_element()
{
assert (!iter_p_);
- iter_p_ = get_iterator_p (ptr());
+ iter_p_ = get_iterator_p ( cursor_p_->ptr());
}
void
-Voice_iterator::set_voice_translator()
+Sequential_music_iterator::set_Sequential_music_translator()
{
if (iter_p_->report_to_l()->depth_i () > report_to_l ()->depth_i ())
set_translator (iter_p_->report_to_l());
}
-Voice_iterator::~Voice_iterator()
+Sequential_music_iterator::~Sequential_music_iterator()
{
+ delete cursor_p_;
assert (! iter_p_);
}
-IMPLEMENT_IS_TYPE_B1(Voice_iterator,Music_iterator);
+IMPLEMENT_IS_TYPE_B1(Sequential_music_iterator,Music_iterator);
void
-Voice_iterator::process_and_next (Moment until)
+Sequential_music_iterator::do_process_and_next (Moment until)
{
while (1)
{
{
leave_element();
- if (PCursor<Music*>::ok())
+ if (cursor_p_->ok())
{
start_next_element();
- set_voice_translator();
+ set_Sequential_music_translator();
}
else
{
loopexit:
- Music_iterator::process_and_next (until);
+ Music_iterator::do_process_and_next (until);
}
Moment
-Voice_iterator::next_moment() const
+Sequential_music_iterator::next_moment() const
{
return iter_p_->next_moment() + here_mom_;
}
bool
-Voice_iterator::ok() const
+Sequential_music_iterator::ok() const
{
return iter_p_;
}
-