+Interval
+Grob::pure_height (Grob *refp, int start, int end)
+{
+ SCM proc = get_property_data ( ly_symbol2scm ("Y-extent"));
+ Interval iv = robust_scm2interval (call_pure_function (proc,
+ scm_list_1 (self_scm ()),
+ start, end),
+ Interval (0, 0));
+ Real offset = pure_relative_y_coordinate (refp, start, end);
+
+ SCM min_ext = get_property ("minimum-Y-extent");
+
+ /* we don't add minimum-Y-extent if the extent is empty. This solves
+ a problem with Hara-kiri spanners. They would request_suicide and
+ return empty extents, but we would force them here to be large. */
+ if (!iv.is_empty () && is_number_pair (min_ext))
+ iv.unite (ly_scm2interval (min_ext));
+
+ iv.translate (offset);
+ return iv;
+}
+
+Interval
+Grob::maybe_pure_extent (Grob *refp, Axis a, bool pure, int start, int end)
+{
+ if (pure && a != Y_AXIS)
+ programming_error ("tried to get pure width");
+ return (pure && a == Y_AXIS) ? pure_height (refp, start, end) : extent (refp, a);
+}
+
+Interval_t<int>
+Grob::spanned_rank_iv ()
+{
+ return Interval_t<int> (-1, 0);
+}
+