lilypond-1.5.8
[lilypond.git] / hdr / walkregs.hh
blob643ce57605430b60935559236e07ec52054b0361
1 /*
2 walkregs.hh -- declare Walker_registers
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
10 #ifndef WALKREGS_HH
11 #define WALKREGS_HH
14 #include "registergroup.hh"
16 /**
17 Top level registers: the interface to Complex_walker.
19 [sigh. Sometimes I wish C++ could do better late binding.]
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_;
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();
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;
50 #endif // WALKREGS_HH