X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fcontext.hh;h=42fb15aaa30fd93bcdec58cac74f978f5da057a2;hb=8659a99f233f5c4684292728e7ad4206669b35b0;hp=130a304f935ea694c71d3f9d773ad1aed98e365d;hpb=831d149c5240b038667d4973660a63a474605aae;p=lilypond.git diff --git a/lily/include/context.hh b/lily/include/context.hh index 130a304f93..42fb15aaa3 100644 --- a/lily/include/context.hh +++ b/lily/include/context.hh @@ -33,7 +33,7 @@ class Context : public Smob public: SCM mark_smob () const; int print_smob (SCM, scm_print_state *) const; - static const char type_p_name_[]; + static const char * const type_p_name_; virtual ~Context (); private: Scheme_hash_table *properties_dict () const; @@ -51,6 +51,7 @@ private: Stream_event *infant_event_; protected: + virtual void derived_mark () const; Context *daddy_context_; /* The used Context_def */ SCM definition_; @@ -89,8 +90,17 @@ public: Dispatcher *event_source () const { return event_source_; } Dispatcher *events_below () const { return events_below_; } - void internal_send_stream_event (SCM type, Input *origin, SCM props[]); - + void internal_send_stream_event (SCM type, Input *origin); + void internal_send_stream_event (SCM type, Input *origin, + SCM prop, SCM val); + void internal_send_stream_event (SCM type, Input *origin, + SCM prop, SCM val, SCM prop2, SCM val2); + void internal_send_stream_event (SCM type, Input *origin, + SCM prop, SCM val, SCM prop2, SCM val2, + SCM prop3, SCM val3); + void internal_send_stream_event (SCM type, Input *origin, + SCM prop, SCM val, SCM prop2, SCM val2, + SCM prop3, SCM val3, SCM prop4, SCM val4); SCM get_definition () const { return definition_; } SCM get_definition_mods () const { return definition_mods_; } @@ -187,10 +197,7 @@ void set_context_property_on_children (Context *trans, SCM sym, SCM val); /* Shorthand for creating and broadcasting stream events. */ #define send_stream_event(ctx, type, origin, ...) \ - do { \ - SCM props[] = { __VA_ARGS__, 0 }; \ - ctx->internal_send_stream_event (ly_symbol2scm (type), origin, props); \ - } while (0) + ctx->internal_send_stream_event (ly_symbol2scm (type), origin, ##__VA_ARGS__) SCM nested_property_alist (SCM alist, SCM prop_path, SCM value); SCM nested_property (SCM alist, SCM prop_path, SCM fallback = SCM_EOL);