X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftranslator.cc;h=17c9ab38c250e6a30476b577b6e69c4e10905beb;hb=832c21ee509c9ad488e1490ad59a650e89c8f53a;hp=41111b075e6c48a7fc5012c56c406986779b347f;hpb=94189ec2b8da6d7e89dc619c646a927adead9b19;p=lilypond.git diff --git a/lily/translator.cc b/lily/translator.cc index 41111b075e..17c9ab38c2 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -3,22 +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 "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 () { @@ -27,35 +24,33 @@ 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; + must_be_last_ = false; + 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 &src) { - return s == type_str_; + init (); + must_be_last_ = src.must_be_last_; } bool @@ -68,74 +63,48 @@ 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 () +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 (); + return daddy_context_->implementation (); } -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 () { @@ -155,36 +124,45 @@ Translator::finalize () 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_); + Translator * me = (Translator*) SCM_CELL_WORD_1 (sm); + 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 daddy_context_ ->get_global_context (); +} - - - return 1; + +Score_context * +Translator::get_score_context () const +{ + return daddy_context_->get_score_context (); +} + + +SCM +Translator::static_translator_description ()const +{ + return SCM_EOL; } +IMPLEMENT_SMOBS (Translator); +IMPLEMENT_DEFAULT_EQUAL_P (Translator); +IMPLEMENT_TYPE_P (Translator,"ly:translator?"); + +bool +Translator::must_be_last () const +{ + return must_be_last_; +} -IMPLEMENT_UNSMOB(Translator, translator); -IMPLEMENT_SMOBS(Translator); -IMPLEMENT_DEFAULT_EQUAL_P(Translator);