/*
completion-note-heads-engraver.cc -- Completion_heads_engraver
- (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include <cctype>
+using namespace std;
#include "rhythmic-head.hh"
#include "output-def.hh"
#include "duration.hh"
#include "pitch.hh"
-
/*
TODO: make matching rest engraver.
*/
class Completion_heads_engraver : public Engraver
{
- Link_array<Item> notes_;
- Link_array<Item> prev_notes_;
- Link_array<Grob> ties_;
+ vector<Item*> notes_;
+ vector<Item*> prev_notes_;
+ vector<Grob*> ties_;
- Link_array<Item> dots_;
- Link_array<Music> note_events_;
- Link_array<Music> scratch_note_events_;
+ vector<Item*> dots_;
+ vector<Music*> note_events_;
+ vector<Music*> scratch_note_events_;
Moment note_end_mom_;
bool is_first_;
{
if (m->is_mus_type ("note-event"))
{
- note_events_.push (m);
+ note_events_.push_back (m);
is_first_ = true;
Moment musiclen = m->get_length ();
return true;
}
else if (m->is_mus_type ("busy-playing-event"))
- {
- return note_events_.size () && is_first_;
- }
+ return note_events_.size () && is_first_;
return false;
}
Duration note_dur;
Duration *orig = 0;
if (left_to_do_)
- {
- note_dur = find_nearest_duration (left_to_do_);
- }
+ note_dur = find_nearest_duration (left_to_do_);
else
{
orig = unsmob_duration (note_events_[0]->get_property ("duration"));
}
if (orig)
- {
- left_to_do_ = orig->get_length ();
- }
+ left_to_do_ = orig->get_length ();
if (orig && note_dur.get_length () != orig->get_length ())
{
if (!scratch_note_events_.size ())
- for (int i = 0; i < note_events_.size (); i++)
+ for (vsize i = 0; i < note_events_.size (); i++)
{
Music *m = note_events_[i]->clone ();
- scratch_note_events_.push (m);
+ scratch_note_events_.push_back (m);
}
}
- for (int i = 0;
- left_to_do_ && i < note_events_.size (); i++)
+ for (vsize i = 0; left_to_do_ && i < note_events_.size (); i++)
{
Music *event = note_events_[i];
if (scratch_note_events_.size ())
d->set_property ("dot-count", scm_from_int (dots));
d->set_parent (note, Y_AXIS);
- dots_.push (d);
+ dots_.push_back (d);
}
Pitch *pit = unsmob_pitch (event->get_property ("pitch"));
pos += scm_to_int (c0);
note->set_property ("staff-position", scm_from_int (pos));
- notes_.push (note);
+ notes_.push_back (note);
}
if (prev_notes_.size () == notes_.size ())
{
- for (int i = 0; i < notes_.size (); i++)
+ for (vsize i = 0; i < notes_.size (); i++)
{
Grob *p = make_spanner ("Tie", SCM_EOL);
- Tie::set_interface (p); // cannot remove yet!
-
Tie::set_head (p, LEFT, prev_notes_[i]);
Tie::set_head (p, RIGHT, notes_[i]);
- ties_.push (p);
+ ties_.push_back (p);
}
}
*/
if (orig
&& now_mom ().grace_part_)
- {
- left_to_do_ = Rational (0, 0);
- }
+ left_to_do_ = Rational (0, 0);
}
void
dots_.clear ();
- for (int i = scratch_note_events_.size (); i--;)
- {
- scratch_note_events_[i]->unprotect ();
- }
+ for (vsize i = scratch_note_events_.size (); i--;)
+ scratch_note_events_[i]->unprotect ();
scratch_note_events_.clear ();
}