X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-constructor.cc;h=481b9ebc9026d899109988d1e2fd3d4ba82d7cc6;hb=f68dfcc7aeb65b0b4054edbb2d9861e14d5d533e;hp=2615221615b801fe75b81e0a73b182ac64f721cd;hpb=9651bafcd832c72a8f81ade4b602199583d61f37;p=lilypond.git diff --git a/lily/music-constructor.cc b/lily/music-constructor.cc index 2615221615..481b9ebc90 100644 --- a/lily/music-constructor.cc +++ b/lily/music-constructor.cc @@ -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 Han-Wen Nienhuys - - */ -#include // UGH. + (c) 2001--2005 Han-Wen Nienhuys +*/ + #include "music-constructor.hh" -typedef Music* (*Music_ctor) (); -static std::map *ctors_map_; +#include // UGH. +#include + +#include "warn.hh" + +static std::map *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; - - (*ctors_map_)[s] = c; -} + (*ctors_map_)[s] = c; +} Music_ctor get_music_ctor (String s) @@ -29,12 +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* -get_music (String s) +Music * +make_music (String s, SCM init) { - 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) (init); }