X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fglobal-context-scheme.cc;h=7eb5fb224aa67003a08b06fed3d10c588c58958e;hb=1da74a6f525cdbb102ad93bfbcc36a620a5754ee;hp=c0f919f2e732ec1ebe521c901d1998f7abd92bbd;hpb=b2bba8f2ecf6bd5e8b755c45b8f271d09ddaa79f;p=lilypond.git diff --git a/lily/global-context-scheme.cc b/lily/global-context-scheme.cc index c0f919f2e7..7eb5fb224a 100644 --- a/lily/global-context-scheme.cc +++ b/lily/global-context-scheme.cc @@ -1,46 +1,44 @@ /* - global-context-scheme.cc -- implement Global_context bindings + global-context-scheme.cc -- implement Global_context bindings source file of the GNU LilyPond music typesetter - (c) 2005 Han-Wen Nienhuys - + (c) 2005--2006 Han-Wen Nienhuys */ -#include "warn.hh" -#include "music-output.hh" -#include "output-def.hh" -#include "music-iterator.hh" -#include "music.hh" #include "cpu-timer.hh" #include "global-context.hh" -#include "object-key.hh" +#include "international.hh" #include "main.hh" +#include "music-iterator.hh" +#include "music-output.hh" +#include "music.hh" +#include "object-key.hh" +#include "output-def.hh" +#include "warn.hh" LY_DEFINE (ly_format_output, "ly:format-output", - 2, 0, 0, (SCM context, SCM outname), - "Given a Score context in its final state," - "process it and return the (rendered) result.") + 1, 0, 0, (SCM context), + "Given a Global context in its final state, " + "process it and return the @code{Music_output} object in its final state.") { - Global_context *g = dynamic_cast (unsmob_context (context)); + Global_context *g = dynamic_cast (unsmob_context (context)); SCM_ASSERT_TYPE (g, context, SCM_ARG1, __FUNCTION__, "Global context"); - SCM_ASSERT_TYPE (scm_is_string (outname), outname, SCM_ARG2, __FUNCTION__, "output file name"); - Music_output *output = g->get_output (); + SCM output = g->get_output (); progress_indication ("\n"); - /* ugh, midi still wants outname */ - return output->process (ly_scm2string (outname)); + unsmob_music_output (output)->process (); + return output; } - -LY_DEFINE (ly_run_translator, "ly:run-translator", +LY_DEFINE (ly_run_translator, "ly:run-translator", 2, 1, 0, (SCM mus, SCM output_def, SCM key), "Process @var{mus} according to @var{output_def}. \n" "An interpretation context is set up,\n" "and @var{mus} is interpreted with it. \n" "The context is returned in its final state.\n" - - "\n\nOptionally, this routine takes an Object-key to\n" + "\n\n" + "Optionally, this routine takes an Object-key to\n" "to uniquely identify the Score block containing it.\n") { Output_def *odef = unsmob_output_def (output_def); @@ -49,35 +47,34 @@ LY_DEFINE (ly_run_translator, "ly:run-translator", if (!music || !music->get_length ().to_bool ()) { - warning (_ ("Need music in a score")); + warning (_ ("no music found in score")); return SCM_BOOL_F; } - - SCM_ASSERT_TYPE (music, mus, SCM_ARG1, - __FUNCTION__, "Music"); + + SCM_ASSERT_TYPE (music, mus, SCM_ARG1, __FUNCTION__, "Music"); SCM_ASSERT_TYPE (odef, output_def, SCM_ARG2, __FUNCTION__, "Output definition"); - + Cpu_timer timer; - - Global_context *trans = new Global_context (odef, music->get_length (), unsmob_key (key) ); + + Global_context *trans = new Global_context (odef, music->get_length (), + unsmob_key (key)); if (!trans) { programming_error ("no toplevel translator"); return SCM_BOOL_F; } - progress_indication (_ ("Interpreting music... ")); - + message (_ ("Interpreting music... ")); + SCM protected_iter = Music_iterator::get_static_get_iterator (music); - Music_iterator * iter = unsmob_iterator (protected_iter); + Music_iterator *iter = unsmob_iterator (protected_iter); iter->init_translator (music, trans); - iter->construct_children (); if (!iter->ok ()) { - warning (_ ("Need music in a score")); + warning (_ ("no music found in score")); /* todo: should throw exception. */ return SCM_BOOL_F; } @@ -87,8 +84,8 @@ LY_DEFINE (ly_run_translator, "ly:run-translator", scm_remember_upto_here_1 (protected_iter); trans->finish (); - if (verbose_global_b) - progress_indication (_f ("elapsed time: %.2f seconds", timer.read ())); - - return scm_gc_unprotect_object (trans->self_scm ()); + if (be_verbose_global) + message (_f ("elapsed time: %.2f seconds", timer.read ())); + + return trans->unprotect (); }