X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fglobal-context.cc;h=160b7b62788cb5c46e11a5a62f3e5c20d4bcc753;hb=aa8c7a60ad274050c3bc8cc797d6af6eed47bd86;hp=ddcec501ba4ec521d56176387d004405210fd96e;hpb=35fafba86276f47f3742fd10f0107eea1cc926ea;p=lilypond.git diff --git a/lily/global-context.cc b/lily/global-context.cc index ddcec501ba..160b7b6278 100644 --- a/lily/global-context.cc +++ b/lily/global-context.cc @@ -1,9 +1,20 @@ /* - global-context.cc -- implement Global_context + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1997--2010 Han-Wen Nienhuys - (c) 1997--2006 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "global-context.hh" @@ -14,17 +25,13 @@ using namespace std; #include "context-def.hh" #include "dispatcher.hh" #include "international.hh" -#include "lilypond-key.hh" #include "music-iterator.hh" #include "music.hh" #include "output-def.hh" -#include "stream-event.hh" #include "warn.hh" -Global_context::Global_context (Output_def *o, Object_key *key) - : Context (new Lilypond_context_key (key, - Moment (0), - "Global", "", 0)) +Global_context::Global_context (Output_def *o) + : Context () { output_def_ = o; definition_ = find_context_def (o, ly_symbol2scm ("Global")); @@ -93,8 +100,6 @@ Global_context::prepare (SCM sev) else prev_mom_ = now_mom_; now_mom_ = *mom; - - clear_key_disambiguations (); } Moment @@ -140,6 +145,13 @@ Global_context::run_iterator_on_me (Music_iterator *iter) if (w.main_part_.is_infinity () || w > final_mom) break; + if (w == prev_mom_) + { + programming_error ("Moment is not increasing. Aborting interpretation."); + break ; + } + + if (first) { /* @@ -188,10 +200,16 @@ Global_context::previous_moment () const } Context * -Global_context::get_default_interpreter () +Global_context::get_default_interpreter (string /* context_id */) { if (get_score_context ()) return get_score_context ()->get_default_interpreter (); else return Context::get_default_interpreter (); } + +Global_context * +unsmob_global_context (SCM x) +{ + return dynamic_cast (unsmob_context (x)); +}