lilypond-0.0.32
[lilypond.git] / src / inputstaff.cc
blob116624574ca1f53ec90f48ddeb6aa2eb2fb17d11
1 #include "debug.hh"
2 #include "score.hh"
3 #include "inputmusic.hh"
4 #include "inputstaff.hh"
5 #include "staff.hh"
6 #include "complexstaff.hh"
7 #include "lexer.hh"
8 #include "lyricstaff.hh"
11 Input_staff::Input_staff(String s)
13 score_wide_music_p_ =0;
14 type= s;
15 defined_ch_c_l_ = 0;
18 void
19 Input_staff::add(Input_music*m)
21 music_.bottom().add(m);
24 Staff*
25 Input_staff::parse(Score*score_l, Input_music *default_score_wide)
27 Staff *p=0;
28 if (type == "melodic")
29 p = new Complex_staff;
30 else if (type == "lyric")
31 p = new Lyric_staff;
32 else
33 error( "Unknown staff-type `" + type +"\'", defined_ch_c_l_);
35 p->score_l_ = score_l;
37 for (iter_top(music_,i); i.ok(); i++) {
38 Voice_list vl = i->convert();
39 p->add(vl);
41 Voice_list vl = (score_wide_music_p_) ? score_wide_music_p_->convert()
42 : default_score_wide->convert();
43 p->add(vl);
44 return p;
47 Input_staff::Input_staff(Input_staff const&s)
49 for (iter_top(s.music_,i); i.ok(); i++)
50 add(i->clone());
51 defined_ch_c_l_ = s.defined_ch_c_l_;
52 type = s.type;
53 score_wide_music_p_ = (s.score_wide_music_p_) ?
54 s.score_wide_music_p_->clone() : 0;
57 void
58 Input_staff::print() const
60 #ifndef NPRINT
61 mtor << "Input_staff {\n";
62 for (iter_top(music_,i); i.ok(); i++)
63 i->print();
64 mtor << "}\n";
65 #endif
67 void
68 Input_staff::set_score_wide(Input_music *m_p)
70 delete score_wide_music_p_;
71 score_wide_music_p_ = m_p;
74 Input_staff::~Input_staff()
76 delete score_wide_music_p_;