- Context arg?
- */
-
-void apply_property_operations (Context*tg, SCM pre_init_ops);
-void execute_pushpop_property (Context * trg, SCM prop, SCM eltprop, SCM val);
-SCM updated_grob_properties (Context* tg, SCM sym);
-Context * find_context_below (Context * where,
- String type, String id);
-
-Context * unsmob_context (SCM);
-
-DECLARE_UNSMOB(Context,context);
+ Context arg?
+*/
+
+void apply_property_operations (Context *tg, SCM pre_init_ops);
+void execute_pushpop_property (Context *trg, SCM prop, SCM eltprop, SCM val);
+void execute_general_pushpop_property (Context *context,
+ SCM context_property, SCM grob_property_path, SCM val);
+SCM updated_grob_properties (Context *tg, SCM sym);
+Context *find_context_below (Context *where,
+ SCM type_sym, string id);
+bool melisma_busy (Context *);
+
+Context *get_voice_to_lyrics (Context *lyrics);
+Grob *get_current_note_head (Context *voice);
+Grob *get_current_rest (Context *voice);
+DECLARE_UNSMOB (Context, context);
+
+Moment measure_position (Context const *context);
+Rational measure_length (Context const *context);
+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); \
+}
+
+SCM nested_property_alist (SCM alist, SCM prop_path, SCM value);
+SCM nested_property_revert_alist (SCM alist, SCM prop_path);
+SCM evict_from_alist (SCM, SCM, SCM);