X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscore.cc;h=b51795072149875b7df07676593781c81584a951;hb=2b0aa2c5bbb4af4e7d0d3c057de066dc1d6d6b8d;hp=5dac6960869f16ae5024ca9aefa9f694ae2d8c51;hpb=6a1295eaacbc3e6b5a7ce19f7f942b23f8d7f2ff;p=lilypond.git diff --git a/lily/score.cc b/lily/score.cc index 5dac696086..b517950721 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()); - - header_p_ = (s.header_p_) ? new Header (*s.header_p_): 0; + errorlevel_i_ = s.errorlevel_i_; + header_p_ = (s.header_p_) ? new Scope (*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,13 +52,17 @@ 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()) @@ -70,41 +73,20 @@ Score::run_translator (Music_output_def *odef_l) 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 ("elapsed time: %.2f seconds", timer.read ()) << flush; output->header_l_ = header_p_; output->origin_str_ = location_str(); @@ -124,7 +106,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]); } @@ -136,16 +118,16 @@ void Score::print() const { #ifndef NPRINT - DOUT << "score {\n"; + DEBUG_OUT << "score {\n"; music_p_ -> print (); for (int i=0; i < def_p_arr_.size (); i++) def_p_arr_[i]->print(); - DOUT << "}\n"; + DEBUG_OUT << "}\n"; #endif } void -Score::add (Music_output_def *pap_p) +Score::add_output (Music_output_def *pap_p) { def_p_arr_.push(pap_p); }