* lily/music-iterator.cc (quit, do_quit): new function: break link
[lilypond.git] / lily / music-constructor.cc
blob51a2497ec6f95e9752418d1d8f16e280e6659084
1 /*
2 music-constructor.cc -- implement Music_constructor
4 source file of the GNU LilyPond music typesetter
6 (c) 2001--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8 */
10 #include <map> // UGH.
11 #include "music-constructor.hh"
12 typedef Music* (*Music_ctor) ();
14 static std::map<String,Music_ctor> *ctors_map_;
16 void
17 add_music_ctor (String s, Music_ctor c)
19 if (!ctors_map_)
20 ctors_map_ = new std::map<String, Music_ctor>;
22 (*ctors_map_)[s] = c;
26 Music_ctor
27 get_music_ctor (String s)
29 if (ctors_map_->find (s) == ctors_map_->end ())
30 return 0;
32 return (* ctors_map_)[s];
35 Music*
36 make_music (String s)
38 return (*get_music_ctor (s)) () ;