X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscore.cc;h=bda4e464dff910ffa9ddd293f9095a12f7fcf467;hb=abc2e31b608746a1ac924085a87244cc32ee7178;hp=5dac6960869f16ae5024ca9aefa9f694ae2d8c51;hpb=6a1295eaacbc3e6b5a7ce19f7f942b23f8d7f2ff;p=lilypond.git diff --git a/lily/score.cc b/lily/score.cc index 5dac696086..bda4e464df 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1999 Han-Wen Nienhuys */ #include "score.hh" @@ -15,7 +15,7 @@ #include "music-iterator.hh" #include "music.hh" #include "global-translator.hh" -#include "header.hh" +#include "scope.hh" #include "cpu-timer.hh" #include "main.hh" #include "paper-def.hh" @@ -35,15 +35,14 @@ Score::Score (Score const &s) music_p_ = (s.music_p_) ? s.music_p_->clone() : 0; for (int i=0; i < s.def_p_arr_.size (); i++) def_p_arr_.push(s.def_p_arr_[i]->clone()); - + errorlevel_i_ = s.errorlevel_i_; header_p_ = (s.header_p_) ? new Header (*s.header_p_): 0; } Score::~Score() { delete header_p_; - for (int i=0; i < def_p_arr_.size (); i++) - delete def_p_arr_[i]; + junk_pointer_array (def_p_arr_); delete music_p_; } @@ -53,58 +52,40 @@ Score::run_translator (Music_output_def *odef_l) Cpu_timer timer; Global_translator * trans_p = odef_l->get_global_translator_p(); if (!trans_p) - return ; + { + non_fatal_error (_("no toplevel translator")); + return ; + } + *mlog << '\n' << _("Interpreting music...") << flush; + trans_p->last_mom_ = music_p_->length_mom (); - *mlog << _("\nInterpreting music ..."); - trans_p->last_mom_ = music_p_->time_int().max (); + Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_); + iter->init_translator(music_p_, trans_p); - Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_, - trans_p); iter->construct_children(); if (! iter->ok()) { delete iter; - warning (_("Need music in a score")); + warning (_("need music in a score")); errorlevel_i_ =1; return ; } - trans_p->start(); - - while (iter->ok() || trans_p->moments_left_i ()) - { - Moment w = infinity_mom; - if (iter->ok()) - { - w = iter->next_moment(); - DOUT << "proccing: " << w <<"\n"; - if (!monitor->silent_b ("walking")) - iter->print(); - } - - trans_p->modify_next (w); - trans_p->prepare (w); - if (!monitor->silent_b ("walking")) - trans_p->print(); - - iter->process_and_next (w); - trans_p->process(); - } + trans_p->start (); + trans_p->run_iterator_on_me (iter); delete iter; - trans_p->finish(); - + trans_p->finish (); if (errorlevel_i_) { // should we? hampers debugging. - warning (_("Errors found, /*not processing score*/")); + warning (_ ("errors found, /*not processing score*/")); } Music_output * output = trans_p->get_output_p(); delete trans_p; - *mlog << _(" (time: ") << String(timer.read (), "%.2f") << _(" seconds)"); - + *mlog << endl << _f ("time: %.2f seconds", timer.read ()) << flush; output->header_l_ = header_p_; output->origin_str_ = location_str(); @@ -124,7 +105,7 @@ Score::process() for (int i=0; i < def_p_arr_.size (); i++) { if (no_paper_global_b - && def_p_arr_[i]->is_type_b (Paper_def::static_name ())) + && dynamic_cast(def_p_arr_[i])) continue; run_translator (def_p_arr_[i]); } @@ -145,7 +126,7 @@ Score::print() const } void -Score::add (Music_output_def *pap_p) +Score::add_output (Music_output_def *pap_p) { def_p_arr_.push(pap_p); }