lilypond-1.3.26
[lilypond.git] / src / swalker.cc
blob34afa0ee40822363772c591699a78650208cc22a
1 #include "request.hh"
2 #include "swalker.hh"
3 #include "stcol.hh"
4 #include "sccol.hh"
6 Staff_walker::~Staff_walker() {}
7 Staff_walker::Staff_walker(Staff_walker const &s)
8 :PCursor<Staff_column*> (s)
10 assert(false);
13 Staff_walker::Staff_walker(Staff * s, PScore*ps )
14 : PCursor<Staff_column*> (s->cols)
16 staff_ = s;
17 pscore_ = ps;
18 break_status = BREAK_END - BREAK_PRE;
21 Moment
22 Staff_walker::when() const
24 return (* (PCursor<Staff_column*> *) this)->when();
27 void
28 Staff_walker::process()
30 break_status = BREAK_END - BREAK_PRE;
31 if (ptr()->staff_commands_p_)
32 for (iter_top(*ptr()->staff_commands_p_,i); i.ok(); i++) {
33 process_command(i);
36 process_requests();
40 void
41 Staff_walker::process_command(Command*com)
43 switch (com->code){
44 case BREAK_PRE:
45 case BREAK_MIDDLE:
46 case BREAK_POST:
47 case BREAK_END:
48 (*this)->score_column_l_->set_breakable();
49 break_status = com->code- BREAK_PRE;
50 break;
51 case INTERPRET:
52 do_INTERPRET_command(com);
53 break;
55 case TYPESET:
56 do_TYPESET_command(com);
57 break;
59 default :
60 break;
64 void
65 Staff_walker::operator++(int i)
67 PCursor<Staff_column*>::operator++(i);
68 reset();