- Link_array<Score_element> start_slur_l_arr;
- for (int i=0; i< new_slur_req_l_arr_.size (); i++)
- {
- Span_req* slur_req_l = new_slur_req_l_arr_[i];
- // end slur: move the slur to other array
- if (slur_req_l->span_dir_ == STOP)
- {
- if (slur_l_stack_.empty ())
- slur_req_l->origin ()->warning (_f ("can't find start of slur"));
- else
- {
- Score_element* slur = slur_l_stack_.pop ();
- SCM s = get_property ("slurEndAttachment");
- if (gh_symbol_p (s))
- {
- index_set_cell (slur->get_elt_property ("attachment"), STOP, s);
- }
- end_slur_l_arr_.push (slur);
- requests_arr_.pop ();
- }
- }
- else if (slur_req_l->span_dir_ == START)
- {
- // push a new slur onto stack.
- // (use temp. array to wait for all slur STOPs)
- Score_element* slur = new Spanner (get_property ("Slur"));
- Slur::set_interface (slur);
- SCM s = get_property ("slurBeginAttachment");
- if (gh_symbol_p (s))
- {
- index_set_cell (slur->get_elt_property ("attachment"), START, s);
- }
- start_slur_l_arr.push (slur);
- requests_arr_.push (slur_req_l);
- announce_element (slur, slur_req_l);
- }
- }
- for (int i=0; i < start_slur_l_arr.size (); i++)
- slur_l_stack_.push (start_slur_l_arr[i]);