]> git.donarmstrong.com Git - lilypond.git/blob - src/swalker.cc
9e4f1d3ff69970b1fdedd16407381e341038b7a5
[lilypond.git] / src / swalker.cc
1 #include "request.hh"
2 #include "swalker.hh"
3 #include "stcol.hh"
4 #include "sccol.hh"
5
6 Staff_walker::~Staff_walker() {}
7
8 Staff_walker::Staff_walker(Staff * s, PScore*ps )
9     : PCursor<Staff_column*> (s->cols)
10 {
11     staff_ = s;
12     pscore_ = ps;
13     break_status = BREAK_END - BREAK_PRE;
14 }
15
16 Moment
17 Staff_walker::when() const
18 {
19     return (* (PCursor<Staff_column*> *) this)->when();
20 }
21
22 void
23 Staff_walker::process()
24 {
25     break_status = BREAK_END - BREAK_PRE;
26     if (ptr()->s_commands)
27         for (iter_top(*ptr()->s_commands,i); i.ok(); i++) {
28             process_command(i);
29     }
30
31     process_requests();
32 }
33
34
35 void
36 Staff_walker::process_command(Command*com)
37 {
38     switch (com->code){
39     case BREAK_PRE:
40     case BREAK_MIDDLE:
41     case BREAK_POST:
42     case BREAK_END:
43         (*this)->score_column->set_breakable();
44         break_status = com->code- BREAK_PRE;
45         break;
46     case INTERPRET:
47         do_INTERPRET_command(com);
48         break;
49         
50     case TYPESET:
51         do_TYPESET_command(com);
52         break;
53    
54     default :
55         break;
56     }
57 }
58
59 void
60 Staff_walker::operator++(int i)
61 {
62     PCursor<Staff_column*>::operator++(i);
63     reset();
64 }