2 global-gravs.cc -- implement Engraver,Performer ctors
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
11 #include "input-translator.hh"
13 #include "engraver.hh"
15 struct Engraver_table_entry {
18 Engraver_table_entry(String s, Grav_ctor f) {
22 Engraver_table_entry()
28 static Array<Engraver_table_entry> *grav_table=0;
31 add_engraver(String s, Grav_ctor f)
34 grav_table = new Array<Engraver_table_entry>;
36 grav_table->push(Engraver_table_entry(s, f));
41 get_engraver_p(String s)
43 for (int i=0; i < grav_table->size(); i++) {
44 if ((*grav_table)[i].name_str_ == s)
45 return (*(*grav_table)[i].ctor_l_)();
47 error("Unknown engraver `" + s +"\'");
53 struct Performer_table_entry
57 Performer_table_entry(String s, Perf_ctor f) {
61 Performer_table_entry()
67 static Array<Performer_table_entry> *perf_table=0;
70 add_performer(String s, Perf_ctor f)
73 perf_table = new Array<Performer_table_entry>;
75 perf_table->push(Performer_table_entry(s, f));
80 get_performer_p(String s)
82 for (int i=0; i < perf_table->size(); i++) {
83 if ((*perf_table)[i].name_str_ == s)
84 return (*(*perf_table)[i].ctor_l_)();
86 error("Unknown performer `" + s +"\'");