X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fcontext.hh;h=2555bfe2b49e0e26519c2a1eac630a148d5026b3;hb=4934b315013ccdda3ab42271fa8bed6e45587844;hp=28e80fd2db070b32001b82ceaf508a11869f3977;hpb=3d333f46096e20f6f38ab128d31c001a72c14ae3;p=lilypond.git diff --git a/lily/include/context.hh b/lily/include/context.hh index 28e80fd2db..2555bfe2b4 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_; @@ -186,16 +187,23 @@ bool check_repeat_count_visibility (Context const *context, SCM count); 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, ...) \ -{ \ - SCM props[] = { __VA_ARGS__, 0 }; \ - ctx->internal_send_stream_event (ly_symbol2scm (type), origin, props); \ -} +#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) SCM nested_property_alist (SCM alist, SCM prop_path, SCM value); +SCM nested_property (SCM alist, SCM prop_path, SCM fallback = SCM_EOL); SCM nested_create_alist (SCM prop_path, SCM value); SCM partial_list_copy (SCM alist, SCM tail, SCM newtail); +SCM assq_tail (SCM key, SCM alist, SCM alist_end); +SCM assv_tail (SCM key, SCM alist, SCM alist_end); +SCM assoc_tail (SCM key, SCM alist, SCM alist_end); SCM evict_from_alist (SCM, SCM, SCM); SCM nalist_to_alist (SCM nalist, int nested); +extern SCM ly_context_set_property_x_proc; +extern SCM ly_context_unset_property_proc; +extern SCM ly_context_matched_pop_property_proc; #endif /* CONTEXT_HH */