X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fengraver.cc;h=8e49280fd8f928413eb810b4b1428da66e806691;hb=1dbfe58548c0dbea3a09c94eb03113aaaaa73c75;hp=dcda3031b4835508dd14b6b5524b2b3d60603792;hpb=62f221b6b3861ff055dc0384ec3c48cc665688cd;p=lilypond.git diff --git a/lily/engraver.cc b/lily/engraver.cc index dcda3031b4..8e49280fd8 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -1,9 +1,20 @@ /* - engraver.cc -- implement Engraver + This file is part of LilyPond, the GNU music typesetter. - Sourcefile of GNU LilyPond music type setter + Copyright (C) 1997--2011 Han-Wen Nienhuys - (c) 1997--2008 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 "engraver.hh" @@ -59,9 +70,8 @@ Engraver::announce_grob (Grob *e, SCM cause) /* - CAUSE is the object (typically a Music object) that - was the reason for making E. -*/ + CAUSE is the object (typically a grob or stream-event object) that + was the reason for ending E. */ void Engraver::announce_end_grob (Grob *e, SCM cause) { @@ -106,13 +116,19 @@ LY_DEFINE (ly_set_grob_creation_callback, "ly:set-grob-creation-callback", #endif Grob * -Engraver::internal_make_grob (SCM symbol, SCM cause, char const *name, char const *file, int line, char const *fun) +Engraver::internal_make_grob (SCM symbol, + SCM cause, + char const * /* name */, + char const *file, + int line, + char const *fun) { - (void) file; - (void) fun; - (void) line; - (void) name; - +#ifdef NDEBUG + (void)file; + (void)line; + (void)fun; +#endif + SCM props = updated_grob_properties (context (), symbol); Grob *grob = 0; @@ -158,13 +174,26 @@ Engraver::internal_make_column (SCM x, char const *name, } Spanner * -Engraver::internal_make_spanner (SCM x, SCM cause, char const *name, char const *file, int line, char const *fun) +Engraver::internal_make_spanner (SCM x, SCM cause, char const *name, + char const *file, int line, char const *fun) { Spanner *sp = dynamic_cast (internal_make_grob (x, cause, name, file, line, fun)); assert (sp); return sp; } +Engraver* +unsmob_engraver (SCM eng) +{ + return dynamic_cast (unsmob_translator (eng)); +} + +bool +ly_is_grob_cause (SCM obj) +{ + return unsmob_grob (obj) || unsmob_stream_event (obj) || (obj == SCM_EOL); +} + #include "translator.icc" ADD_TRANSLATOR (Engraver, @@ -181,3 +210,4 @@ ADD_TRANSLATOR (Engraver, "" ); +