SCM
Pure_from_neighbor_interface::calc_pure_relevant_grobs (SCM smob)
{
- Grob *me = Grob::unsmob (smob);
+ Grob *me = unsmob<Grob> (smob);
extract_grob_set ((me->original () && me->original ()->is_live ()
? me->original ()
: me),
vector<Grob *> new_elts;
new_elts.insert (new_elts.end (), elts.begin (), elts.end ());
- SCM neighbors_scm = me->get_object ("neighbors");
- if (Grob_array::is_smob (neighbors_scm))
- {
- vector<Grob *> &arr
- = Grob_array::unsmob (neighbors_scm)->array_reference ();
- arr = new_elts;
- }
+ if (Grob_array *a = unsmob<Grob_array> (me->get_object ("neighbors")))
+ a->set_array (new_elts);
return Axis_group_interface::internal_calc_pure_relevant_grobs (me, "neighbors");
}