lilypond-1.3.28
[lilypond.git] / lily / global-translator.cc
blob4993504d7bf8e0c284659714c19e533d3026f723
1 /*
2 global-translator.cc -- implement Global_translator
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
9 #include "global-translator.hh"
10 #include "music-iterator.hh"
11 #include "debug.hh"
13 Global_translator::Global_translator()
17 void
18 Global_translator::add_moment_to_process (Moment m)
20 if (m > final_mom_)
21 return;
23 if (m < now_mom_ )
24 programming_error ("Trying to freeze in time.");
26 for (int i=0; i < extra_mom_pq_.size(); i++)
27 if (extra_mom_pq_[i] == m)
28 return;
29 extra_mom_pq_.insert (m);
32 void
33 Global_translator::modify_next (Moment &w)
35 while (extra_mom_pq_.size() &&
36 extra_mom_pq_.front() <= w)
38 w =extra_mom_pq_.get();
41 int
42 Global_translator::moments_left_i() const
44 return extra_mom_pq_.size();
47 void
48 Global_translator::prepare (Moment m)
50 prev_mom_ = now_mom_;
51 now_mom_ = m;
54 Moment
55 Global_translator::now_mom () const
57 return now_mom_;
62 Music_output*
63 Global_translator::get_output_p()
65 return 0;
68 void
69 Global_translator::process ()
72 void
73 Global_translator::start ()
76 void
77 Global_translator::finish ()
81 void
82 Global_translator::run_iterator_on_me (Music_iterator * iter)
84 while (iter->ok() || moments_left_i ())
86 Moment w;
87 w.set_infinite (1);
88 if (iter->ok())
90 w = iter->next_moment();
91 DEBUG_OUT << "proccing: " << w << '\n';
92 if (flower_dstream && !flower_dstream->silent_b ("walking"))
93 iter->print();
96 modify_next (w);
97 prepare (w);
99 if (flower_dstream && !flower_dstream->silent_b ("walking"))
100 print();
102 iter->process_and_next (w);
103 process();