- if (val != SCM_UNDEFINED)
- {
- SCM prev = internal_get_property (prop);
-
- if (gh_pair_p (prev) || prev == SCM_EOL)
- {
- bool ok = type_check_assignment (eltprop, val, ly_symbol2scm ("backend-type?"));
-
- if (ok)
- {
- prev = gh_cons (gh_cons (eltprop, val), prev);
- internal_set_property (prop, prev);
- }
- }
- else
- {
- // warning here.
- }
-
- }
- else
- {
- SCM prev = internal_get_property (prop);
-
- /*
- TODO: should have scm_equal_something () for reverting
- autobeam properties.
- */
- SCM newprops= SCM_EOL ;
- while (gh_pair_p (prev) && !SCM_EQ_P(ly_caar (prev), eltprop))
- {
- newprops = gh_cons (ly_car (prev), newprops);
- prev = ly_cdr (prev);
- }
-
- if (gh_pair_p (prev))
- {
- newprops = scm_reverse_x (newprops, ly_cdr (prev));
- internal_set_property (prop, newprops);
- }
- }