]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/walk-regs.hh
release: 0.0.65
[lilypond.git] / lily / include / walk-regs.hh
1 /*
2   walkregs.hh -- declare Walker_registers
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 WALKREGS_HH
11 #define WALKREGS_HH
12
13
14 #include "register-group.hh"
15 #include "parray.hh"
16 /**
17   Top level registers: the interface to Complex_walker.
18
19   [sigh. Sometimes I wish C++ could do better late binding.]
20
21   Basically, this distributes and collects elements and elementinfo to
22   children
23   */
24 class Walker_registers : public Register_group_register {
25
26     Array<Item*> prebreak_item_p_arr_;
27     Array<Item*> nobreak_item_p_arr_;
28     Array<Item*> postbreak_item_p_arr_;
29     Link_array<Score_elem> musical_item_p_arr_;
30     
31     Array<Score_elem_info> announce_info_arr_;
32  
33     Complex_walker * walk_l_;
34 protected:   
35     virtual Staff_info get_staff_info();
36
37     virtual void announce_element(Score_elem_info);
38     virtual void acknowledge_element(Score_elem_info);
39     virtual void typeset_breakable_item(Item * pre_p , Item * nobreak_p, Item * post_p);
40     virtual void typeset_element(Score_elem*elem_p);
41     virtual Paper_def * paper() const;
42 public:
43     virtual void pre_move_processing();
44     virtual void post_move_processing();
45
46
47     void do_announces();
48     Walker_registers(Complex_walker*);
49 };
50
51 #endif // WALKREGS_HH