void
Context::acknowledge_infant (SCM sev)
{
- infant_event_ = unsmob_stream_event (sev);
+ infant_event_ = Stream_event::unsmob (sev);
}
IMPLEMENT_LISTENER (Context, set_property_from_event);
void
Context::set_property_from_event (SCM sev)
{
- Stream_event *ev = unsmob_stream_event (sev);
+ Stream_event *ev = Stream_event::unsmob (sev);
SCM sym = ev->get_property ("symbol");
if (scm_is_symbol (sym))
void
Context::unset_property_from_event (SCM sev)
{
- Stream_event *ev = unsmob_stream_event (sev);
+ Stream_event *ev = Stream_event::unsmob (sev);
SCM sym = ev->get_property ("symbol");
type_check_assignment (sym, SCM_EOL, ly_symbol2scm ("translation-type?"));
void
Context::create_context_from_event (SCM sev)
{
- Stream_event *ev = unsmob_stream_event (sev);
+ Stream_event *ev = Stream_event::unsmob (sev);
string id = ly_scm2string (ev->get_property ("id"));
SCM ops = ev->get_property ("ops");
return (daddy_context_) ? daddy_context_->where_defined (sym, value) : 0;
}
+/* Quick variant of where_defined. Checks only the context itself. */
+
+bool
+Context::here_defined (SCM sym, SCM *value) const
+{
+#ifndef NDEBUG
+ if (profile_property_accesses)
+ note_property_access (&context_property_lookup_table, sym);
+#endif
+
+ return properties_dict ()->try_retrieve (sym, value);
+}
+
/*
return SCM_EOL when not found.
*/
void
Context::change_parent (SCM sev)
{
- Stream_event *ev = unsmob_stream_event (sev);
+ Stream_event *ev = Stream_event::unsmob (sev);
Context *to = Context::unsmob (ev->get_property ("context"));
disconnect_from_parent ();