]> git.donarmstrong.com Git - lilypond.git/blob - src/inputscore.cc
82d7a6c96ab1ef67382f646896cd9ff2121b4f77
[lilypond.git] / src / inputscore.cc
1 /*
2   inputscore.cc -- implement Input_score
3
4   source file of the LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9 #include "debug.hh"
10 #include "inputscore.hh"
11 #include "inputstaff.hh"
12 #include "inputmusic.hh"
13 #include "score.hh"
14 #include "paperdef.hh"
15 #include "mididef.hh"
16 #include "staff.hh"
17
18
19 void
20 Input_score::add(Input_staff*s)
21 {
22     staffs_.bottom().add(s);
23 }
24
25 void
26 Input_score::set(Paperdef*p)
27 {
28     delete paper_p_;
29     paper_p_ = p;
30 }
31
32 void
33 Input_score::set(Mididef* midi_p)
34 {
35     delete midi_p_;
36     midi_p_ = midi_p;
37 }
38  
39 Input_score::Input_score(Input_score const&s)
40 {
41     paper_p_ = (s.paper_p_)? new Paperdef(*s.paper_p_) :0;
42     defined_ch_c_l_ = s.defined_ch_c_l_;
43     errorlevel_i_ = s.errorlevel_i_;
44     score_wide_music_p_ = (s.score_wide_music_p_) ?
45         s.score_wide_music_p_->clone():0;
46 }
47
48 Score*
49 Input_score::parse()
50 {
51     Paperdef* paper_p=new Paperdef(*paper_p_);
52     Score *s_p = new Score(paper_p);
53     s_p->defined_ch_c_l_= defined_ch_c_l_;
54     s_p->errorlevel_i_ = errorlevel_i_;
55     s_p->set(midi_p_);
56     midi_p_ = 0;
57
58     for (iter_top(staffs_,i); i.ok(); i++) {
59         Staff* staf_p=i->parse(s_p, score_wide_music_p_);
60         s_p->add(staf_p);
61     }
62
63     return s_p;
64 }
65
66 void
67 Input_score::set(Input_music *m_p)
68 {
69     delete score_wide_music_p_;
70     score_wide_music_p_ =m_p;    
71 }
72
73
74 Input_score::~Input_score()
75 {
76     delete paper_p_;
77     delete score_wide_music_p_;
78     delete midi_p_;
79 }
80
81 Input_score::Input_score()
82 {
83     score_wide_music_p_ =0;
84     defined_ch_c_l_=0;
85     paper_p_= 0;
86     midi_p_ = 0;
87     errorlevel_i_ = 0;
88 }
89
90 void
91 Input_score::print()const
92 {
93 #ifndef NPRINT
94     mtor << "Input_score {\n";
95     for (iter_top(staffs_,i); i.ok(); i++) {
96         i->print();
97     }
98     mtor << "}\n";
99 #endif
100 }