SCM_UNDEFINED);
}
-SCM
-Grob::get_interfaces () const
-{
- return interfaces_;
-}
-
extern void check_interfaces_for_property (Grob const *me, SCM sym);
if (do_internal_type_checking_global)
{
if (!ly_is_procedure (v)
+ && !is_simple_closure (v)
+ && v != ly_symbol2scm ("calculation-in-progress")
&& !type_check_assignment (sym, v, ly_symbol2scm ("backend-type?")))
abort ();
check_interfaces_for_property (this, sym);
{
SCM val = scm_cdr (handle);
if (!ly_is_procedure (val)
+ && !is_simple_closure (val)
&& !type_check_assignment (sym, val,
ly_symbol2scm ("backend-type?")))
abort ();
{
SCM val = get_property_data (sym);
if (ly_is_procedure (val)
- || is_callback_chain (val)
|| is_simple_closure (val))
{
val = ((Grob*)this)->try_callback (sym, val);
#ifndef NDEBUG
#include "protected-scm.hh"
+
Protected_scm grob_property_callback_stack = SCM_EOL;
bool debug_property_callbacks = 0;
#endif
return (s == SCM_BOOL_F) ? SCM_EOL : scm_cdr (s);
}
-void
-Grob::substitute_object_links (SCM crit, SCM orig)
+bool
+Grob::is_live () const
{
- set_break_subsititution (crit);
- object_alist_ = substitute_object_alist (orig, object_alist_);
+ return immutable_property_alist_ != SCM_EOL;
}
+
bool
-Grob::is_live () const
+Grob::internal_has_interface (SCM k)
{
- return immutable_property_alist_ != SCM_EOL;
+ return scm_c_memq (k, interfaces_) != SCM_BOOL_F;
}