2 register.hh -- part of LilyPond
4 (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
13 #include "staffeleminfo.hh"
17 a struct which processes requests, and creates the #Staff_elem#s.
18 Hungarian postfix: reg
20 class Request_register {
22 Complex_walker * walk_l_;
23 Array<Request*> accepted_req_arr_;
26 Warning: you can't copy a #Request_register#
28 Request_register(Request_register const &);
29 Request_register(Complex_walker*);
31 virtual ~Request_register(){}
34 take note of item/spanner
35 put item in spanner. Adjust local key; etc.
37 Default: ignore the info
39 virtual void acknowledge_element(Staff_elem_info){}
42 try to fit the request in this register
45 false: not noted, not taken.
47 true: request swallowed. Don't try to put the request elsewhere.
49 (may be we could use C++ exceptions.. :-)
51 #Request_register::try_request# always returns false
53 virtual bool try_request(Request *req_l);
55 /// make items/spanners with the requests you got
56 virtual void process_request(){}
58 /// typeset any spanners. Empty #accepted_req_arr_#
59 void pre_move_processing();
60 /// reset any appropriate data.
61 void post_move_processing();
63 virtual void set_dir(int){}
66 Paperdef * paper() const;
70 invoke walker method to typeset element
72 void typeset_element(Staff_elem*elem_p);
76 typeset a "command" item.
77 If the column is not breakable, #pre_p# and #post_p# are junked
79 void typeset_breakable_item(Item * pre_p , Item * nobreak_p, Item * post_p);
80 /** virtual, called by #pre_move_processing()#
81 #Request_register::do_pre_move_process()# defaults to NOP
83 virtual void do_pre_move_process(){}
84 /** virtual, called by #post_move_processing#,
85 #Request_register::do_post_move_process()# defaults to NOP */
86 virtual void do_post_move_process(){}
88 Announce element to walker. Utility
90 void announce_element(Staff_elem_info);