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
13 #include "lily-proto.hh"
16 #include "score-elem-info.hh"
17 #include "engraver.hh"
18 #include "translator.hh"
22 Group a number of engravers. Usually delegates everything to its contents.
25 class Engraver_group_engraver : public Engraver, public virtual Translator {
27 Pointer_list<Engraver*> grav_list_;
28 Link_array<Engraver_group_engraver> group_l_arr_;
29 Link_array<Engraver> nongroup_l_arr_;
31 Array<Score_elem_info> announce_info_arr_;
33 virtual void do_print() const;
34 virtual bool removable_b() const;
36 Engraver*get_simple_engraver (char const*typeinfo) const;
37 virtual void print() const ;
39 Input_translator * itrans_l_;
41 Engraver_group_engraver();
42 ~Engraver_group_engraver();
44 bool is_bottom_engraver_b() const;
50 #grav_l# is in #grav_list_#
52 virtual void terminate_engraver (Engraver * grav_l);
55 DECLARE_MY_RUNTIME_TYPEINFO;
58 Remove #grav_l# from the list, and return it.
60 virtual Engraver * remove_engraver_p (Engraver*grav_l);
61 virtual void set_feature (Feature i);
62 virtual void sync_features();
64 virtual void do_pre_move_processing();
65 virtual void do_post_move_processing();
66 virtual void do_removal_processing();
67 virtual bool do_try_request (Request*);
68 virtual bool try_request (Request*);
69 virtual void do_process_requests();
71 virtual Staff_info get_staff_info() const;
73 virtual Engraver_group_engraver * find_engraver_l (String name,String id);
74 virtual void do_announces();
75 virtual void announce_element (Score_elem_info);
76 virtual void add (Engraver* grav_p);
77 virtual bool contains_b (Engraver*) const;
79 virtual Translator* find_get_translator_l (String name, String id);
80 virtual Translator * get_default_interpreter();
82 Go up in the tree. default: choose next parent
84 Translator * ancestor_l (int l=1);
88 #endif // ENGRAVERGROUP_HH