]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/walk-regs.hh
daa4690932c437f3099df2bf2f823dc33777c589
[lilypond.git] / lily / include / walk-regs.hh
1 /*
2   walkregs.hh -- declare Walker_registers
3
4   source file of the LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #ifndef WALKREGS_HH
11 #define WALKREGS_HH
12
13
14 #include "register-group.hh"
15
16 /**
17   Top level registers: the interface to Complex_walker.
18
19   [sigh. Sometimes I wish C++ could do better late binding.]
20  */
21 struct Walker_registers : Register_group_register {
22     Array<Item*> prebreak_item_p_arr_;
23     Array<Item*> nobreak_item_p_arr_;
24     Array<Item*> postbreak_item_p_arr_;
25     Array<Staff_elem_info> announce_info_arr_;
26     Array<Voice_group_registers*> group_l_arr_;
27     Complex_walker * walk_l_;
28
29     /* *************** */
30     void change_group(Group_change_req * greq_l,
31                       Voice_registers *voice_regs_l,
32                       Voice_group_registers * old_group);
33     Voice_group_registers * get_group(String id);
34     void typeset_musical_item(Staff_elem * elem_p);
35     Walker_registers(Complex_walker*);
36     void do_announces();
37     void terminate_register(Request_register * reg);
38     virtual bool try_request(Request * r);
39     virtual Staff_info get_staff_info();
40
41     virtual void announce_element(Staff_elem_info);
42     virtual void acknowledge_element(Staff_elem_info);
43     virtual void typeset_breakable_item(Item * pre_p , Item * nobreak_p, Item * post_p);
44     virtual void typeset_element(Staff_elem*elem_p);
45     virtual void pre_move_processing();
46     virtual void post_move_processing();
47     virtual Paper_def * paper() const;
48 };
49
50 #endif // WALKREGS_HH