source file of the GNU LilyPond music typesetter
- (c) 2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 2001--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <map> // UGH.
+#include <assert.h>
+
+#include "warn.hh"
#include "music-constructor.hh"
+
typedef Music* (*Music_ctor) ();
-static map<String,Music_ctor> *ctors_map_;
+static std::map<String,Music_ctor> *ctors_map_;
void
add_music_ctor (String s, Music_ctor c)
{
if (!ctors_map_)
- ctors_map_ = new map<String, Music_ctor>;
+ ctors_map_ = new std::map<String, Music_ctor>;
(*ctors_map_)[s] = c;
}
}
Music*
-get_music (String s)
+make_music (String s)
{
- return (*get_music_ctor (s)) ();
+ Music_ctor c = get_music_ctor (s);
+ if (!c)
+ programming_error (String ("No constructor for music: ") + s);
+ assert (c);
+
+ return (*c) ();
}