(parse_symbol_list): Bugfix.
[lilypond/patrick.git] / lily / engraver.cc
blob2d9d6ae35926fd830400c53c3d7ff7332b079bfe
1 /*
2 engraver.cc -- implement Engraver
4 Sourcefile of GNU LilyPond music type setter
6 (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
9 #include "engraver.hh"
11 #include "music.hh"
12 #include "score-engraver.hh"
13 #include "warn.hh"
14 #include "spanner.hh"
15 #include "item.hh"
16 #include "context.hh"
17 #include "score-context.hh"
18 #include "lilypond-key.hh"
20 Engraver_group_engraver *
21 Engraver::get_daddy_engraver () const
23 return dynamic_cast<Engraver_group_engraver *> (get_daddy_translator ());
26 void
27 Engraver::announce_grob (Grob_info inf)
29 get_daddy_engraver ()->announce_grob (inf);
33 CAUSE is the object (typically a Music object) that
34 was the reason for making E.
36 void
37 Engraver::announce_grob (Grob *e, SCM cause)
39 if (unsmob_music (cause) || unsmob_grob (cause))
40 e->set_property ("cause", cause);
42 Grob_info i (this, e);
44 Engraver_group_engraver *g = get_daddy_engraver ();
45 if (g)
46 g->announce_grob (i);
49 Engraver::Engraver ()
53 Score_engraver *
54 Engraver::get_score_engraver () const
56 return dynamic_cast<Score_engraver *> (get_score_context ()->implementation ());
59 #include "translator.icc"
61 ADD_TRANSLATOR (Engraver,
62 "Base class for engravers. Does nothing, so it is not used.",
63 "",
64 "",
65 "",
66 "");