X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftranslator.cc;h=a5c612a929bdda8f9f4288db93a0598e62a6670e;hb=b0d6e82437680bc7c8091db78524d91957c6af49;hp=477d2a111b8d87af9308165fa470588d624df066;hpb=92b42d1e577d7c34248fe27534c3eefa1756233f;p=lilypond.git diff --git a/lily/translator.cc b/lily/translator.cc index 477d2a111b..a5c612a929 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -3,16 +3,17 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2003 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ #include "translator.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" @@ -23,41 +24,32 @@ Translator::~Translator () void Translator::init () { - simple_trans_list_ = SCM_EOL; - trans_group_list_ = SCM_EOL; - properties_scm_ = SCM_EOL; - definition_ = SCM_EOL; - daddy_trans_ =0; -} - -Translator::Translator () -{ + must_be_last_ = false; self_scm_ = SCM_EOL; - init (); - output_def_ = 0; + daddy_context_ =0; smobify_self (); } -Translator::Translator (Translator const &s) +void +Translator::do_announces () { - self_scm_ = SCM_EOL; - init (); - output_def_ = s.output_def_; - type_string_ = s.type_string_; - - smobify_self (); } -bool -Translator::is_alias_b (String s) const +void +Translator::process_music () { - bool b = s == type_string_; + +} - for (SCM a = unsmob_translator_def (definition_)->type_aliases_; - !b && gh_pair_p (a); a = ly_cdr (a)) - b = b || s == ly_scm2string (ly_car (a)); +Translator::Translator () +{ + init (); +} - return b; +Translator::Translator (Translator const &src) +{ + init (); + must_be_last_ = src.must_be_last_; } bool @@ -70,37 +62,43 @@ Translator::try_music (Music *) Moment Translator::now_mom () const { - return daddy_trans_->now_mom (); + 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::do_announces () -{ -} -Music_output_def * -Translator::get_output_def () const +Translator_group* +Translator::get_daddy_translator () const { - return output_def_; + return daddy_context_->implementation (); } + SCM Translator::internal_get_property (SCM sym) const { - return daddy_trans_->internal_get_property (sym); + return daddy_context_->internal_get_property (sym); } void -Translator:: stop_translation_timestep () +Translator::stop_translation_timestep () { } +/* + this function has 2 properties + + - It is called before try_music () + + - 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 () { @@ -126,12 +124,8 @@ 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->properties_scm_; + me->derived_mark (); + return SCM_EOL; } SCM @@ -140,6 +134,21 @@ Translator::translator_description () const return SCM_EOL; } + +Global_context * +Translator::get_global_context () const +{ + 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 { @@ -149,3 +158,16 @@ Translator::static_translator_description ()const IMPLEMENT_SMOBS (Translator); IMPLEMENT_DEFAULT_EQUAL_P (Translator); +IMPLEMENT_TYPE_P (Translator,"ly:translator?"); + +bool +Translator::must_be_last () const +{ + return must_be_last_; +} + +void +Translator::derived_mark () const +{ + +}