X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftranslator-ctors.cc;h=339454b86f594cd2c89f097deace4560f95fe292;hb=b2023e711e576d58da3c51a4b3fd5d327a0fe013;hp=f39604f9ca78041d592a091d4b5386dc0fc58acf;hpb=fd35c1854983063501a1152c3827530e866dcde3;p=lilypond.git diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc index f39604f9ca..339454b86f 100644 --- a/lily/translator-ctors.cc +++ b/lily/translator-ctors.cc @@ -3,34 +3,54 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--2002 Han-Wen Nienhuys */ -#include "proto.hh" -#include "plist.hh" #include "translator.hh" #include "dictionary.hh" -#include "debug.hh" +#include "warn.hh" -Dictionary *global_translator_dict_p=0; +/* + should delete these after exit. + */ + +/* + UGH. Dictionary is deprecated + */ +Dictionary *global_translator_dict=0; + +LY_DEFINE(get_all_translators,"ly:get-all-translators", 0, 0, 0, (), + "Return an list of a all translator objects that may be instantiated +during a lilypond run.") +{ + SCM l = SCM_EOL; + for (std::map::const_iterator (ci (global_translator_dict->begin())); + ci != global_translator_dict->end (); ci++) + { + l = scm_cons ((*ci).second->self_scm (), l); + } + return l; +} void add_translator (Translator *t) { - if (!global_translator_dict_p) - global_translator_dict_p = new Dictionary; + if (!global_translator_dict) + global_translator_dict = new Dictionary; - global_translator_dict_p->elem (t->name ()) = t; + (*global_translator_dict)[classname (t)] = t; } Translator* -get_translator_l (String s) +get_translator (String s) { - if (global_translator_dict_p->elt_b (s)) + if (global_translator_dict->elem_b (s)) { - return (*global_translator_dict_p)[s]; + Translator* t = (*global_translator_dict)[s]; + return t; } - error (_("Unknown translator `") + s +"\'"); + error (_f ("unknown translator: `%s'", s)); return 0; } +