}
SCM meta = get_grob_property ("meta");
- SCM ifs = scm_assoc (ly_symbol2scm ("interfaces"), meta);
+ if (gh_pair_p (meta))
+ {
+ SCM ifs = scm_assoc (ly_symbol2scm ("interfaces"), meta);
- set_grob_property ("interfaces",ly_cdr (ifs));
+ set_grob_property ("interfaces",ly_cdr (ifs));
+ }
}
-
Grob::Grob (Grob const&s)
: dim_cache_ (s.dim_cache_)
{
/*
Remove the value associated with KEY, and return it. The result is
- that a next call will yield SCM_UNDEFINED (and not the underlying
+ that a next call will yield SCM_EOL (and not the underlying
`basic' property.
*/
SCM
SCM mol = SCM_EOL;
if (gh_procedure_p (proc))
- mol = gh_apply (proc, scm_listify (this->self_scm (), SCM_UNDEFINED));
+ mol = gh_apply (proc, scm_list_n (this->self_scm (), SCM_UNDEFINED));
Molecule *m = unsmob_molecule (mol);
// ugr.
mol = Molecule (m->extent_box (),
- scm_listify (origin, m->get_expr (), SCM_UNDEFINED)
+ scm_list_n (origin, m->get_expr (), SCM_UNDEFINED)
). smobbed_copy ();
m = unsmob_molecule (mol);
/* now: sc && sc->line_l () == line */
if (!line
+ /*
+ This was introduced in 1.3.49 as a measure to prevent
+ programming errors. It looks expensive (?). TODO:
+ benchmark , document when (what kind of programming
+ errors) this happens.
+ */
|| (sc->common_refpoint (line, X_AXIS)
&& sc->common_refpoint (line, Y_AXIS)))
{
SCM meta = get_grob_property ("meta");
SCM nm = scm_assoc (ly_symbol2scm ("name"), meta);
nm = (gh_pair_p (nm)) ? ly_cdr (nm) : SCM_EOL;
- return gh_string_p (nm) ?ly_scm2string (nm) : classname (this);
+ return gh_symbol_p (nm) ? ly_symbol2string (nm) : classname (this);
}
void
****************************************************/
-IMPLEMENT_UNSMOB (Grob, grob);
+
IMPLEMENT_SMOBS (Grob);
IMPLEMENT_DEFAULT_EQUAL_P (Grob);