]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/register-group.hh
release: 0.0.70pre
[lilypond.git] / lily / include / register-group.hh
1 /*
2   registergroup.hh -- declare Register_group_register
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 REGISTERGROUP_HH
11 #define REGISTERGROUP_HH
12
13 #include "parray.hh"
14 #include "plist.hh"
15 #include "score-elem-info.hh"
16 #include "register.hh"
17
18 /**
19   Group a number of registers. Usually delegates everything to its contents.
20   Postfix: group
21   */
22 class Register_group_register : public Request_register {
23 protected:
24     Pointer_list<Request_register*> reg_list_;
25     Link_array<Register_group_register> group_l_arr_;
26     Link_array<Request_register> nongroup_l_arr_;
27     String id_str_;
28     
29     Array<Score_elem_info> announce_info_arr_;
30     
31     virtual void do_print()const;
32
33     virtual bool removable_b()const;
34
35 public:
36     int iterator_count_;
37     void check_removal();
38     Register_group_register();
39     ~Register_group_register();
40     
41     /// Score_register = 0, Staff_registers = 1, etc)
42     virtual int depth_i()const;
43     /**
44       Go up in the tree. default: choose next parent
45      */
46     Register_group_register * ancestor_l(int l=1);
47     
48     Input_register * ireg_l_;
49     
50     /**
51       Junk #reg_l#.
52
53       Pre:
54         #reg_l# is in #reg_list_#
55      */
56     virtual void terminate_register(Request_register * reg_l);
57     
58    NAME_MEMBERS();
59     
60     /**
61       Remove #reg_l# from the list, and return it.
62      */
63     virtual Request_register * remove_register_p(Request_register*reg_l);
64     virtual void set_feature(Feature i);
65     virtual void sync_features() ;
66     virtual void do_pre_move_processing();
67     virtual void do_post_move_processing();
68
69     virtual void do_removal_processing();
70     virtual bool do_try_request(Request*);
71     virtual void do_process_requests();
72
73     virtual Staff_info get_staff_info()const;
74     
75     virtual Register_group_register * find_register_l(String name,String id);
76     virtual void do_announces();    
77     virtual void announce_element(Score_elem_info);
78     virtual Register_group_register* find_get_reg_l(String name, String id);
79     virtual Register_group_register * get_default_interpreter();
80     
81     virtual void add(Request_register* reg_p);
82
83     virtual bool contains_b(Request_register*)const;
84 };
85
86 #endif // REGISTERGROUP_HH
87
88