+
+Context *
+Grob_info::context () const
+{
+ return origin_trans_->context ();
+}
+
+Spanner *
+Grob_info::spanner () const
+{
+ return dynamic_cast<Spanner *> (grob_);
+}
+
+Item *
+Grob_info::item () const
+{
+ return dynamic_cast<Item *> (grob_);
+}
+
+Stream_event *
+Grob_info::ultimate_event_cause () const
+{
+ SCM cause = grob_->self_scm ();
+ while (unsmob<Grob> (cause))
+ {
+ cause = unsmob<Grob> (cause)->get_property ("cause");
+ }
+ return unsmob<Stream_event> (cause);
+}
+
+bool
+Grob_info::less (Grob_info i, Grob_info j)
+{
+ return Grob::less (i.grob (), j.grob ());
+}