#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
{
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_;
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_; }
/* 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 ();
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);
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 */