+Real
+Staff_symbol_referencer::staff_radius (Grob *me)
+{
+ /*
+ line_span is measured in pitch steps, not in staff spaces
+ */
+ return staff_span (me).length () / 4.0;
+}
+
+int
+compare_position (Grob *const &a, Grob *const &b)
+{
+ return sign (Staff_symbol_referencer::get_position ((Grob *)a)
+ - Staff_symbol_referencer::get_position ((Grob *) b));
+}
+
+bool
+position_less (Grob *const &a, Grob *const &b)
+{
+ return Staff_symbol_referencer::get_position (a)
+ < Staff_symbol_referencer::get_position (b);
+}
+
+bool
+pure_position_less (Grob *const &a, Grob *const &b)
+{
+ return Staff_symbol_referencer::pure_get_position (a)
+ < Staff_symbol_referencer::pure_get_position (b);
+}
+
+ADD_INTERFACE (Staff_symbol_referencer,
+ "An object whose Y@tie{}position is meant relative to a staff"
+ " symbol. These usually"
+ " have @code{Staff_symbol_referencer::callback} in their"
+ " @code{Y-offset-callbacks}.",
+
+ /* properties */
+ "staff-position "
+ );