From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Sun, 8 May 2005 23:30:51 +0000 (+0000)
Subject: * lily/include/grob-info.hh (class Grob_info): make data member
X-Git-Tag: release/2.5.24~42
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=02c656d3b0cb895cc81b428d699d960746800e45;p=lilypond.git

* lily/include/grob-info.hh (class Grob_info): make data member
private. Changes throughout.

* lily/vertical-align-engraver.cc (acknowledge_grob): read
alignAboveContext and alignBelowContext
---

diff --git a/ChangeLog b/ChangeLog
index 141a16a40f..988738e479 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2005-05-09  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+	* lily/include/grob-info.hh (class Grob_info): make data member
+	private. Changes throughout.
+
 	* input/regression/alignment-order.ly: new file. 
 
 	* lily/vertical-align-engraver.cc (acknowledge_grob): read
diff --git a/lily/accidental-engraver.cc b/lily/accidental-engraver.cc
index 8a47a9cae1..259e340d04 100644
--- a/lily/accidental-engraver.cc
+++ b/lily/accidental-engraver.cc
@@ -483,15 +483,15 @@ Accidental_engraver::acknowledge_grob (Grob_info info)
 
   if (note
       && note->is_mus_type ("note-event")
-      && Rhythmic_head::has_interface (info.grob_))
+      && Rhythmic_head::has_interface (info.grob ()))
     {
       if (to_boolean (get_property ("harmonicAccidentals"))
-	  || !ly_c_equal_p (info.grob_->get_property ("style"),
+	  || !ly_c_equal_p (info.grob ()->get_property ("style"),
 			    ly_symbol2scm ("harmonic")))
 	{
 
 	  Accidental_entry entry;
-	  entry.head_ = info.grob_;
+	  entry.head_ = info.grob ();
 	  entry.origin_trans_ = dynamic_cast<Engraver *> (info.origin_translator ());
 	  entry.origin_ = entry.origin_trans_->context ();
 	  entry.melodic_ = note;
@@ -499,13 +499,13 @@ Accidental_engraver::acknowledge_grob (Grob_info info)
 	  accidentals_.push (entry);
 	}
     }
-  else if (Tie::has_interface (info.grob_))
-    ties_.push (dynamic_cast<Spanner *> (info.grob_));
-  else if (Arpeggio::has_interface (info.grob_))
-    left_objects_.push (info.grob_);
-  else if (info.grob_
+  else if (Tie::has_interface (info.grob ()))
+    ties_.push (dynamic_cast<Spanner *> (info.grob ()));
+  else if (Arpeggio::has_interface (info.grob ()))
+    left_objects_.push (info.grob ());
+  else if (info.grob ()
 	   ->internal_has_interface (ly_symbol2scm ("finger-interface")))
-    left_objects_.push (info.grob_);
+    left_objects_.push (info.grob ());
 }
 
 void
diff --git a/lily/ambitus-engraver.cc b/lily/ambitus-engraver.cc
index 12402a3100..f48668e755 100644
--- a/lily/ambitus-engraver.cc
+++ b/lily/ambitus-engraver.cc
@@ -114,10 +114,10 @@ Ambitus_engraver::stop_translation_timestep ()
 void
 Ambitus_engraver::acknowledge_grob (Grob_info info)
 {
-  Item *item = dynamic_cast<Item *> (info.grob_);
+  Item *item = dynamic_cast<Item *> (info.grob ());
   if (item)
     {
-      if (Note_head::has_interface (info.grob_))
+      if (Note_head::has_interface (info.grob ()))
 	{
 	  Music *nr = info.music_cause ();
 	  if (nr && nr->is_mus_type ("note-event"))
diff --git a/lily/arpeggio-engraver.cc b/lily/arpeggio-engraver.cc
index 08682dd674..61dbe54f32 100644
--- a/lily/arpeggio-engraver.cc
+++ b/lily/arpeggio-engraver.cc
@@ -50,27 +50,27 @@ Arpeggio_engraver::acknowledge_grob (Grob_info info)
 {
   if (arpeggio_)
     {
-      if (Stem::has_interface (info.grob_))
+      if (Stem::has_interface (info.grob ()))
 	{
 	  if (!arpeggio_->get_parent (Y_AXIS))
-	    arpeggio_->set_parent (info.grob_, Y_AXIS);
+	    arpeggio_->set_parent (info.grob (), Y_AXIS);
 
 	  Pointer_group_interface::add_grob (arpeggio_,
 					     ly_symbol2scm ("stems"),
-					     info.grob_);
+					     info.grob ());
 	}
 
       /*
 	We can't catch local key items (accidentals) from Voice context,
 	see Local_key_engraver
       */
-      else if (Rhythmic_head::has_interface (info.grob_))
+      else if (Rhythmic_head::has_interface (info.grob ()))
 	{
-	  Side_position_interface::add_support (arpeggio_, info.grob_);
+	  Side_position_interface::add_support (arpeggio_, info.grob ());
 	}
-      else if (Note_column::has_interface (info.grob_))
+      else if (Note_column::has_interface (info.grob ()))
 	{
-	  info.grob_->set_property ("arpeggio", arpeggio_->self_scm ());
+	  info.grob ()->set_property ("arpeggio", arpeggio_->self_scm ());
 	}
     }
 }
diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc
index e4d71d0754..a4d8025704 100644
--- a/lily/auto-beam-engraver.cc
+++ b/lily/auto-beam-engraver.cc
@@ -287,23 +287,23 @@ Auto_beam_engraver::acknowledge_grob (Grob_info info)
 
   if (stems_)
     {
-      if (Beam::has_interface (info.grob_))
+      if (Beam::has_interface (info.grob ()))
 	{
 	  end_beam ();
 	}
-      else if (Bar_line::has_interface (info.grob_))
+      else if (Bar_line::has_interface (info.grob ()))
 	{
 	  end_beam ();
 	}
-      else if (Rest::has_interface (info.grob_))
+      else if (Rest::has_interface (info.grob ()))
 	{
 	  end_beam ();
 	}
     }
 
-  if (Stem::has_interface (info.grob_))
+  if (Stem::has_interface (info.grob ()))
     {
-      Item *stem = dynamic_cast<Item *> (info.grob_);
+      Item *stem = dynamic_cast<Item *> (info.grob ());
       Music *m = info.music_cause ();
       if (!m->is_mus_type ("rhythmic-event"))
 	{
diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc
index 6d74ade67c..eac9299877 100644
--- a/lily/axis-group-engraver.cc
+++ b/lily/axis-group-engraver.cc
@@ -89,7 +89,7 @@ Axis_group_engraver::finalize ()
 void
 Axis_group_engraver::acknowledge_grob (Grob_info i)
 {
-  elts_.push (i.grob_);
+  elts_.push (i.grob ());
 }
 
 /*
@@ -191,8 +191,8 @@ Hara_kiri_engraver::acknowledge_grob (Grob_info i)
     {
       for (SCM s = interesting_; scm_is_pair (s); s = scm_cdr (s))
 	{
-	  if (i.grob_->internal_has_interface (scm_car (s)))
-	    Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob_);
+	  if (i.grob ()->internal_has_interface (scm_car (s)))
+	    Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ());
 	}
     }
 }
diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc
index 4e9cc302f7..b694089094 100644
--- a/lily/bar-number-engraver.cc
+++ b/lily/bar-number-engraver.cc
@@ -64,7 +64,7 @@ Bar_number_engraver::Bar_number_engraver ()
 void
 Bar_number_engraver::acknowledge_grob (Grob_info inf)
 {
-  Grob *s = inf.grob_;
+  Grob *s = inf.grob ();
   if (text_
       && dynamic_cast<Item *> (s)
       && s->get_property ("break-align-symbol") == ly_symbol2scm ("left-edge"))
diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc
index 7e3a898dd3..917d2db3c1 100644
--- a/lily/beam-engraver.cc
+++ b/lily/beam-engraver.cc
@@ -217,18 +217,18 @@ Beam_engraver::acknowledge_grob (Grob_info info)
 {
   if (beam_)
     {
-      if (Rest::has_interface (info.grob_))
+      if (Rest::has_interface (info.grob ()))
 	{
-	  info.grob_->add_offset_callback (Beam::rest_collision_callback_proc, Y_AXIS);
+	  info.grob ()->add_offset_callback (Beam::rest_collision_callback_proc, Y_AXIS);
 	}
-      else if (Stem::has_interface (info.grob_))
+      else if (Stem::has_interface (info.grob ()))
 	{
 	  Moment now = now_mom ();
 
 	  if (!valid_start_point ())
 	    return;
 
-	  Item *stem = dynamic_cast<Item *> (info.grob_);
+	  Item *stem = dynamic_cast<Item *> (info.grob ());
 	  if (Stem::get_beam (stem))
 	    return;
 
diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc
index a9787ef377..2897a1aaa8 100644
--- a/lily/break-align-engraver.cc
+++ b/lily/break-align-engraver.cc
@@ -67,7 +67,7 @@ Break_align_engraver::derived_mark () const
 void
 Break_align_engraver::acknowledge_grob (Grob_info inf)
 {
-  if (Item *item = dynamic_cast<Item *> (inf.grob_))
+  if (Item *item = dynamic_cast<Item *> (inf.grob ()))
     {
       /*
 	Removed check for item->empty (X_AXIS). --hwn 20/1/04
diff --git a/lily/chord-tremolo-engraver.cc b/lily/chord-tremolo-engraver.cc
index 50d4e382cd..363d756537 100644
--- a/lily/chord-tremolo-engraver.cc
+++ b/lily/chord-tremolo-engraver.cc
@@ -142,9 +142,9 @@ Chord_tremolo_engraver::typeset_beam ()
 void
 Chord_tremolo_engraver::acknowledge_grob (Grob_info info)
 {
-  if (beam_ && Stem::has_interface (info.grob_))
+  if (beam_ && Stem::has_interface (info.grob ()))
     {
-      Grob *s = info.grob_;
+      Grob *s = info.grob ();
 
       if (start_mom_ == now_mom ())
 	Stem::set_beaming (s, flags_, RIGHT);
@@ -170,14 +170,14 @@ Chord_tremolo_engraver::acknowledge_grob (Grob_info info)
 	}
     }
   else if (repeat_
-	   && flags_ && !body_is_sequential_ && Stem::has_interface (info.grob_))
+	   && flags_ && !body_is_sequential_ && Stem::has_interface (info.grob ()))
     {
       stem_tremolo_ = make_item ("StemTremolo", repeat_->self_scm ());
       stem_tremolo_->set_property ("flag-count",
 				   scm_int2num (flags_));
       stem_tremolo_->set_property ("stem",
-				   info.grob_->self_scm ());
-      stem_tremolo_->set_parent (info.grob_, X_AXIS);
+				   info.grob ()->self_scm ());
+      stem_tremolo_->set_parent (info.grob (), X_AXIS);
     }
 }
 
diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc
index bed486a45e..e7a0d00304 100644
--- a/lily/clef-engraver.cc
+++ b/lily/clef-engraver.cc
@@ -71,10 +71,10 @@ Clef_engraver::set_glyph ()
 void
 Clef_engraver::acknowledge_grob (Grob_info info)
 {
-  Item *item = dynamic_cast<Item *> (info.grob_);
+  Item *item = dynamic_cast<Item *> (info.grob ());
   if (item)
     {
-      if (Bar_line::has_interface (info.grob_)
+      if (Bar_line::has_interface (info.grob ())
 	  && scm_is_string (get_property ("clefGlyph")))
 	create_clef ();
     }
diff --git a/lily/cluster-engraver.cc b/lily/cluster-engraver.cc
index c6ea93dc86..565754199e 100644
--- a/lily/cluster-engraver.cc
+++ b/lily/cluster-engraver.cc
@@ -117,7 +117,7 @@ Cluster_spanner_engraver::stop_translation_timestep ()
 void
 Cluster_spanner_engraver::acknowledge_grob (Grob_info info)
 {
-  if (!beacon_ && Note_column::has_interface (info.grob_))
+  if (!beacon_ && Note_column::has_interface (info.grob ()))
     {
       finished_spanner_ = spanner_;
       spanner_ = 0;
diff --git a/lily/coherent-ligature-engraver.cc b/lily/coherent-ligature-engraver.cc
index 71995b18bb..0ed1405afa 100644
--- a/lily/coherent-ligature-engraver.cc
+++ b/lily/coherent-ligature-engraver.cc
@@ -177,7 +177,7 @@ compute_delta_pitches (Array<Grob_info> primitives)
   Item *prev_primitive = 0, *primitive = 0;
   for (int i = 0; i < primitives.size (); i++)
     {
-      primitive = dynamic_cast<Item *> (primitives[i].grob_);
+      primitive = dynamic_cast<Item *> (primitives[i].grob ());
       Music *music_cause = primitives[i].music_cause ();
       int pitch
 	= unsmob_pitch (music_cause->get_property ("pitch"))->steps ();
diff --git a/lily/collision-engraver.cc b/lily/collision-engraver.cc
index 13edfdd486..66813fb37c 100644
--- a/lily/collision-engraver.cc
+++ b/lily/collision-engraver.cc
@@ -42,13 +42,13 @@ Collision_engraver::process_acknowledged_grobs ()
 void
 Collision_engraver::acknowledge_grob (Grob_info i)
 {
-  if (Note_column::has_interface (i.grob_))
+  if (Note_column::has_interface (i.grob ()))
     {
       /*should check Y axis? */
-      if (Note_column::has_rests (i.grob_) || i.grob_->get_parent (X_AXIS))
+      if (Note_column::has_rests (i.grob ()) || i.grob ()->get_parent (X_AXIS))
 	return;
 
-      note_columns_.push (i.grob_);
+      note_columns_.push (i.grob ());
     }
 }
 
diff --git a/lily/custos-engraver.cc b/lily/custos-engraver.cc
index 0c5157d599..2e232ea8ca 100644
--- a/lily/custos-engraver.cc
+++ b/lily/custos-engraver.cc
@@ -62,13 +62,13 @@ Custos_engraver::start_translation_timestep ()
 void
 Custos_engraver::acknowledge_grob (Grob_info info)
 {
-  Item *item = dynamic_cast<Item *> (info.grob_);
+  Item *item = dynamic_cast<Item *> (info.grob ());
   if (item)
     {
       Music *m = info.music_cause ();
-      if (Bar_line::has_interface (info.grob_))
+      if (Bar_line::has_interface (info.grob ()))
 	custos_permitted = true;
-      else if (Note_head::has_interface (info.grob_)
+      else if (Note_head::has_interface (info.grob ())
 	       && m
 	       && m->is_mus_type ("note-event"))
 	{
diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc
index 2bd44f58af..0b1a5b3a85 100644
--- a/lily/dot-column-engraver.cc
+++ b/lily/dot-column-engraver.cc
@@ -50,7 +50,7 @@ Dot_column_engraver::stop_translation_timestep ()
 void
 Dot_column_engraver::acknowledge_grob (Grob_info info)
 {
-  Grob *d = unsmob_grob (info.grob_->get_property ("dot"));
+  Grob *d = unsmob_grob (info.grob ()->get_property ("dot"));
   if (d)
     {
       if (!dotcol_)
@@ -58,11 +58,11 @@ Dot_column_engraver::acknowledge_grob (Grob_info info)
 	  dotcol_ = make_item ("DotColumn", SCM_EOL);
 	}
 
-      Dot_column::add_head (dotcol_, info.grob_);
+      Dot_column::add_head (dotcol_, info.grob ());
     }
-  else if (Stem::has_interface (info.grob_))
+  else if (Stem::has_interface (info.grob ()))
     {
-      stem_ = info.grob_;
+      stem_ = info.grob ();
     }
 }
 
diff --git a/lily/drum-note-engraver.cc b/lily/drum-note-engraver.cc
index c73cbf9791..2d19c7d4bf 100644
--- a/lily/drum-note-engraver.cc
+++ b/lily/drum-note-engraver.cc
@@ -121,23 +121,23 @@ Drum_notes_engraver::process_music ()
 void
 Drum_notes_engraver::acknowledge_grob (Grob_info inf)
 {
-  if (Stem::has_interface (inf.grob_))
+  if (Stem::has_interface (inf.grob ()))
     {
       for (int i = 0; i < scripts_.size (); i++)
 	{
 	  Grob *e = scripts_[i];
 
 	  if (to_dir (e->get_property ("side-relative-direction")))
-	    e->set_property ("direction-source", inf.grob_->self_scm ());
+	    e->set_property ("direction-source", inf.grob ()->self_scm ());
 
 	  /*
 	    add dep ?
 	  */
-	  e->add_dependency (inf.grob_);
-	  Side_position_interface::add_support (e, inf.grob_);
+	  e->add_dependency (inf.grob ());
+	  Side_position_interface::add_support (e, inf.grob ());
 	}
     }
-  else if (Note_column::has_interface (inf.grob_))
+  else if (Note_column::has_interface (inf.grob ()))
     {
       for (int i = 0; i < scripts_.size (); i++)
 	{
@@ -146,7 +146,7 @@ Drum_notes_engraver::acknowledge_grob (Grob_info inf)
 	  if (!e->get_parent (X_AXIS)
 	      && Side_position_interface::get_axis (e) == Y_AXIS)
 	    {
-	      e->set_parent (inf.grob_, X_AXIS);
+	      e->set_parent (inf.grob (), X_AXIS);
 	    }
 	}
     }
diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc
index dd7e8ad4fb..843573fdb3 100644
--- a/lily/dynamic-engraver.cc
+++ b/lily/dynamic-engraver.cc
@@ -368,19 +368,19 @@ Dynamic_engraver::acknowledge_grob (Grob_info info)
   if (!line_spanner_)
     return;
 
-  if (Note_column::has_interface (info.grob_))
+  if (Note_column::has_interface (info.grob ()))
     {
       if (line_spanner_
 	  /* Don't refill killed spanner */
 	  && line_spanner_->is_live ())
 	{
-	  Side_position_interface::add_support (line_spanner_, info.grob_);
-	  add_bound_item (line_spanner_, dynamic_cast<Item *> (info.grob_));
+	  Side_position_interface::add_support (line_spanner_, info.grob ());
+	  add_bound_item (line_spanner_, dynamic_cast<Item *> (info.grob ()));
 	}
 
       if (script_ && !script_->get_parent (X_AXIS))
 	{
-	  SCM head = scm_last_pair (info.grob_->get_property ("note-heads"));
+	  SCM head = scm_last_pair (info.grob ()->get_property ("note-heads"));
 	  if (scm_is_pair (head))
 	    script_->set_parent (unsmob_grob (scm_car (head)), X_AXIS);
 	}
@@ -389,20 +389,20 @@ Dynamic_engraver::acknowledge_grob (Grob_info info)
 	{
 	  if (!cresc_->get_bound (LEFT))
 	    {
-	      cresc_->set_bound (LEFT, info.grob_);
+	      cresc_->set_bound (LEFT, info.grob ());
 	      add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
 	    }
 	}
 
       if (finished_cresc_ && !finished_cresc_->get_bound (RIGHT))
 	{
-	  finished_cresc_->set_bound (RIGHT, info.grob_);
+	  finished_cresc_->set_bound (RIGHT, info.grob ());
 	}
     }
   
-  else if (Script_interface::has_interface (info.grob_) && script_)
+  else if (Script_interface::has_interface (info.grob ()) && script_)
     {
-      SCM p = info.grob_->get_property ("script-priority");
+      SCM p = info.grob ()->get_property ("script-priority");
 
       /*
 	UGH.
@@ -412,7 +412,7 @@ Dynamic_engraver::acknowledge_grob (Grob_info info)
       if (scm_is_number (p)
 	  && scm_to_int (p)
 	  < scm_to_int (script_->get_property ("script-priority")))
-	Side_position_interface::add_support (line_spanner_, info.grob_);
+	Side_position_interface::add_support (line_spanner_, info.grob ());
     }
 }
 
diff --git a/lily/engraver-group-engraver.cc b/lily/engraver-group-engraver.cc
index 5270d7121c..d68e0579c1 100644
--- a/lily/engraver-group-engraver.cc
+++ b/lily/engraver-group-engraver.cc
@@ -38,7 +38,7 @@ Engraver_group_engraver::acknowledge_grobs ()
     {
       Grob_info info = announce_infos_[j];
 
-      SCM meta = info.grob_->internal_get_property (meta_sym);
+      SCM meta = info.grob ()->internal_get_property (meta_sym);
       SCM nm = scm_assoc (name_sym, meta);
       if (scm_is_pair (nm))
 	nm = scm_cdr (nm);
diff --git a/lily/engraver.cc b/lily/engraver.cc
index 88985792dc..b7bc326c15 100644
--- a/lily/engraver.cc
+++ b/lily/engraver.cc
@@ -39,10 +39,7 @@ Engraver::announce_grob (Grob *e, SCM cause)
   if (unsmob_music (cause) || unsmob_grob (cause))
     e->set_property ("cause", cause);
 
-  Grob_info i;
-  i.grob_ = e;
-  if (!i.origin_trans_)
-    i.origin_trans_ = this;
+  Grob_info i (this, e);
 
   Engraver *g = get_daddy_engraver ();
   if (g)
diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc
index 6058843e87..ac03f5c67f 100644
--- a/lily/extender-engraver.cc
+++ b/lily/extender-engraver.cc
@@ -63,7 +63,7 @@ Extender_engraver::process_music ()
 void
 Extender_engraver::acknowledge_grob (Grob_info i)
 {
-  Item *item = dynamic_cast<Item *> (i.grob_);
+  Item *item = dynamic_cast<Item *> (i.grob ());
 
   if (item
       && item->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
diff --git a/lily/fingering-engraver.cc b/lily/fingering-engraver.cc
index 59570ba4a8..00e468a781 100644
--- a/lily/fingering-engraver.cc
+++ b/lily/fingering-engraver.cc
@@ -44,21 +44,21 @@ Fingering_engraver::try_music (Music *m)
 void
 Fingering_engraver::acknowledge_grob (Grob_info inf)
 {
-  if (Stem::has_interface (inf.grob_))
+  if (Stem::has_interface (inf.grob ()))
     {
       for (int i = 0; i < fingerings_.size (); i++)
 	{
-	  Side_position_interface::add_support (fingerings_[i], inf.grob_);
+	  Side_position_interface::add_support (fingerings_[i], inf.grob ());
 	}
     }
-  else if (Rhythmic_head::has_interface (inf.grob_))
+  else if (Rhythmic_head::has_interface (inf.grob ()))
     {
       for (int i = 0; i < fingerings_.size (); i++)
 	{
 	  Grob *t = fingerings_[i];
-	  Side_position_interface::add_support (t, inf.grob_);
+	  Side_position_interface::add_support (t, inf.grob ());
 	  if (!t->get_parent (X_AXIS))
-	    t->set_parent (inf.grob_, X_AXIS);
+	    t->set_parent (inf.grob (), X_AXIS);
 	}
     }
 }
diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc
index bc372a6a43..d1ac0e634b 100644
--- a/lily/font-size-engraver.cc
+++ b/lily/font-size-engraver.cc
@@ -37,8 +37,8 @@ Font_size_engraver::acknowledge_grob (Grob_info gi)
     {
       Real font_size = scm_to_double (sz);
 
-      font_size += robust_scm2double (gi.grob_->get_property ("font-size"), 0);
-      gi.grob_->set_property ("font-size", scm_make_real (font_size));
+      font_size += robust_scm2double (gi.grob ()->get_property ("font-size"), 0);
+      gi.grob ()->set_property ("font-size", scm_make_real (font_size));
     }
 }
 
diff --git a/lily/glissando-engraver.cc b/lily/glissando-engraver.cc
index 21baa4f150..c1288efaf3 100644
--- a/lily/glissando-engraver.cc
+++ b/lily/glissando-engraver.cc
@@ -61,9 +61,9 @@ Glissando_engraver::process_music ()
 void
 Glissando_engraver::acknowledge_grob (Grob_info info)
 {
-  if (Rhythmic_head::has_interface (info.grob_))
+  if (Rhythmic_head::has_interface (info.grob ()))
     {
-      Grob *g = info.grob_;
+      Grob *g = info.grob ();
       if (line_)
 	line_->set_bound (LEFT, g);
 
diff --git a/lily/gregorian-ligature-engraver.cc b/lily/gregorian-ligature-engraver.cc
index d1bd875f67..7af8430ade 100644
--- a/lily/gregorian-ligature-engraver.cc
+++ b/lily/gregorian-ligature-engraver.cc
@@ -87,7 +87,7 @@ void check_and_fix_all_prefixes (Array<Grob_info> primitives)
   /* Check for illegal head modifier combinations */
   for (int i = 0; i < primitives.size (); i++)
     {
-      Grob *primitive = primitives[i].grob_;
+      Grob *primitive = primitives[i].grob ();
 
       /* compute head prefix set by inspecting primitive grob properties */
       int prefix_set
@@ -201,7 +201,7 @@ provide_context_info (Array<Grob_info> primitives)
   int prev_pitch = 0;
   for (int i = 0; i < primitives.size (); i++)
     {
-      Grob *primitive = primitives[i].grob_;
+      Grob *primitive = primitives[i].grob ();
       Music *music_cause = primitives[i].music_cause ();
       int context_info = 0;
       int pitch = unsmob_pitch (music_cause->get_property ("pitch"))->steps ();
diff --git a/lily/grid-line-span-engraver.cc b/lily/grid-line-span-engraver.cc
index e138dca2a4..5ad0bed8a0 100644
--- a/lily/grid-line-span-engraver.cc
+++ b/lily/grid-line-span-engraver.cc
@@ -32,9 +32,9 @@ void
 Grid_line_span_engraver::acknowledge_grob (Grob_info i)
 {
   int depth = i.origin_contexts (this).size ();
-  if (depth && i.grob_->internal_has_interface (ly_symbol2scm ("grid-point-interface")))
+  if (depth && i.grob ()->internal_has_interface (ly_symbol2scm ("grid-point-interface")))
     {
-      Item *it = dynamic_cast<Item *> (i.grob_);
+      Item *it = dynamic_cast<Item *> (i.grob ());
       lines_.push (it);
 
       if (lines_.size () >= 2 && !spanline_)
diff --git a/lily/grob-pq-engraver.cc b/lily/grob-pq-engraver.cc
index 10644e7775..542880c184 100644
--- a/lily/grob-pq-engraver.cc
+++ b/lily/grob-pq-engraver.cc
@@ -49,7 +49,7 @@ Grob_pq_engraver::acknowledge_grob (Grob_info gi)
   Music *m = gi.music_cause ();
 
   if (m
-      && !gi.grob_->internal_has_interface (ly_symbol2scm ("multi-measure-interface")))
+      && !gi.grob ()->internal_has_interface (ly_symbol2scm ("multi-measure-interface")))
     {
       Moment n = now_mom ();
       Moment l = m->get_length ();
@@ -65,7 +65,7 @@ Grob_pq_engraver::acknowledge_grob (Grob_info gi)
 
       Moment end = n + l;
       SCM lst = scm_acons (end.smobbed_copy (),
-			   gi.grob_->self_scm (),
+			   gi.grob ()->self_scm (),
 			   SCM_EOL);
 
       SCM busy = get_property ("busyGrobs");
diff --git a/lily/horizontal-bracket-engraver.cc b/lily/horizontal-bracket-engraver.cc
index 74938b2fa7..2c5f39bbba 100644
--- a/lily/horizontal-bracket-engraver.cc
+++ b/lily/horizontal-bracket-engraver.cc
@@ -71,15 +71,15 @@ Horizontal_bracket_engraver::try_music (Music *m)
 void
 Horizontal_bracket_engraver::acknowledge_grob (Grob_info gi)
 {
-  if (Note_column::has_interface (gi.grob_))
+  if (Note_column::has_interface (gi.grob ()))
     {
       for (int i = 0; i < bracket_stack_.size (); i++)
 	{
-	  Side_position_interface::add_support (bracket_stack_[i], gi.grob_);
+	  Side_position_interface::add_support (bracket_stack_[i], gi.grob ());
 	  Pointer_group_interface::add_grob (bracket_stack_[i],
-					     ly_symbol2scm ("columns"), gi.grob_);
+					     ly_symbol2scm ("columns"), gi.grob ());
 	  add_bound_item (bracket_stack_[i],
-			  gi.grob_);
+			  gi.grob ());
 	}
     }
 }
diff --git a/lily/hyphen-engraver.cc b/lily/hyphen-engraver.cc
index 2f314f0006..9961258729 100644
--- a/lily/hyphen-engraver.cc
+++ b/lily/hyphen-engraver.cc
@@ -40,7 +40,7 @@ Hyphen_engraver::Hyphen_engraver ()
 void
 Hyphen_engraver::acknowledge_grob (Grob_info i)
 {
-  Item *item = dynamic_cast<Item *> (i.grob_);
+  Item *item = dynamic_cast<Item *> (i.grob ());
   // -> Text_item
   if (item && item->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
     {
diff --git a/lily/include/grob-info.hh b/lily/include/grob-info.hh
index 06b48ab89b..25b3d71774 100644
--- a/lily/include/grob-info.hh
+++ b/lily/include/grob-info.hh
@@ -20,11 +20,13 @@ class Grob_info
 {
   Translator *origin_trans_;
   friend class Engraver;
+  Grob *grob_;
 
 public:
-  Grob *grob_;
-  Context *context () const; 
+  Grob *grob () const { return grob_; }
   Translator *origin_translator () const { return origin_trans_; } 
+
+  Context *context () const; 
   Music *music_cause ();
   Link_array<Context> origin_contexts (Translator *) const;
   Grob_info (Translator *, Grob *);
diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc
index 2a20e73fce..34fcca0c22 100644
--- a/lily/instrument-name-engraver.cc
+++ b/lily/instrument-name-engraver.cc
@@ -78,7 +78,7 @@ Instrument_name_engraver::create_text ()
 void
 Instrument_name_engraver::acknowledge_grob (Grob_info i)
 {
-  if (Bar_line::has_interface (i.grob_))
+  if (Bar_line::has_interface (i.grob ()))
     {
       create_text ();
     }
@@ -86,9 +86,9 @@ Instrument_name_engraver::acknowledge_grob (Grob_info i)
   /*
     Ugh - typechecking for pedal and dynamic sucks.
   */
-  if (dynamic_cast<Spanner *> (i.grob_)
-      && (i.grob_->internal_has_interface (ly_symbol2scm ("dynamic-interface"))
-	  || i.grob_->internal_has_interface (ly_symbol2scm ("piano-pedal-interface"))))
+  if (dynamic_cast<Spanner *> (i.grob ())
+      && (i.grob ()->internal_has_interface (ly_symbol2scm ("dynamic-interface"))
+	  || i.grob ()->internal_has_interface (ly_symbol2scm ("piano-pedal-interface"))))
     return;
 
   /*
@@ -100,12 +100,12 @@ Instrument_name_engraver::acknowledge_grob (Grob_info i)
     We could also just use stavesFound, but lets keep this working
     without staffs as well.
   */
-  if (dynamic_cast<Spanner *> (i.grob_)
-      && ((Axis_group_interface::has_interface (i.grob_)
-	   && Axis_group_interface::has_axis (i.grob_, Y_AXIS)))
-      && !Align_interface::has_interface (i.grob_))
+  if (dynamic_cast<Spanner *> (i.grob ())
+      && ((Axis_group_interface::has_interface (i.grob ())
+	   && Axis_group_interface::has_axis (i.grob (), Y_AXIS)))
+      && !Align_interface::has_interface (i.grob ()))
     {
-      SCM nl = scm_cons (i.grob_->self_scm (),
+      SCM nl = scm_cons (i.grob ()->self_scm (),
 			 get_property ("instrumentSupport"));
 
       context ()->set_property ("instrumentSupport", nl);
diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc
index 8a178f02b0..e8ad6ab2b3 100644
--- a/lily/key-engraver.cc
+++ b/lily/key-engraver.cc
@@ -104,7 +104,7 @@ Key_engraver::try_music (Music *ev)
 void
 Key_engraver::acknowledge_grob (Grob_info info)
 {
-  if (Clef::has_interface (info.grob_))
+  if (Clef::has_interface (info.grob ()))
     {
       SCM c = get_property ("createKeyOnClefChange");
       if (to_boolean (c))
@@ -112,7 +112,7 @@ Key_engraver::acknowledge_grob (Grob_info info)
 	  create_key (false);
 	}
     }
-  else if (Bar_line::has_interface (info.grob_)
+  else if (Bar_line::has_interface (info.grob ())
 	   && scm_is_pair (get_property ("keySignature")))
     {
       create_key (true);
diff --git a/lily/ledger-line-engraver.cc b/lily/ledger-line-engraver.cc
index c2a8335e6f..c4ebc455d5 100644
--- a/lily/ledger-line-engraver.cc
+++ b/lily/ledger-line-engraver.cc
@@ -52,9 +52,9 @@ Ledger_line_engraver::finalize ()
 void
 Ledger_line_engraver::acknowledge_grob (Grob_info s)
 {
-  if (!to_boolean (s.grob_->get_property ("no-ledgers")))
+  if (!to_boolean (s.grob ()->get_property ("no-ledgers")))
     Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-heads"),
-				       s.grob_);
+				       s.grob ());
 }
 ADD_TRANSLATOR (Ledger_line_engraver,
 		"Creates the spanner to draw ledger lines, and notices objects that need ledger lines",
diff --git a/lily/ligature-bracket-engraver.cc b/lily/ligature-bracket-engraver.cc
index eec8ff0cfa..9eddeb71da 100644
--- a/lily/ligature-bracket-engraver.cc
+++ b/lily/ligature-bracket-engraver.cc
@@ -41,10 +41,10 @@ Ligature_bracket_engraver::acknowledge_grob (Grob_info info)
 {
   if (current_ligature ())
     {
-      if (Note_column::has_interface (info.grob_))
+      if (Note_column::has_interface (info.grob ()))
 	{
 	  Tuplet_bracket::add_column (current_ligature (),
-				      dynamic_cast<Item *> (info.grob_));
+				      dynamic_cast<Item *> (info.grob ()));
 	}
       else Ligature_engraver::acknowledge_grob (info);
     }
diff --git a/lily/ligature-engraver.cc b/lily/ligature-engraver.cc
index 609978af4a..70f490e3b4 100644
--- a/lily/ligature-engraver.cc
+++ b/lily/ligature-engraver.cc
@@ -269,13 +269,13 @@ Ligature_engraver::acknowledge_grob (Grob_info info)
 {
   if (ligature_)
     {
-      if (Note_head::has_interface (info.grob_))
+      if (Note_head::has_interface (info.grob ()))
 	{
 	  primitives_.push (info);
-	  info.grob_->set_property ("print-function",
+	  info.grob ()->set_property ("print-function",
 				    brew_ligature_primitive_proc);
 	}
-      if (Rest::has_interface (info.grob_))
+      if (Rest::has_interface (info.grob ()))
 	{
 	  info.music_cause ()->origin ()->warning (_ ("ignoring rest: ligature may not contain rest"));
 	  prev_start_req_->origin ()->warning (_ ("ligature was started here"));
diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc
index 4e843841f9..03748d10b5 100644
--- a/lily/mark-engraver.cc
+++ b/lily/mark-engraver.cc
@@ -45,7 +45,7 @@ Mark_engraver::Mark_engraver ()
 void
 Mark_engraver::acknowledge_grob (Grob_info inf)
 {
-  Grob *s = inf.grob_;
+  Grob *s = inf.grob ();
   if (text_ && Bar_line::has_interface (s))
     {
       /*
diff --git a/lily/measure-grouping-engraver.cc b/lily/measure-grouping-engraver.cc
index 9ae9fb8183..f44a8b3b5b 100644
--- a/lily/measure-grouping-engraver.cc
+++ b/lily/measure-grouping-engraver.cc
@@ -41,7 +41,7 @@ Measure_grouping_engraver::acknowledge_grob (Grob_info gi)
 {
   if (grouping_)
     {
-      Side_position_interface::add_support (grouping_, gi.grob_);
+      Side_position_interface::add_support (grouping_, gi.grob ());
     }
 }
 
diff --git a/lily/mensural-ligature-engraver.cc b/lily/mensural-ligature-engraver.cc
index 12840db59e..59c65531fe 100644
--- a/lily/mensural-ligature-engraver.cc
+++ b/lily/mensural-ligature-engraver.cc
@@ -87,7 +87,7 @@ Mensural_ligature_engraver::transform_heads (Array<Grob_info> primitives)
   for (int i = 0, s = primitives.size (); i < s; i++)
     {
       Grob_info info = primitives[i];
-      Item *primitive = dynamic_cast<Item *> (info.grob_);
+      Item *primitive = dynamic_cast<Item *> (info.grob ());
       int duration_log = Note_head::get_balltype (primitive);
 
       Music *nr = info.music_cause ();
@@ -315,7 +315,7 @@ Mensural_ligature_engraver::propagate_properties (Spanner *ligature,
 
   for (int i = 0; i < primitives.size (); i++)
     {
-      Item *primitive = dynamic_cast<Item *> (primitives[i].grob_);
+      Item *primitive = dynamic_cast<Item *> (primitives[i].grob ());
       int output = scm_to_int (primitive->get_property ("primitive"));
       primitive->set_property ("thickness",
 			       scm_make_real (thickness));
@@ -355,7 +355,7 @@ Mensural_ligature_engraver::fold_up_primitives (Array<Grob_info> primitives)
   Real distance = 0;
   for (int i = 0; i < primitives.size (); i++)
     {
-      Item *current = dynamic_cast<Item *> (primitives[i].grob_);
+      Item *current = dynamic_cast<Item *> (primitives[i].grob ());
       if (i == 0)
 	{
 	  first = current;
diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc
index 728d5643a4..7ae551bd82 100644
--- a/lily/new-fingering-engraver.cc
+++ b/lily/new-fingering-engraver.cc
@@ -60,7 +60,7 @@ protected:
 void
 New_fingering_engraver::acknowledge_grob (Grob_info inf)
 {
-  if (Rhythmic_head::has_interface (inf.grob_))
+  if (Rhythmic_head::has_interface (inf.grob ()))
     {
       Music *note_ev = inf.music_cause ();
       if (!note_ev)
@@ -77,7 +77,7 @@ New_fingering_engraver::acknowledge_grob (Grob_info inf)
 
 	  if (m->is_mus_type ("fingering-event"))
 	    {
-	      add_fingering (inf.grob_, m, note_ev);
+	      add_fingering (inf.grob (), m, note_ev);
 	    }
 	  else if (m->is_mus_type ("text-script-event"))
 	    {
@@ -85,26 +85,26 @@ New_fingering_engraver::acknowledge_grob (Grob_info inf)
 	    }
 	  else if (m->is_mus_type ("script-event"))
 	    {
-	      add_script (inf.grob_, m, note_ev);
+	      add_script (inf.grob (), m, note_ev);
 	    }
 	  else if (m->is_mus_type ("string-number-event"))
 	    {
-	      add_string (inf.grob_, m, note_ev);
+	      add_string (inf.grob (), m, note_ev);
 	    }
 	  else if (m->is_mus_type ("harmonic-event"))
 	    {
-	      inf.grob_->set_property ("style", ly_symbol2scm ("harmonic"));
-	      Grob *d = unsmob_grob (inf.grob_->get_property ("dot"));
+	      inf.grob ()->set_property ("style", ly_symbol2scm ("harmonic"));
+	      Grob *d = unsmob_grob (inf.grob ()->get_property ("dot"));
 	      if (d)
 		d->suicide ();
 	    }
 	}
 
-      heads_.push (inf.grob_);
+      heads_.push (inf.grob ());
     }
-  else if (Stem::has_interface (inf.grob_))
+  else if (Stem::has_interface (inf.grob ()))
     {
-      stem_ = inf.grob_;
+      stem_ = inf.grob ();
     }
 }
 
diff --git a/lily/note-head-line-engraver.cc b/lily/note-head-line-engraver.cc
index 12fd61e212..36af9534d2 100644
--- a/lily/note-head-line-engraver.cc
+++ b/lily/note-head-line-engraver.cc
@@ -50,9 +50,9 @@ Note_head_line_engraver::Note_head_line_engraver ()
 void
 Note_head_line_engraver::acknowledge_grob (Grob_info info)
 {
-  if (Rhythmic_head::has_interface (info.grob_))
+  if (Rhythmic_head::has_interface (info.grob ()))
     {
-      head_ = info.grob_;
+      head_ = info.grob ();
       if (to_boolean (get_property ("followVoice")))
 	{
 	  Context *tr = context ();
diff --git a/lily/ottava-engraver.cc b/lily/ottava-engraver.cc
index 1975eb0ca7..f4da2e4153 100644
--- a/lily/ottava-engraver.cc
+++ b/lily/ottava-engraver.cc
@@ -68,8 +68,8 @@ Ottava_spanner_engraver::process_music ()
 void
 Ottava_spanner_engraver::acknowledge_grob (Grob_info info)
 {
-  Item *it = dynamic_cast<Item *> (info.grob_);
-  if (span_ && it && Note_column::has_interface (info.grob_))
+  Item *it = dynamic_cast<Item *> (info.grob ());
+  if (span_ && it && Note_column::has_interface (info.grob ()))
     {
       Side_position_interface::add_support (span_, it);
 
diff --git a/lily/output-property-engraver.cc b/lily/output-property-engraver.cc
index dc7207a3ed..c80cc9c051 100644
--- a/lily/output-property-engraver.cc
+++ b/lily/output-property-engraver.cc
@@ -49,12 +49,12 @@ Output_property_engraver::acknowledge_grob (Grob_info inf)
 	  /*
 	    should typecheck pred. 
 	  */
-	  SCM result = scm_call_1 (pred, inf.grob_->self_scm ());
+	  SCM result = scm_call_1 (pred, inf.grob ()->self_scm ());
 	  if (to_boolean (result))
 	    {
 	      SCM sym = o->get_property ("grob-property");
 	      SCM val = o->get_property ("grob-value");
-	      inf.grob_->internal_set_property (sym, val);
+	      inf.grob ()->internal_set_property (sym, val);
 	    }
 	}
       else
@@ -62,7 +62,7 @@ Output_property_engraver::acknowledge_grob (Grob_info inf)
 	  Context * d = inf.context ();
 	  SCM proc = o->get_property ("procedure");
 	  scm_call_3 (proc,
-		      inf.grob_->self_scm (),
+		      inf.grob ()->self_scm (),
 		      d->self_scm (), 
 		      context ()->self_scm ());
 	}
diff --git a/lily/part-combine-engraver.cc b/lily/part-combine-engraver.cc
index 9e10ff3e12..9bd1a12085 100644
--- a/lily/part-combine-engraver.cc
+++ b/lily/part-combine-engraver.cc
@@ -70,17 +70,17 @@ Part_combine_engraver::acknowledge_grob (Grob_info i)
 {
   if (text_)
     {
-      if (Note_head::has_interface (i.grob_))
+      if (Note_head::has_interface (i.grob ()))
 	{
 	  Grob *t = text_;
-	  Side_position_interface::add_support (t, i.grob_);
+	  Side_position_interface::add_support (t, i.grob ());
 	  if (Side_position_interface::get_axis (t) == X_AXIS
 	      && !t->get_parent (Y_AXIS))
-	    t->set_parent (i.grob_, Y_AXIS);
+	    t->set_parent (i.grob (), Y_AXIS);
 	}
-      if (Stem::has_interface (i.grob_))
+      if (Stem::has_interface (i.grob ()))
 	{
-	  Side_position_interface::add_support (text_, i.grob_);
+	  Side_position_interface::add_support (text_, i.grob ());
 	}
     }
 }
diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc
index 318e8da6db..5af17ec462 100644
--- a/lily/phrasing-slur-engraver.cc
+++ b/lily/phrasing-slur-engraver.cc
@@ -70,8 +70,8 @@ Phrasing_slur_engraver::try_music (Music *m)
 void
 Phrasing_slur_engraver::acknowledge_grob (Grob_info info)
 {
-  Grob *e = info.grob_;
-  if (Note_column::has_interface (info.grob_))
+  Grob *e = info.grob ();
+  if (Note_column::has_interface (info.grob ()))
     {
       for (int i = slurs_.size (); i--;)
 	Slur::add_column (slurs_[i], e);
diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc
index eb46d8e433..835d6b1f59 100644
--- a/lily/piano-pedal-engraver.cc
+++ b/lily/piano-pedal-engraver.cc
@@ -131,17 +131,17 @@ Piano_pedal_engraver::acknowledge_grob (Grob_info info)
 {
   for (Pedal_info *p = info_list_; p && p->name_; p++)
     {
-      if (Note_column::has_interface (info.grob_))
+      if (Note_column::has_interface (info.grob ()))
 	{
 	  if (p->line_spanner_)
 	    {
-	      Side_position_interface::add_support (p->line_spanner_, info.grob_);
-	      add_bound_item (p->line_spanner_, info.grob_);
+	      Side_position_interface::add_support (p->line_spanner_, info.grob ());
+	      add_bound_item (p->line_spanner_, info.grob ());
 	    }
 	  if (p->bracket_)
-	    add_bound_item (p->bracket_, info.grob_);
+	    add_bound_item (p->bracket_, info.grob ());
 	  if (p->finished_bracket_)
-	    add_bound_item (p->finished_bracket_, info.grob_);
+	    add_bound_item (p->finished_bracket_, info.grob ());
 	}
     }
 }
diff --git a/lily/pitch-squash-engraver.cc b/lily/pitch-squash-engraver.cc
index 0ccf797d46..870a5a9315 100644
--- a/lily/pitch-squash-engraver.cc
+++ b/lily/pitch-squash-engraver.cc
@@ -22,9 +22,9 @@ Pitch_squash_engraver::acknowledge_grob (Grob_info i)
 {
   SCM newpos = get_property ("squashedPosition");
   if (scm_is_number (newpos)
-      && Note_head::has_interface (i.grob_))
+      && Note_head::has_interface (i.grob ()))
     {
-      i.grob_->set_property ("staff-position", newpos);
+      i.grob ()->set_property ("staff-position", newpos);
     }
 }
 
diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc
index 0a1af49d7a..2d718092f0 100644
--- a/lily/rest-collision-engraver.cc
+++ b/lily/rest-collision-engraver.cc
@@ -49,10 +49,10 @@ Rest_collision_engraver::process_acknowledged_grobs ()
 void
 Rest_collision_engraver::acknowledge_grob (Grob_info i)
 {
-  if (Note_column::has_interface (i.grob_))
+  if (Note_column::has_interface (i.grob ()))
     {
-      note_columns_.push (i.grob_);
-      if (Note_column::has_rests (i.grob_))
+      note_columns_.push (i.grob ());
+      if (Note_column::has_rests (i.grob ()))
 	rest_count_++;
     }
 }
diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc
index f726dc88ab..af4f263aa1 100644
--- a/lily/rhythmic-column-engraver.cc
+++ b/lily/rhythmic-column-engraver.cc
@@ -113,7 +113,7 @@ Rhythmic_column_engraver::process_acknowledged_grobs ()
 void
 Rhythmic_column_engraver::acknowledge_grob (Grob_info i)
 {
-  Item *item = dynamic_cast<Item *> (i.grob_);
+  Item *item = dynamic_cast<Item *> (i.grob ());
   if (!item || item->get_parent (X_AXIS))
     return;
   if (Stem::has_interface (item))
diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc
index 0f01110780..08be7890d5 100644
--- a/lily/score-engraver.cc
+++ b/lily/score-engraver.cc
@@ -149,8 +149,8 @@ void
 Score_engraver::announce_grob (Grob_info info)
 {
   announce_infos_.push (info);
-  pscore_->root_system ()->typeset_grob (info.grob_);
-  elems_.push (info.grob_);
+  pscore_->root_system ()->typeset_grob (info.grob ());
+  elems_.push (info.grob ());
 }
 
 void
@@ -268,21 +268,21 @@ Score_engraver::forbid_breaks ()
 void
 Score_engraver::acknowledge_grob (Grob_info gi)
 {
-  if (Staff_spacing::has_interface (gi.grob_))
+  if (Staff_spacing::has_interface (gi.grob ()))
     {
       Pointer_group_interface::add_grob (command_column_,
 					 ly_symbol2scm ("spacing-wishes"),
-					 gi.grob_);
+					 gi.grob ());
     }
-  if (Note_spacing::has_interface (gi.grob_))
+  if (Note_spacing::has_interface (gi.grob ()))
     {
       Pointer_group_interface::add_grob (musical_column_,
 					 ly_symbol2scm ("spacing-wishes"),
-					 gi.grob_);
+					 gi.grob ());
     }
 
-  if (Axis_group_interface::has_interface (gi.grob_)
-      && gi.grob_->internal_has_interface (ly_symbol2scm ("vertically-spaceable-interface")))
+  if (Axis_group_interface::has_interface (gi.grob ())
+      && gi.grob ()->internal_has_interface (ly_symbol2scm ("vertically-spaceable-interface")))
     {
       SCM spaceable = get_property ("verticallySpacedContexts");
       Context *orig = gi.origin_contexts (this)[0];
@@ -292,7 +292,7 @@ Score_engraver::acknowledge_grob (Grob_info gi)
 	{
 	  Pointer_group_interface::add_grob (system_,
 					     ly_symbol2scm ("spaceable-staves"),
-					     gi.grob_);
+					     gi.grob ());
 	}
     }
 }
diff --git a/lily/script-column-engraver.cc b/lily/script-column-engraver.cc
index 7e027aacfc..a7ae23ec4a 100644
--- a/lily/script-column-engraver.cc
+++ b/lily/script-column-engraver.cc
@@ -41,11 +41,11 @@ Script_column_engraver::stop_translation_timestep ()
 void
 Script_column_engraver::acknowledge_grob (Grob_info inf)
 {
-  Item *thing = dynamic_cast<Item *> (inf.grob_);
-  if (thing && Side_position_interface::has_interface (inf.grob_)) // ugh FIXME
+  Item *thing = dynamic_cast<Item *> (inf.grob ());
+  if (thing && Side_position_interface::has_interface (inf.grob ())) // ugh FIXME
     {
       if (!Item::is_breakable (thing)
-	  && Side_position_interface::get_axis (inf.grob_) == Y_AXIS)
+	  && Side_position_interface::get_axis (inf.grob ()) == Y_AXIS)
 	{
 	  scripts_.push (thing);
 	}
diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc
index afeb0fe621..bc001d68a7 100644
--- a/lily/script-engraver.cc
+++ b/lily/script-engraver.cc
@@ -170,21 +170,21 @@ void
 Script_engraver::acknowledge_grob (Grob_info info)
 {
   int script_count = scripts_.size ();
-  if (Stem::has_interface (info.grob_))
+  if (Stem::has_interface (info.grob ()))
     {
       for (int i = 0; i < script_count; i++)
 	{
 	  Grob *e = scripts_[i].script_;
 
 	  if (to_dir (e->get_property ("side-relative-direction")))
-	    e->set_property ("direction-source", info.grob_->self_scm ());
+	    e->set_property ("direction-source", info.grob ()->self_scm ());
 
 	  /* FIXME: add dependency */
-	  e->add_dependency (info.grob_);
-	  Side_position_interface::add_support (e, info.grob_);
+	  e->add_dependency (info.grob ());
+	  Side_position_interface::add_support (e, info.grob ());
 	}
     }
-  else if (Rhythmic_head::has_interface (info.grob_)
+  else if (Rhythmic_head::has_interface (info.grob ())
 	   && info.music_cause ())
     {
       for (int i = 0; i < script_count; i++)
@@ -194,13 +194,13 @@ Script_engraver::acknowledge_grob (Grob_info info)
 	  if (Side_position_interface::get_axis (e) == X_AXIS
 	      && !e->get_parent (Y_AXIS))
 	    {
-	      e->set_parent (info.grob_, Y_AXIS);
-	      e->add_dependency (info.grob_);
+	      e->set_parent (info.grob (), Y_AXIS);
+	      e->add_dependency (info.grob ());
 	    }
-	  Side_position_interface::add_support (e, info.grob_);
+	  Side_position_interface::add_support (e, info.grob ());
 	}
     }
-  else if (Note_column::has_interface (info.grob_))
+  else if (Note_column::has_interface (info.grob ()))
     {
       /* Make note column the parent of the script.  That is not
 	 correct, but due to seconds in a chord, noteheads may be
@@ -214,11 +214,11 @@ Script_engraver::acknowledge_grob (Grob_info info)
 
 	  if (!e->get_parent (X_AXIS)
 	      && Side_position_interface::get_axis (e) == Y_AXIS)
-	    e->set_parent (info.grob_, X_AXIS);
+	    e->set_parent (info.grob (), X_AXIS);
 	}
     }
-  else if (Slur::has_interface (info.grob_))
-    slur_ = dynamic_cast<Spanner *> (info.grob_);
+  else if (Slur::has_interface (info.grob ()))
+    slur_ = dynamic_cast<Spanner *> (info.grob ());
 }
 
 void
diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc
index 3d28bb3c4f..50648340d2 100644
--- a/lily/separating-line-group-engraver.cc
+++ b/lily/separating-line-group-engraver.cc
@@ -105,7 +105,7 @@ Separating_line_group_engraver::finalize ()
 void
 Separating_line_group_engraver::acknowledge_grob (Grob_info i)
 {
-  Item *it = dynamic_cast<Item *> (i.grob_);
+  Item *it = dynamic_cast<Item *> (i.grob ());
   if (!it)
     return;
   if (it->get_parent (X_AXIS)
diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc
index d0629b9700..2cdf5289c6 100644
--- a/lily/slur-engraver.cc
+++ b/lily/slur-engraver.cc
@@ -72,8 +72,8 @@ Slur_engraver::set_melisma (bool m)
 void
 Slur_engraver::acknowledge_grob (Grob_info info)
 {
-  Grob *e = info.grob_;
-  if (Note_column::has_interface (info.grob_))
+  Grob *e = info.grob ();
+  if (Note_column::has_interface (info.grob ()))
     {
       for (int i = slurs_.size (); i--;)
 	Slur::add_column (slurs_[i], e);
diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc
index 2c7f59360e..4aeebc586a 100644
--- a/lily/spacing-engraver.cc
+++ b/lily/spacing-engraver.cc
@@ -96,13 +96,13 @@ Spacing_engraver::finalize ()
 void
 Spacing_engraver::acknowledge_grob (Grob_info i)
 {
-  if (Note_spacing::has_interface (i.grob_) || Staff_spacing::has_interface (i.grob_))
+  if (Note_spacing::has_interface (i.grob ()) || Staff_spacing::has_interface (i.grob ()))
     {
-      Pointer_group_interface::add_grob (spacing_, ly_symbol2scm ("wishes"), i.grob_);
+      Pointer_group_interface::add_grob (spacing_, ly_symbol2scm ("wishes"), i.grob ());
     }
 
-  if (i.grob_->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface"))
-      || i.grob_->internal_has_interface (ly_symbol2scm ("multi-measure-event")))
+  if (i.grob ()->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface"))
+      || i.grob ()->internal_has_interface (ly_symbol2scm ("multi-measure-event")))
     return;
 
   /*
diff --git a/lily/span-arpeggio-engraver.cc b/lily/span-arpeggio-engraver.cc
index 79dbbd0dc2..8495a2f5fe 100644
--- a/lily/span-arpeggio-engraver.cc
+++ b/lily/span-arpeggio-engraver.cc
@@ -41,10 +41,10 @@ Span_arpeggio_engraver::Span_arpeggio_engraver ()
 void
 Span_arpeggio_engraver::acknowledge_grob (Grob_info info)
 {
-  if (Arpeggio::has_interface (info.grob_)
+  if (Arpeggio::has_interface (info.grob ())
       && info.origin_contexts (this).size ()) // huh? what's this test for? 
     {
-      arpeggios_.push (info.grob_);
+      arpeggios_.push (info.grob ());
     }
 }
 
diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc
index db6baa0ffa..a3d1fc4887 100644
--- a/lily/span-bar-engraver.cc
+++ b/lily/span-bar-engraver.cc
@@ -40,9 +40,9 @@ void
 Span_bar_engraver::acknowledge_grob (Grob_info i)
 {
   int depth = i.origin_contexts (this).size ();
-  if (depth && Bar_line::has_interface (i.grob_))
+  if (depth && Bar_line::has_interface (i.grob ()))
     {
-      Item *it = dynamic_cast<Item *> (i.grob_);
+      Item *it = dynamic_cast<Item *> (i.grob ());
       bars_.push (it);
 
       if (bars_.size () >= 2 && !spanbar_)
diff --git a/lily/staff-collecting-engraver.cc b/lily/staff-collecting-engraver.cc
index 095bfe1115..f9b97e4c67 100644
--- a/lily/staff-collecting-engraver.cc
+++ b/lily/staff-collecting-engraver.cc
@@ -25,10 +25,10 @@ Staff_collecting_engraver::Staff_collecting_engraver ()
 void
 Staff_collecting_engraver::acknowledge_grob (Grob_info gi)
 {
-  if (Staff_symbol::has_interface (gi.grob_))
+  if (Staff_symbol::has_interface (gi.grob ()))
     {
       SCM staffs = get_property ("stavesFound");
-      staffs = scm_cons (gi.grob_->self_scm (), staffs);
+      staffs = scm_cons (gi.grob ()->self_scm (), staffs);
 
       context ()->set_property ("stavesFound", staffs);
     }
diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc
index 73c63f1dd7..61d3955384 100644
--- a/lily/staff-symbol-engraver.cc
+++ b/lily/staff-symbol-engraver.cc
@@ -108,7 +108,7 @@ Staff_symbol_engraver::acknowledge_grob (Grob_info s)
     symbol?
    */
   if (span_)
-    s.grob_->set_property ("staff-symbol", span_->self_scm ());
+    s.grob ()->set_property ("staff-symbol", span_->self_scm ());
 }
 
 ADD_TRANSLATOR (Staff_symbol_engraver,
diff --git a/lily/stanza-number-align-engraver.cc b/lily/stanza-number-align-engraver.cc
index 16d2e073d2..52b18cbe11 100644
--- a/lily/stanza-number-align-engraver.cc
+++ b/lily/stanza-number-align-engraver.cc
@@ -33,7 +33,7 @@ Stanza_number_align_engraver::Stanza_number_align_engraver ()
 void
 Stanza_number_align_engraver::acknowledge_grob (Grob_info gi)
 {
-  Grob *h = gi.grob_;
+  Grob *h = gi.grob ();
 
   if (h->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
     lyrics_.push (h);
diff --git a/lily/stanza-number-engraver.cc b/lily/stanza-number-engraver.cc
index 2f77b5d4f7..d74f0d8bcb 100644
--- a/lily/stanza-number-engraver.cc
+++ b/lily/stanza-number-engraver.cc
@@ -55,9 +55,9 @@ void
 Stanza_number_engraver::acknowledge_grob (Grob_info inf)
 {
   if (text_
-      && inf.grob_->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
+      && inf.grob ()->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
     {
-      Side_position_interface::add_support (text_, inf.grob_);
+      Side_position_interface::add_support (text_, inf.grob ());
     }
 }
 
diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc
index d665a96d06..a8a7f66815 100644
--- a/lily/stem-engraver.cc
+++ b/lily/stem-engraver.cc
@@ -106,9 +106,9 @@ Stem_engraver::make_stem (Grob_info gi)
 void
 Stem_engraver::acknowledge_grob (Grob_info gi)
 {
-  if (Rhythmic_head::has_interface (gi.grob_))
+  if (Rhythmic_head::has_interface (gi.grob ()))
     {
-      if (Rhythmic_head::get_stem (gi.grob_))
+      if (Rhythmic_head::get_stem (gi.grob ()))
 	return;
 
       Music *cause = gi.music_cause ();
@@ -126,7 +126,7 @@ Stem_engraver::acknowledge_grob (Grob_info gi)
 	  gi.music_cause ()->origin ()->warning (_f ("maybe input should specify polyphonic voices"));
 	}
 
-      Stem::add_head (stem_, gi.grob_);
+      Stem::add_head (stem_, gi.grob ());
     }
 }
 
diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc
index a5f3624d28..55ef8fd32c 100644
--- a/lily/system-start-delimiter-engraver.cc
+++ b/lily/system-start-delimiter-engraver.cc
@@ -29,17 +29,17 @@ protected:
 void
 System_start_delimiter_engraver::acknowledge_grob (Grob_info inf)
 {
-  if (Staff_symbol::has_interface (inf.grob_))
+  if (Staff_symbol::has_interface (inf.grob ()))
     {
       /*
 	don't add as Axis_group_interface::add_element (delim_, ),
 	because that would set the parent as well */
 
-      Pointer_group_interface::add_grob (delim_, ly_symbol2scm ("elements"), inf.grob_);
+      Pointer_group_interface::add_grob (delim_, ly_symbol2scm ("elements"), inf.grob ());
     }
-  else if (System_start_delimiter::has_interface (inf.grob_))
+  else if (System_start_delimiter::has_interface (inf.grob ()))
     {
-      SCM gl = inf.grob_->get_property ("glyph");
+      SCM gl = inf.grob ()->get_property ("glyph");
       SCM my_gl = delim_->get_property ("glyph");
 
       /*
@@ -47,13 +47,13 @@ System_start_delimiter_engraver::acknowledge_grob (Grob_info inf)
       */
       if (scm_is_string (gl) && ly_c_equal_p (gl, scm_makfrom0str ("brace"))
 	  && scm_is_string (my_gl) && ly_c_equal_p (my_gl, scm_makfrom0str ("bracket")))
-	inf.grob_->translate_axis (-0.8, X_AXIS); // ugh
+	inf.grob ()->translate_axis (-0.8, X_AXIS); // ugh
       else if (scm_is_string (gl) && ly_c_equal_p (gl, scm_makfrom0str ("bracket"))
 	       && scm_is_string (my_gl) && ly_c_equal_p (my_gl, scm_makfrom0str ("bracket")))
 	{
-	  inf.grob_->translate_axis (-0.8, X_AXIS); // ugh
-	  inf.grob_->set_property ("arch-height",
-				   scm_make_real (scm_to_double (inf.grob_->get_property
+	  inf.grob ()->translate_axis (-0.8, X_AXIS); // ugh
+	  inf.grob ()->set_property ("arch-height",
+				   scm_make_real (scm_to_double (inf.grob ()->get_property
 								 ("arch-height")) + 0.5));
 	}
     }
diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc
index 9569f3d24b..f1d83168f1 100644
--- a/lily/text-engraver.cc
+++ b/lily/text-engraver.cc
@@ -43,30 +43,30 @@ Text_engraver::try_music (Music *m)
 void
 Text_engraver::acknowledge_grob (Grob_info inf)
 {
-  if (Rhythmic_head::has_interface (inf.grob_))
+  if (Rhythmic_head::has_interface (inf.grob ()))
     {
       for (int i = 0; i < texts_.size (); i++)
 	{
 	  Grob *t = texts_[i];
-	  Side_position_interface::add_support (t, inf.grob_);
+	  Side_position_interface::add_support (t, inf.grob ());
 
 	  /*
 	    ugh.
 	  */
 	  if (Side_position_interface::get_axis (t) == X_AXIS
 	      && !t->get_parent (Y_AXIS))
-	    t->set_parent (inf.grob_, Y_AXIS);
+	    t->set_parent (inf.grob (), Y_AXIS);
 	  else if (Side_position_interface::get_axis (t) == Y_AXIS
 		   && !t->get_parent (X_AXIS))
-	    t->set_parent (inf.grob_, X_AXIS);
+	    t->set_parent (inf.grob (), X_AXIS);
 	}
     }
 
-  if (Stem::has_interface (inf.grob_))
+  if (Stem::has_interface (inf.grob ()))
     {
       for (int i = 0; i < texts_.size (); i++)
 	{
-	  Side_position_interface::add_support (texts_[i], inf.grob_);
+	  Side_position_interface::add_support (texts_[i], inf.grob ());
 	}
     }
 }
diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc
index 0001365823..5c177c5a96 100644
--- a/lily/text-spanner-engraver.cc
+++ b/lily/text-spanner-engraver.cc
@@ -91,10 +91,10 @@ Text_spanner_engraver::acknowledge_grob (Grob_info info)
   Spanner *spans[2] ={span_, finished_};
   for (int i = 0; i < 2; i++)
     {
-      if (spans[i] && Note_column::has_interface (info.grob_))
+      if (spans[i] && Note_column::has_interface (info.grob ()))
 	{
-	  Side_position_interface::add_support (spans[i], info.grob_);
-	  add_bound_item (spans[i], dynamic_cast<Item *> (info.grob_));
+	  Side_position_interface::add_support (spans[i], info.grob ());
+	  add_bound_item (spans[i], dynamic_cast<Item *> (info.grob ()));
 	}
     }
 }
diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc
index 4cb3ec1df5..2e9ce6c196 100644
--- a/lily/tie-engraver.cc
+++ b/lily/tie-engraver.cc
@@ -101,9 +101,9 @@ Tie_engraver::process_music ()
 void
 Tie_engraver::acknowledge_grob (Grob_info i)
 {
-  if (Note_head::has_interface (i.grob_))
+  if (Note_head::has_interface (i.grob ()))
     {
-      Grob *h = i.grob_;
+      Grob *h = i.grob ();
       now_heads_.push (h);
       for (int i = heads_to_tie_.size (); i--;)
 	{
diff --git a/lily/trill-spanner-engraver.cc b/lily/trill-spanner-engraver.cc
index fd93042b28..ddb283ea48 100644
--- a/lily/trill-spanner-engraver.cc
+++ b/lily/trill-spanner-engraver.cc
@@ -97,10 +97,10 @@ Trill_spanner_engraver::acknowledge_grob (Grob_info info)
   Spanner *spans[2] ={span_, finished_};
   for (int i = 0; i < 2; i++)
     {
-      if (spans[i] && Note_column::has_interface (info.grob_))
+      if (spans[i] && Note_column::has_interface (info.grob ()))
 	{
-	  Side_position_interface::add_support (spans[i], info.grob_);
-	  add_bound_item (spans[i], dynamic_cast<Item *> (info.grob_));
+	  Side_position_interface::add_support (spans[i], info.grob ());
+	  add_bound_item (spans[i], dynamic_cast<Item *> (info.grob ()));
 	}
     }
 }
diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc
index c2ca198984..bf82dc0931 100644
--- a/lily/tuplet-engraver.cc
+++ b/lily/tuplet-engraver.cc
@@ -87,12 +87,12 @@ Tuplet_engraver::process_music ()
 void
 Tuplet_engraver::acknowledge_grob (Grob_info i)
 {
-  if (Note_column::has_interface (i.grob_))
+  if (Note_column::has_interface (i.grob ()))
     {
       for (int j = 0; j < tuplets_.size (); j++)
 	if (tuplets_[j].spanner_)
 	  Tuplet_bracket::add_column (tuplets_[j].spanner_,
-				      dynamic_cast<Item *> (i.grob_));
+				      dynamic_cast<Item *> (i.grob ()));
     }
 }
 
diff --git a/lily/vaticana-ligature-engraver.cc b/lily/vaticana-ligature-engraver.cc
index aef60cb2da..e6b0f002b8 100644
--- a/lily/vaticana-ligature-engraver.cc
+++ b/lily/vaticana-ligature-engraver.cc
@@ -154,7 +154,7 @@ Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
    * The paper column where we put the whole ligature into.
    */
   Paper_column *column
-    = dynamic_cast<Item *> (primitives[0].grob_)->get_column ();
+    = dynamic_cast<Item *> (primitives[0].grob ())->get_column ();
 
   Real join_thickness
     = thickness * column->get_layout ()->get_dimension (ly_symbol2scm ("linethickness"));
@@ -176,7 +176,7 @@ Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
   int prev_prefix_set = 0;
   for (int i = 0; i < primitives.size (); i++)
     {
-      Item *primitive = dynamic_cast<Item *> (primitives[i].grob_);
+      Item *primitive = dynamic_cast<Item *> (primitives[i].grob ());
       int prefix_set
 	= scm_to_int (primitive->get_property ("prefix-set"));
       int context_info
@@ -362,7 +362,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
   String prev_glyph_name = "";
   for (int i = 0; i < primitives.size (); i++)
     {
-      Item *primitive = dynamic_cast<Item *> (primitives[i].grob_);
+      Item *primitive = dynamic_cast<Item *> (primitives[i].grob ());
 
       int delta_pitch;
       SCM delta_pitch_scm = primitive->get_property ("delta-pitch");
@@ -584,7 +584,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
 #if 0 // experimental code to collapse spacing after ligature
   /* TODO: set to max (old/new spacing-increment), since other
      voices/staves also may want to set this property. */
-  Item *first_primitive = dynamic_cast<Item *> (primitives[0].grob_);
+  Item *first_primitive = dynamic_cast<Item *> (primitives[0].grob ());
   Paper_column *paper_column = first_primitive->get_column ();
   paper_column->warning (_f ("Vaticana_ligature_engraver: "
 			     "setting `spacing-increment = %f': ptr =%ul",
diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc
index 3e1838ae1f..7b0b9900f6 100644
--- a/lily/vertical-align-engraver.cc
+++ b/lily/vertical-align-engraver.cc
@@ -86,8 +86,8 @@ Vertical_align_engraver::qualifies (Grob_info i) const
 {
   int sz = i.origin_contexts ((Translator *)this).size ();
 
-  return sz > 0 && Axis_group_interface::has_interface (i.grob_)
-    && !i.grob_->get_parent (Y_AXIS) && Axis_group_interface::has_axis (i.grob_, Y_AXIS);
+  return sz > 0 && Axis_group_interface::has_interface (i.grob ())
+    && !i.grob ()->get_parent (Y_AXIS) && Axis_group_interface::has_axis (i.grob (), Y_AXIS);
 }
 
 void
@@ -98,7 +98,7 @@ Vertical_align_engraver::acknowledge_grob (Grob_info i)
       String id = i.context ()->id_string ();
 
       scm_hash_set_x (id_to_group_hashtab_, scm_makfrom0str (id.to_str0 ()),
-		      i.grob_->self_scm ());
+		      i.grob ()->self_scm ());
 
 
       SCM before_id = i.context ()->get_property ("alignAboveContext");
@@ -108,7 +108,7 @@ Vertical_align_engraver::acknowledge_grob (Grob_info i)
       SCM after = scm_hash_ref (id_to_group_hashtab_,  after_id, SCM_BOOL_F);
 
 
-      Align_interface::add_element (valign_, i.grob_,
+      Align_interface::add_element (valign_, i.grob (),
 				    get_property ("verticalAlignmentChildCallback"));
 
       if (unsmob_grob (before) || unsmob_grob (after))
@@ -121,12 +121,12 @@ Vertical_align_engraver::acknowledge_grob (Grob_info i)
 	    {
 	      if (scm_car (s) == after)
 		{
-		  *current = scm_cons (i.grob_->self_scm(), s);
+		  *current = scm_cons (i.grob ()->self_scm(), s);
 		  break;
 		}
 	      else if (scm_car (s) == before)
 		{
-		  scm_set_cdr_x (s, scm_cons (i.grob_->self_scm (),
+		  scm_set_cdr_x (s, scm_cons (i.grob ()->self_scm (),
 					      scm_cdr (s)));
 		  break;
 		}
diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc
index 91d0f87bf1..03e940650d 100644
--- a/lily/volta-engraver.cc
+++ b/lily/volta-engraver.cc
@@ -161,7 +161,7 @@ Volta_engraver::process_music ()
 void
 Volta_engraver::acknowledge_grob (Grob_info i)
 {
-  if (Item *item = dynamic_cast<Item *> (i.grob_))
+  if (Item *item = dynamic_cast<Item *> (i.grob ()))
     {
       if (Note_column::has_interface (item))
 	{
@@ -176,7 +176,7 @@ Volta_engraver::acknowledge_grob (Grob_info i)
 	    Volta_bracket_interface::add_bar (end_volta_span_, item);
 	}
     }
-  else if (Staff_symbol::has_interface (i.grob_))
+  else if (Staff_symbol::has_interface (i.grob ()))
     {
       /*
 	We only want to know about a single staff: then we add to the
@@ -185,7 +185,7 @@ Volta_engraver::acknowledge_grob (Grob_info i)
 	staff_ = SCM_UNDEFINED;
 
       if (staff_ != SCM_UNDEFINED)
-	staff_ = i.grob_->self_scm ();
+	staff_ = i.grob ()->self_scm ();
     }
 }