lilypond-0.1.14
[lilypond.git] / lily / translator.cc
blob636123a950d32420ad9d1c51a29863303663cc28
1 /*
2 translator.cc -- implement Translator
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
10 #include "translator.hh"
11 #include "debug.hh"
12 #include "translator-group.hh"
13 #include "dictionary-iter.hh"
15 Translator::~Translator ()
19 Translator::Translator ()
21 status = ORPHAN;
22 daddy_trans_l_ = 0;
23 output_def_l_ = 0;
26 Translator::Translator (Translator const &s)
28 status = ORPHAN;
29 daddy_trans_l_ =0;
30 output_def_l_ = s.output_def_l_;
31 properties_dict_ = s.properties_dict_;
32 type_str_ = s.type_str_;
35 bool
36 Translator::is_alias_b (String s) const
38 return s == type_str_;
41 bool
42 Translator::do_try_request (Request *)
44 return false;
48 Moment
49 Translator::now_moment () const
51 return daddy_trans_l_->now_moment ();
55 void
56 Translator::add_processing ()
58 if (status == ORPHAN)
59 status = VIRGIN;
62 void
63 Translator::print () const
65 #ifndef NPRINT
66 DOUT << name () << " {";
67 if (name () != type_str_)
68 DOUT << "type= " << type_str_;
69 for (Dictionary_iter<Scalar> i (properties_dict_); i.ok (); i++)
71 DOUT << i.key () << "=" << i.val () <<"\n";
73 do_print ();
74 DOUT << "}\n";
75 #endif
78 void
79 Translator::do_print () const
83 IMPLEMENT_IS_TYPE_B(Translator);
86 void
87 Translator::creation_processing ()
89 if (status >= CREATION_INITED)
90 return ;
92 do_creation_processing ();
93 status = CREATION_INITED;
96 void
97 Translator::post_move_processing()
99 if (status >= MOVE_INITED)
100 return;
102 creation_processing();
103 do_post_move_processing();
104 status = MOVE_INITED;
107 void
108 Translator::removal_processing()
110 creation_processing();
111 do_removal_processing();
115 bool
116 Translator::try_request (Request * r)
118 if (status < MOVE_INITED)
119 post_move_processing();
121 return do_try_request (r);
124 void
125 Translator::process_requests()
127 if (status < PROCESSED_REQS)
128 post_move_processing();
129 else if (status >= PROCESSED_REQS)
130 return;
132 status = PROCESSED_REQS;
133 do_process_requests();
136 void
137 Translator::pre_move_processing()
139 do_pre_move_processing();
140 status = CREATION_INITED;
143 Scalar
144 Translator::get_property (String id)
146 if (properties_dict_.elt_b (id))
148 return properties_dict_[id];
151 if (daddy_trans_l_)
152 return daddy_trans_l_->get_property (id);
154 return "";
157 void
158 Translator::set_property (String id, Scalar val)
160 properties_dict_[id] = val;
164 Music_output_def *
165 Translator::output_def_l () const
167 return output_def_l_;