+ DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM));
+ DECLARE_SCHEME_CALLBACK (calc_normalized_endpoints, (SCM));
+ DECLARE_SCHEME_CALLBACK (bounds_width, (SCM));
+ DECLARE_SCHEME_CALLBACK (kill_zero_spanned_time, (SCM));
+
+ static Spanner *unsmob (SCM s) {
+ return dynamic_cast <Spanner *> (Grob::unsmob (s));
+ }
+ static bool is_smob (SCM s) {
+ return Grob::is_smob (s) && unsmob (s);
+ }
+
+ vector<Spanner *> broken_intos_;
+
+ vsize get_break_index () const;
+ Spanner *broken_neighbor (Direction d) const;
+
+ // todo: move to somewhere else.
+ Real get_broken_left_end_align () const;
+ void substitute_one_mutable_property (SCM sym, SCM val);