/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2004--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2004--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "std-vector.hh"
#include "virtual-methods.hh"
-class Context
+class Context : public Smob<Context>
{
+public:
+ SCM mark_smob ();
+ int print_smob (SCM, scm_print_state *);
+ static const char type_p_name_[];
+ virtual ~Context ();
+private:
Scheme_hash_table *properties_dict () const;
- Context (Context const &src);
+ Context (Context const &src); // Do not define! Not copyable!
- DECLARE_SMOBS (Context);
DECLARE_CLASSNAME (Context);
void terminate ();
// UGH! initialises implementation_
friend SCM ly_make_global_translator (SCM);
- DECLARE_LISTENER (set_property_from_event);
- DECLARE_LISTENER (unset_property_from_event);
+ void set_property_from_event (SCM);
+ void unset_property_from_event (SCM);
public:
string id_string () const { return id_string_; }
void internal_set_property (SCM var_sym, SCM value);
Context *create_context (Context_def *, const string&, SCM);
- DECLARE_LISTENER (create_context_from_event);
- DECLARE_LISTENER (acknowledge_infant);
- DECLARE_LISTENER (remove_context);
- DECLARE_LISTENER (change_parent);
+ void create_context_from_event (SCM);
+ void acknowledge_infant (SCM);
+ void remove_context (SCM);
+ void change_parent (SCM);
void disconnect_from_parent ();
void check_removal ();
string context_name () const;
bool melisma_busy (Context *);
Context *get_voice_to_lyrics (Context *lyrics);
-Grob *get_current_note_head (Context *voice, bool include_grace_notes);
+Grob *get_current_note_head (Context *voice);
Grob *get_current_rest (Context *voice);
Moment measure_position (Context const *context);