]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/engraver-group.hh
release: 0.0.72pre
[lilypond.git] / lily / include / engraver-group.hh
1 /*
2   engravergroup.hh -- declare Engraver_group_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #ifndef ENGRAVERGROUP_HH
11 #define ENGRAVERGROUP_HH
12
13 #include "parray.hh"
14 #include "plist.hh"
15 #include "score-elem-info.hh"
16 #include "engraver.hh"
17 #include "translator.hh"
18
19
20 /**
21   Group a number of engravers. Usually delegates everything to its contents.
22   Postfix: group
23   */
24 class Engraver_group_engraver : public Request_engraver, public virtual Translator {
25 protected:
26     
27     Pointer_list<Request_engraver*> grav_list_;
28     Link_array<Engraver_group_engraver> group_l_arr_;
29     Link_array<Request_engraver> nongroup_l_arr_;
30     
31     Array<Score_elem_info> announce_info_arr_;
32     
33     virtual void do_print()const;
34
35     virtual bool removable_b()const;
36
37 public:
38     Input_engraver * igrav_l_;
39     void check_removal();
40     Engraver_group_engraver();
41     ~Engraver_group_engraver();
42     
43
44     
45     /**
46       Junk #grav_l#.
47       Pre:
48       #grav_l# is in #grav_list_#
49      */
50     virtual void terminate_engraver(Request_engraver * grav_l);
51     
52    NAME_MEMBERS();
53     
54     /**
55       Remove #grav_l# from the list, and return it.
56      */
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();
62
63     virtual void do_removal_processing();
64     virtual bool do_try_request(Request*);
65     virtual void do_process_requests();
66
67     virtual Staff_info get_staff_info()const;
68     
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);
72
73         
74     virtual void add(Request_engraver* grav_p);
75
76     virtual bool contains_b(Request_engraver*)const;
77
78     virtual Translator* find_get_translator_l(String name, String id);
79     virtual Translator * get_default_interpreter();
80     /**
81       Go up in the tree. default: choose next parent
82      */
83     Translator * ancestor_l(int l=1);
84     int depth_i() const;
85
86 };
87
88 #endif // ENGRAVERGROUP_HH
89
90