else
{
System *root = get_root_system (this);
- Link_array__Item_ break_points = root->broken_col_range (left, right);
+ vector<Item*> break_points = root->broken_col_range (left, right);
break_points.insert (break_points.begin () + 0, left);
break_points.push_back (right);
Grob *
Spanner::find_broken_piece (System *l) const
{
- vsize idx = binary_search (broken_intos_, (Spanner *)l, Spanner::compare);
+ vsize idx = binary_search (broken_intos_, (Spanner *)l, Spanner::less_than);
if (idx != VPOS)
return broken_intos_ [idx];
return 0;
return p1->get_system ()->get_rank () - p2->get_system ()->get_rank ();
}
+bool
+Spanner::less_than (Spanner *const &a, Spanner *const &b)
+{
+ return a->get_system ()->get_rank () < b->get_system ()->get_rank ();
+}
+
bool
Spanner::is_broken () const
{
Spanner *sp = dynamic_cast<Spanner *> (me);
r.item_drul_[LEFT] = sp->get_bound (LEFT);
r.item_drul_[RIGHT] = sp->get_bound (RIGHT);
- r.distance_
- = robust_scm2double (me->get_property ("minimum-length"), 0);
- r.add_to_cols ();
+ SCM num_length = me->get_property ("minimum-length");
+ if (scm_is_number (num_length))
+ {
+ r.distance_ = robust_scm2double (num_length, 0);
+ r.add_to_cols ();
+ }
+
return SCM_UNSPECIFIED;
}