2 translator.hh -- declare Translator
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
14 #include "lily-proto.hh"
15 #include "virtual-methods.hh"
17 #include "dictionary.hh"
21 #define TRANSLATOR_CLONE(c) VIRTUAL_COPY_CONS(c, Translator)
23 /** Make some kind of #Element#s from Requests. Elements are made by
24 hierarchically grouped #Translator#s
26 class Translator : public Input {
27 Dictionary<Scalar> properties_dict_;
29 Music_output_def * output_def_l_;
32 bool is_alias_b (String) const;
35 DECLARE_MY_RUNTIME_TYPEINFO;
36 TRANSLATOR_CLONE(Translator);
37 Translator (Translator const &);
39 virtual ~Translator ();
41 Translator_group * daddy_trans_l_ ;
46 try to fit the request in this engraver
49 false: not noted, not taken.
51 true: request swallowed. Don't try to put the request elsewhere.
54 bool try_request (Request*);
55 void pre_move_processing();
56 void add_processing ();
57 void creation_processing ();
58 void process_requests();
59 void post_move_processing();
60 void removal_processing();
62 ask daddy for a feature
64 Scalar get_property (String type_str);
65 void set_property (String var_name, Scalar value);
66 Music_output_def *output_def_l () const;
68 virtual Moment now_moment () const;
69 virtual Engraver *engraver_l () { return 0; }
70 virtual Performer *performer_l() { return 0; }
71 virtual Translator_group * group_l () { return 0; }
87 Default: always return false
89 virtual void do_add_processing ();
90 virtual bool do_try_request (Request *req_l);
91 virtual void do_print () const;
92 virtual void do_pre_move_processing(){}
93 virtual void do_post_move_processing(){}
94 virtual void do_process_requests () {}
95 virtual void do_creation_processing() {}
96 virtual void do_removal_processing() {}
100 A macro to automate administration of translators.
102 #define ADD_THIS_TRANSLATOR(c) \
105 Translator *t = new c;\
106 t-> type_str_ = c::static_name ();\
111 extern Dictionary<Translator*> *global_translator_dict_p;
112 void add_translator (Translator*trans_p);
114 Translator*get_translator_l (String s);
116 #endif // TRANSLATOR_HH