X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftranslator.cc;h=d8211a24c1f3c1c19855317d7107482979d9ca49;hb=1e66bfb9ec0ebc1b7c09ad9f2256bd77f2230269;hp=6183057b85cbab2bc649302246d68fb8e9e8f549;hpb=a2991295b2c1fb36bec19de207161855ca3c1756;p=lilypond.git diff --git a/lily/translator.cc b/lily/translator.cc index 6183057b85..d8211a24c1 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -3,23 +3,19 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2001 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ #include "translator.hh" -#include "debug.hh" +#include "warn.hh" #include "translator-group.hh" -#include "translator-def.hh" - +#include "context-def.hh" +#include "global-context.hh" #include "moment.hh" +#include "context.hh" #include "ly-smobs.icc" -char const* -Translator::name () const -{ - return classname (this); -} Translator::~Translator () { @@ -28,41 +24,31 @@ Translator::~Translator () void Translator::init () { - simple_trans_list_ = SCM_EOL; - trans_group_list_ = SCM_EOL; - properties_scm_ = SCM_EOL; - definition_ = SCM_EOL; - daddy_trans_l_ =0; + self_scm_ = SCM_EOL; + simple_trans_list_ = SCM_BOOL_F; + daddy_context_ =0; + smobify_self (); } -Translator::Translator () +void +Translator::do_announces () { - init (); - output_def_l_ = 0; - smobify_self (); +} +void +Translator::process_music () +{ + } -Translator::Translator (Translator const &s) - : Input (s) +Translator::Translator () { init (); - output_def_l_ = s.output_def_l_; - type_str_ = s.type_str_; - - smobify_self (); } -bool -Translator::is_alias_b (String s) const +Translator::Translator (Translator const &) { - bool b = s == type_str_; - - for (SCM a = unsmob_translator_def (definition_)->type_aliases_; - !b && gh_pair_p (a); a = gh_cdr (a)) - b = b || s == ly_scm2string (gh_car (a)); - - return b; + init (); } bool @@ -75,74 +61,50 @@ Translator::try_music (Music *) Moment Translator::now_mom () const { - return daddy_trans_l_->now_mom (); -} - - - - - -void -Translator::post_move_processing () -{ - start_translation_timestep (); + return daddy_context_->now_mom (); } -void -Translator::removal_processing () +Music_output_def * +Translator::get_output_def () const { - finalize (); + return daddy_context_->get_output_def (); } -void -Translator::announces () +Translator_group* +Translator::get_daddy_translator () const { - do_announces (); + Translator *t + = unsmob_translator (daddy_context_->implementation_); + return dynamic_cast (t); } -void -Translator::pre_move_processing () +SCM +Translator::internal_get_property (SCM sym) const { - stop_translation_timestep (); + return daddy_context_->internal_get_property (sym); } - - -Music_output_def * -Translator::output_def_l () const +void +Translator::stop_translation_timestep () { - return output_def_l_; } -SCM -Translator::get_property (char const * id) const -{ - return daddy_trans_l_->get_property (ly_symbol2scm (id)); -} +/* + this function has 2 properties -SCM -Translator::get_property (SCM sym) const -{ - return daddy_trans_l_->get_property (sym); -} + - It is called before try_music () -void -Translator:: stop_translation_timestep () -{ -} + - It is called before any user information enters the translators. + (i.e. any \property or event is not processed yet.) + */ void Translator::start_translation_timestep () { } -void -Translator::do_announces () -{ -} - void Translator::initialize () { @@ -163,31 +125,37 @@ SCM Translator::mark_smob (SCM sm) { Translator * me = (Translator*) SCM_CELL_WORD_1 (sm); - scm_gc_mark (me->simple_trans_list_); - scm_gc_mark (me->trans_group_list_); - scm_gc_mark (me->definition_); - scm_gc_mark (me->properties_scm_); + return me->simple_trans_list_; +} - return me->properties_scm_; +SCM +Translator::translator_description () const +{ + return SCM_EOL; } -int -Translator::print_smob (SCM s, SCM port, scm_print_state *) +Global_context * +Translator::get_global_context () const { - Translator *sc = (Translator *) gh_cdr (s); - - scm_puts ("#name (), port); - scm_display (sc->simple_trans_list_, port); - /* - don't try to print properties, that is too much hassle. - */ - scm_puts (" >", port); - - return 1; + return daddy_context_ ->get_global_context (); +} + + +Score_context * +Translator::get_score_context () const +{ + return daddy_context_->get_score_context (); +} + + +SCM +Translator::static_translator_description ()const +{ + return SCM_EOL; } -IMPLEMENT_UNSMOB (Translator, translator); + IMPLEMENT_SMOBS (Translator); IMPLEMENT_DEFAULT_EQUAL_P (Translator); +IMPLEMENT_TYPE_P (Translator,"ly:translator?");