- Link_array<Grob> start_slurs;
- for (int i=0; i< new_slur_reqs_.size (); i++)
- {
- Span_req* slur_req = new_slur_reqs_[i];
- // end slur: move the slur to other array
- if (slur_req->get_span_dir () == STOP)
- {
- if (slur_l_stack_.empty ())
- /* How to shut up this warning, when Voice_devnull_engraver has
- eaten start request? */
- slur_req->origin ()->warning (_f ("can't find start of slur"));
- else
- {
- Grob* slur = slur_l_stack_.pop ();
-
- end_slurs_.push (slur);
- requestses_.pop ();
- }
- }
- else if (slur_req->get_span_dir () == START)
- {
- // push a new slur onto stack.
- // (use temp. array to wait for all slur STOPs)
- Grob* slur = new Spanner (get_property ("Slur"));
- Slur::set_interface (slur); // cannot remove yet!
- start_slurs.push (slur);
- requestses_.push (slur_req);
- announce_grob (slur, slur_req->self_scm ());
- }
- }
- for (int i=0; i < start_slurs.size (); i++)
- slur_l_stack_.push (start_slurs[i]);
- new_slur_reqs_.clear ();