2 translator-ctors.cc -- implement Translator construction
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "translator.hh"
10 #include "scm-hash.hh"
14 should delete these after exit.
17 Scheme_hash_table *global_translator_dict=0;
19 LY_DEFINE (get_all_translators,"ly:get-all-translators", 0, 0, 0, (),
20 "Return a list of all translator objects that may be instantiated. "
23 SCM l = global_translator_dict ? global_translator_dict->to_alist () : SCM_EOL;
25 for (SCM s =l; gh_pair_p (s); s = gh_cdr (s))
27 gh_set_car_x (s, gh_cdar (s));
34 add_translator (Translator *t)
36 if (!global_translator_dict)
37 global_translator_dict = new Scheme_hash_table;
39 SCM k= ly_symbol2scm (classname (t));
40 global_translator_dict->set (k, t->self_scm ());
42 scm_gc_unprotect_object (t->self_scm ());
46 get_translator (SCM sym)
49 if (global_translator_dict)
50 global_translator_dict->try_retrieve (sym, &v);
53 error (_f ("unknown translator: `%s'", ly_symbol2string (sym).to_str0 ()));
55 return unsmob_translator (v);