X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-constructor.cc;h=481b9ebc9026d899109988d1e2fd3d4ba82d7cc6;hb=3e2eab301d69df7682ef4668c1972681e0ac413d;hp=bd14326605244fe83fa218f1a771b58e4c709605;hpb=fc3e875d6bf06f0680e897faffdcab36ad975a03;p=lilypond.git diff --git a/lily/music-constructor.cc b/lily/music-constructor.cc index bd14326605..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 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 map; - - (*ctors_map_)[s] = c; -} + ctors_map_ = new std::map; + (*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); }