]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/performer.hh
16016256903542770862e9c613591374afb46af2
[lilypond.git] / lily / include / performer.hh
1 /*
2   This file is part of LilyPond, the GNU music typesetter.
3
4   Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
5   Jan Nieuwenhuizen <janneke@gnu.org>
6
7   LilyPond is free software: you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation, either version 3 of the License, or
10   (at your option) any later version.
11
12   LilyPond is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #ifndef PERFORMER_HH
22 #define PERFORMER_HH
23
24 #include "audio-element-info.hh"
25 #include "grob-info.hh"
26 #include "translator.hh"
27
28 /* Convert a music definition into an audio representation.
29    A baseclass.  */
30 class Performer : public Translator
31 {
32 public:
33   VIRTUAL_COPY_CONSTRUCTOR (Translator, Performer);
34   friend class Performer_group;
35   Performer_group *get_daddy_performer () const;
36
37 protected:
38   virtual void announce_element (Audio_element_info);
39   virtual void acknowledge_audio_element (Audio_element_info);
40   virtual void create_audio_elements ();
41 };
42
43 Performer *unsmob_performer (SCM perf);
44
45 #endif /* PERFORMER_HH */
46