]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/music-constructor.hh
* flower
[lilypond.git] / lily / include / music-constructor.hh
1 /*
2   music-constructor.hh -- declare Music_constructor
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2001--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #ifndef MUSIC_CONSTRUCTOR_HH
10 #define MUSIC_CONSTRUCTOR_HH
11
12 #include "lily-guile.hh"
13 #include "lily-proto.hh"
14 #include "string.hh"
15 #include "global-ctor.hh"
16
17 #define ADD_MUSIC(type)                                                 \
18   Music *_ ## type ## _ctor (SCM init)                                  \
19   {                                                                     \
20     return new type (init);                                             \
21   }                                                                     \
22   static void _ ## type ## _adder ()                                    \
23   {                                                                     \
24     add_music_ctor (#type, & _ ## type ## _ctor);                       \
25   }                                                                     \
26   ADD_SCM_INIT_FUNC (_ ## type ## _adder_prefix, _ ## type ## _adder);
27
28 typedef Music *(*Music_ctor) (SCM);
29 void add_music_ctor (String, Music_ctor);
30 Music *make_music (String, SCM);
31
32
33 #endif /* MUSIC_CONSTRUCTOR_HH */
34