X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-outputter-scheme.cc;h=145e9bfa9323b16d1ead30ec4189d3bbc6815127;hb=5d84bfad4626892bcffd05adcced53c8a2329047;hp=672eab7ce72c07838c780ede3ad5030d9ffac913;hpb=00e3e15364b9d3c94cda1bcab9f889bb95f6832d;p=lilypond.git diff --git a/lily/paper-outputter-scheme.cc b/lily/paper-outputter-scheme.cc index 672eab7ce7..145e9bfa93 100644 --- a/lily/paper-outputter-scheme.cc +++ b/lily/paper-outputter-scheme.cc @@ -1,9 +1,20 @@ /* - paper-outputter-scheme.cc -- implement Paper_outputter bindings + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2015 Han-Wen Nienhuys - (c) 2005--2007 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 "paper-outputter.hh" @@ -13,15 +24,14 @@ #include "warn.hh" LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter", - 2, 0, 0, (SCM port, SCM format), - "Create an outputter that evaluates within " - "@code{output-}@var{format}, writing to @var{port}.") + 2, 0, 0, (SCM port, SCM format), + "Create an outputter that evaluates within" + " @code{output-}@var{format}, writing to @var{port}.") { LY_ASSERT_TYPE (ly_is_port, port, 1); - LY_ASSERT_TYPE (scm_is_string, format, 2); - - string f = ly_scm2string (format); + LY_ASSERT_TYPE (ly_is_symbol, format, 2); + string f = ly_symbol2string (format); string output_name = ""; SCM port_name = scm_port_filename (port); @@ -29,7 +39,7 @@ LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter", output_name = ly_scm2string (port_name); message (_f ("Layout output to `%s'...", - output_name.c_str ())); + output_name.c_str ())); progress_indication ("\n"); Paper_outputter *po = new Paper_outputter (port, f); @@ -40,61 +50,71 @@ LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter", /* FIXME: why is output_* wrapper called dump? */ LY_DEFINE (ly_outputter_dump_stencil, "ly:outputter-dump-stencil", - 2, 0, 0, (SCM outputter, SCM stencil), - "Dump stencil @var{expr} onto @var{outputter}.") + 2, 0, 0, (SCM outputter, SCM stencil), + "Dump stencil @var{expr} onto @var{outputter}.") { - + LY_ASSERT_SMOB (Paper_outputter, outputter, 1); LY_ASSERT_SMOB (Stencil, stencil, 2); - Paper_outputter *po = unsmob_outputter (outputter); - Stencil *st = unsmob_stencil (stencil); + Paper_outputter *po = unsmob (outputter); + Stencil *st = unsmob (stencil); po->output_stencil (*st); return SCM_UNSPECIFIED; } LY_DEFINE (ly_outputter_dump_string, "ly:outputter-dump-string", - 2, 0, 0, (SCM outputter, SCM str), - "Dump @var{str} onto @var{outputter}.") + 2, 0, 0, (SCM outputter, SCM str), + "Dump @var{str} onto @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); LY_ASSERT_TYPE (scm_is_string, str, 2); - Paper_outputter *po = unsmob_outputter (outputter); + Paper_outputter *po = unsmob (outputter); return po->dump_string (str); } LY_DEFINE (ly_outputter_port, "ly:outputter-port", - 1, 0, 0, (SCM outputter), - "Return output port for @var{outputter}.") + 1, 0, 0, (SCM outputter), + "Return output port for @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); - Paper_outputter *po = unsmob_outputter (outputter); + Paper_outputter *po = unsmob (outputter); return po->file (); } LY_DEFINE (ly_outputter_close, "ly:outputter-close", - 1, 0, 0, (SCM outputter), - "Close port of @var{outputter}.") + 1, 0, 0, (SCM outputter), + "Close port of @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); - Paper_outputter *po = unsmob_outputter (outputter); + Paper_outputter *po = unsmob (outputter); po->close (); return SCM_UNSPECIFIED; } LY_DEFINE (ly_outputter_output_scheme, "ly:outputter-output-scheme", - 2, 0, 0, (SCM outputter, SCM expr), - "Eval @var{expr} in module of @var{outputter}.") + 2, 0, 0, (SCM outputter, SCM expr), + "Eval @var{expr} in module of @var{outputter}.") { LY_ASSERT_SMOB (Paper_outputter, outputter, 1); - Paper_outputter *po = unsmob_outputter (outputter); + Paper_outputter *po = unsmob (outputter); po->output_scheme (expr); return SCM_UNSPECIFIED; } + +LY_DEFINE (ly_outputter_module, "ly:outputter-module", + 1, 0, 0, (SCM outputter), + "Return output module of @var{outputter}.") +{ + LY_ASSERT_SMOB (Paper_outputter, outputter, 1); + + Paper_outputter *po = unsmob (outputter); + return po->module (); +}