2 engravergroup.hh -- declare Engraver_group_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
10 #ifndef ENGRAVERGROUP_HH
11 #define ENGRAVERGROUP_HH
15 #include "score-elem-info.hh"
16 #include "engraver.hh"
17 #include "translator.hh"
21 Group a number of engravers. Usually delegates everything to its contents.
24 class Engraver_group_engraver : public Request_engraver, public virtual Translator {
27 Pointer_list<Request_engraver*> grav_list_;
28 Link_array<Engraver_group_engraver> group_l_arr_;
29 Link_array<Request_engraver> nongroup_l_arr_;
31 Array<Score_elem_info> announce_info_arr_;
33 virtual void do_print()const;
35 virtual bool removable_b()const;
38 Input_engraver * igrav_l_;
40 Engraver_group_engraver();
41 ~Engraver_group_engraver();
48 #grav_l# is in #grav_list_#
50 virtual void terminate_engraver(Request_engraver * grav_l);
55 Remove #grav_l# from the list, and return it.
57 virtual Request_engraver * remove_engraver_p(Request_engraver*grav_l);
58 virtual void set_feature(Feature i);
59 virtual void sync_features() ;
60 virtual void do_pre_move_processing();
61 virtual void do_post_move_processing();
63 virtual void do_removal_processing();
64 virtual bool do_try_request(Request*);
65 virtual void do_process_requests();
67 virtual Staff_info get_staff_info()const;
69 virtual Engraver_group_engraver * find_engraver_l(String name,String id);
70 virtual void do_announces();
71 virtual void announce_element(Score_elem_info);
74 virtual void add(Request_engraver* grav_p);
76 virtual bool contains_b(Request_engraver*)const;
78 virtual Translator* find_get_translator_l(String name, String id);
79 virtual Translator * get_default_interpreter();
81 Go up in the tree. default: choose next parent
83 Translator * ancestor_l(int l=1);
88 #endif // ENGRAVERGROUP_HH