X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fcontext.hh;h=5a7eb92687a522dd0f1f7043f0edf6cabd223341;hb=9f3572d98bb948c9689cd1f75401a029451fa001;hp=fd3c75b3f0f5daa28ca22def92188c1bcc8bf319;hpb=04265f11d1f21416ccebd2dcaa1d903dc781b36e;p=lilypond.git diff --git a/lily/include/context.hh b/lily/include/context.hh index fd3c75b3f0..5a7eb92687 100644 --- a/lily/include/context.hh +++ b/lily/include/context.hh @@ -9,12 +9,12 @@ #ifndef CONTEXT_HH #define CONTEXT_HH -#include "context-key-manager.hh" -#include "lily-proto.hh" -#include "listener.hh" -#include "moment.hh" + #include "std-vector.hh" +#include "moment.hh" +#include "lily-proto.hh" #include "virtual-methods.hh" +#include "context-key-manager.hh" class Context { @@ -28,11 +28,10 @@ class Context private: friend class Context_handle; int iterator_count_; - - /* Used internally by create_context */ - Stream_event *infant_event_; + bool init_; protected: + int unique_; Context *daddy_context_; /* The used Context_def */ SCM definition_; @@ -54,28 +53,23 @@ protected: children, are sent to this dispatcher. */ Dispatcher *events_below_; - // Translator_group is allowed to set implementation_. - friend class Translator_group; - // Context_def::instantiate initialises some protected members. friend class Context_def; - // UGH! initialises implementation_ - friend SCM ly_make_global_translator (SCM); void clear_key_disambiguations (); - DECLARE_LISTENER (set_property_from_event); - DECLARE_LISTENER (unset_property_from_event); public: Object_key const *get_grob_key (string name); Object_key const *get_context_key (string name, string id); + Context *create_context (Context_def *, string, SCM); string id_string () const { return id_string_; } SCM children_contexts () const { return context_list_; } SCM default_child_context_name () const; + int get_unique() { return unique_; } 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, SCM props[]); SCM get_definition () const { return definition_; } SCM get_definition_mods () const { return definition_mods_; } @@ -87,27 +81,17 @@ public: /* properties: */ SCM internal_get_property (SCM name_sym) const; SCM properties_as_alist () const; + void internal_set_property (SCM var_sym, SCM value); Context *where_defined (SCM name_sym, SCM *value) const; void unset_property (SCM var_sym); -#ifndef NDEBUG - void internal_set_property (SCM var_sym, SCM value, char const *file, int line, char const *fun); -#else - void internal_set_property (SCM var_sym, SCM value); -#endif - - Context *create_context (Context_def *, string, SCM); - DECLARE_LISTENER (create_context_from_event); - DECLARE_LISTENER (acknowledge_infant); - DECLARE_LISTENER (remove_context); - DECLARE_LISTENER (change_parent); - void disconnect_from_parent (); + Context *remove_context (Context *trans); void check_removal (); string context_name () const; SCM context_name_symbol () const; Global_context *get_global_context () const; - virtual Context *get_score_context () const; + virtual Score_context *get_score_context () const; virtual Output_def *get_output_def () const; virtual Moment now_mom () const; virtual Context *get_default_interpreter (); @@ -117,6 +101,7 @@ public: void add_context (Context *trans); bool is_bottom_context () const; bool is_removable () const; + bool try_music (Music *); Context *find_create_context (SCM context_name, string id, SCM ops); @@ -149,10 +134,10 @@ 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, ...) \ +#define send_stream_event(ctx, type, ...) \ { \ SCM props[] = { __VA_ARGS__, 0 }; \ - ctx->internal_send_stream_event (ly_symbol2scm (type), origin, props); \ + ctx->internal_send_stream_event (ly_symbol2scm (type), props); \ } #endif /* CONTEXT_HH */