2 translator-ctors.cc -- implement Translator construction
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
11 #include "translator.hh"
12 #include "dictionary.hh"
15 Dictionary
<Translator
*> *global_translator_dict_p
=0;
18 add_translator (Translator
*t
)
20 if (!global_translator_dict_p
)
21 global_translator_dict_p
= new Dictionary
<Translator
*>;
23 global_translator_dict_p
->elem (t
->name ()) = t
;
27 get_translator_l (String s
)
29 if (global_translator_dict_p
->elt_b (s
))
31 return (*global_translator_dict_p
)[s
];
34 error (_("Unknown translator `") + s
+"\'");
38 Array
<Translator_ctor
> *ctor_global_static_arr_p_
;
42 Very special greetings go out to Steve Jobs for creating a system
43 that doesn't handle global construction correctly.
46 add_constructor (Translator_ctor c
)
48 if (!ctor_global_static_arr_p_
)
49 ctor_global_static_arr_p_
= new Array
<Translator_ctor
>;
50 ctor_global_static_arr_p_
->push (c
);
56 for (int i
=0; i
< ctor_global_static_arr_p_
->size (); i
++)
57 add_translator (ctor_global_static_arr_p_
->elem (i
) ());