+
+ for (int i= broken_intos_.size () ; i--;)
+ scm_gc_mark (broken_intos_[i]->self_scm ());
+
+ return SCM_EOL;
+}
+
+
+/*
+ Set left or right bound to IT.
+
+ Warning: caller should ensure that subsequent calls put in ITems
+ that are left-to-right ordered.
+ */
+void
+add_bound_item (Spanner* sp, Grob*it)
+{
+ if (!sp->get_bound (LEFT))
+ sp->set_bound (LEFT, it);
+ else
+ sp->set_bound (RIGHT, it);
+}
+
+
+MAKE_SCHEME_CALLBACK (Spanner,set_spacing_rods,1);
+SCM
+Spanner::set_spacing_rods (SCM smob)
+{
+ Grob*me = unsmob_grob (smob);
+
+ Rod r;
+ Spanner*sp = dynamic_cast<Spanner*> (me);
+ r.item_l_drul_[LEFT] = sp->get_bound (LEFT);
+ r.item_l_drul_[RIGHT] = sp->get_bound (RIGHT);
+ r.distance_ =
+ gh_scm2double (me->get_grob_property ("minimum-length"))
+ * 1.0;
+
+ r.add_to_cols ();
+ return SCM_UNSPECIFIED;
+}
+
+
+Spanner*
+unsmob_spanner (SCM s )
+{
+ return dynamic_cast<Spanner*> (unsmob_grob (s));