]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/music-constructor.cc
Corrected typo by Jan
[lilypond.git] / lily / music-constructor.cc
index 86b415100073921240653749aaa78b3b16440398..481b9ebc9026d899109988d1e2fd3d4ba82d7cc6 100644 (file)
@@ -1,27 +1,28 @@
-/*   
-  music-constructor.cc --  implement Music_constructor
-  
+/*
+  music-constructor.cc -- implement Music_constructor
+
   source file of the GNU LilyPond music typesetter
-  
-  (c) 2001--2002  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
 
-#include <map>                 // UGH.
+  (c) 2001--2005  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
 #include "music-constructor.hh"
-typedef Music* (*Music_ctor) ();
 
-static std::map<String,Music_ctor> *ctors_map_;
+#include <map>                 // UGH.
+#include <cassert>
+
+#include "warn.hh"
+
+static std::map<String, Music_ctor> *ctors_map_;
 
 void
-add_music_ctor (String s,  Music_ctor c)
+add_music_ctor (String s, Music_ctor c)
 {
   if (!ctors_map_)
     ctors_map_ = new std::map<String, Music_ctor>;
-  
- (*ctors_map_)[s] = c;
-}
 
+  (*ctors_map_)[s] = c;
+}
 
 Music_ctor
 get_music_ctor (String s)
@@ -29,15 +30,17 @@ get_music_ctor (String s)
   if (ctors_map_->find (s) == ctors_map_->end ())
     return 0;
 
-  return (* ctors_map_)[s];
+  return (*ctors_map_)[s];
 }
 
-Music
-make_music (String s)
+Music *
+make_music (String s, SCM init)
 {
   Music_ctor c = get_music_ctor (s);
+  if (!c)
+    programming_error (String ("No constructor for music: ") + s);
   assert (c);
-  
-  return (*c) ();
+
+  return (*c) (init);
 }