+
+/*
+ Return I such that SP == SP->ORIGINAL_->BROKEN_INTOS_[I].
+*/
+int
+broken_spanner_index (Spanner *sp)
+{
+ Spanner *parent = dynamic_cast<Spanner *> (sp->original_);
+ return parent->broken_intos_.find_index (sp);
+}
+
+Spanner *
+unsmob_spanner (SCM s)
+{
+ return dynamic_cast<Spanner *> (unsmob_grob (s));
+}
+
+ADD_INTERFACE (Spanner,
+ "spanner-interface",
+ "Some objects are horizontally spanned between objects. For\n"
+ "example, slur, beam, tie, etc. These grobs form a subtype called\n"
+ "@code{Spanner}. All spanners have two span-points (these must be\n"
+ "@code{Item} objects), one on the left and one on the right. The left bound is\n"
+ "also the X-reference point of the spanner.\n",
+ "minimum-length");