X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Ftranslator.hh;h=90b903eb16ec0b9e1b25a31b357c5428336d0032;hb=7c62e4c7902481a8b6f1cea755fc30228f2c64c7;hp=bcfc75b91fc4b54154eccd2d8b560848daf350ef;hpb=a6ee9dcd388111e842064a8d46ab06c4897a00d2;p=lilypond.git diff --git a/lily/include/translator.hh b/lily/include/translator.hh index bcfc75b91f..90b903eb16 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2002 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ @@ -14,17 +14,18 @@ #include "string.hh" #include "lily-proto.hh" #include "virtual-methods.hh" -#include "lily-guile.hh" #include "input.hh" #include "smobs.hh" -#define get_property(x) internal_get_property(ly_symbol2scm(x)) - +/* copied from lily-guile.hh */ +#ifndef get_property +#define get_property(x) internal_get_property (ly_symbol2scm (x)) +#endif #define TRANSLATOR_DECLARATIONS(NAME) \ public: \ - NAME();\ - VIRTUAL_COPY_CONS (Translator); \ + NAME (); \ + VIRTUAL_COPY_CONSTRUCTOR (Translator, NAME); \ static SCM static_description_; \ virtual SCM static_translator_description () const; \ virtual SCM translator_description () const; @@ -35,56 +36,43 @@ public: \ class Translator { void init (); -public: - Music_output_def * output_def_; - String type_string_; - - bool is_alias_b (String) const; - - Translator (Translator const &); +protected: + bool must_be_last_; +public: + bool must_be_last () const; + + Context * context () const { return daddy_context_; } - Translator_group * daddy_trans_ ; - void removal_processing (); - /** - ask daddy for a feature - */ - Music_output_def *get_output_def () const; + Translator (Translator const &); SCM internal_get_property (SCM symbol) const; + virtual Output_def *get_output_def () const; + virtual Translator_group* get_daddy_translator ()const; virtual Moment now_mom () const; - - /* - ugh: bubbled up from Translator_group. - */ - SCM simple_trans_list_; - SCM trans_group_list_; - SCM definition_; - - SCM properties_scm_; - DECLARE_SMOBS (Translator, dummy); - -public: - TRANSLATOR_DECLARATIONS(Translator); - /** - try to fit the request in this engraver - - @return - false: not noted, not taken. - - true: request swallowed. Don't try to put the request elsewhere. - - */ virtual bool try_music (Music *req); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); - virtual void do_announces () ; virtual void initialize () ; + virtual void process_music (); + virtual void do_announces (); virtual void finalize (); -}; + + Score_context * get_score_context () const; + Global_context * get_global_context () const; + + TRANSLATOR_DECLARATIONS(Translator); + DECLARE_SMOBS (Translator, dummy); +protected: // should be private. + Context * daddy_context_ ; + virtual void derived_mark () const; + + friend class Context_def; + friend class Context; +}; /** A macro to automate administration of translators. @@ -95,7 +83,6 @@ static void _ ## T ## _adder () {\ T *t = new T;\ T::static_description_ = t->static_translator_description ();\ scm_permanent_object (T::static_description_);\ - t->type_string_ = classname (t);\ add_translator (t);\ }\ SCM T::translator_description() const\ @@ -107,28 +94,30 @@ ADD_GLOBAL_CTOR (_ ## T ## _adder); -#define ENTER_DESCRIPTION(classname,desc,grobs,acked,read,write) \ +#define ADD_TRANSLATOR(classname,desc,grobs,accepted,acked,read,write) \ ADD_THIS_TRANSLATOR (classname);\ SCM \ classname::static_translator_description () const \ { \ - SCM static_properties= SCM_EOL; \ - /* static_properties= acons (name ,gh_str02scm (Translator::name (self_scm ())), \ + SCM static_properties = SCM_EOL; \ + /* static_properties = acons (name ,gh_str02scm (Translator::name (self_scm ())), \ static_properties_); \ */ \ - static_properties= scm_acons (ly_symbol2scm ("grobs-created"), \ + static_properties = scm_acons (ly_symbol2scm ("grobs-created"), \ parse_symbol_list (grobs), static_properties); \ \ - static_properties= scm_acons (ly_symbol2scm ("description"), \ - ly_str02scm (desc), static_properties); \ + static_properties = scm_acons (ly_symbol2scm ("description"), \ + scm_makfrom0str (desc), static_properties); \ \ - static_properties= scm_acons (ly_symbol2scm ("interfaces-acked"), \ + static_properties = scm_acons (ly_symbol2scm ("interfaces-acked"), \ parse_symbol_list (acked), static_properties); \ + static_properties = scm_acons (ly_symbol2scm ("events-accepted"), \ + parse_symbol_list (accepted), static_properties); \ \ - static_properties= scm_acons (ly_symbol2scm ("properties-read"), \ + static_properties = scm_acons (ly_symbol2scm ("properties-read"), \ parse_symbol_list (read), static_properties); \ \ - static_properties= scm_acons (ly_symbol2scm ("properties-written"), \ + static_properties = scm_acons (ly_symbol2scm ("properties-written"), \ parse_symbol_list (write), static_properties); \ \ return static_properties; \ @@ -136,9 +125,8 @@ classname::static_translator_description () const \ -extern Dictionary *global_translator_dict; void add_translator (Translator*trans); -Translator*get_translator (String s); +Translator*get_translator (SCM s); DECLARE_UNSMOB(Translator,translator); #endif // TRANSLATOR_HH