]> git.donarmstrong.com Git - lilypond.git/blob - lily/translator.cc
release: 1.3.142
[lilypond.git] / lily / translator.cc
1 /*
2   translator.cc -- implement Translator
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9
10 #include "translator.hh"
11 #include "debug.hh"
12 #include "translator-group.hh"
13 #include "translator-def.hh"
14
15 #include "moment.hh"
16 #include "ly-smobs.icc"
17
18 char const*
19 Translator::name () const
20 {
21   return classname (this);
22 }
23
24 Translator::~Translator ()
25 {
26 }
27
28 void
29 Translator::init ()
30 {
31   simple_trans_list_ = SCM_EOL;
32   trans_group_list_ = SCM_EOL;
33   properties_scm_ = SCM_EOL;
34   definition_ = SCM_EOL;
35   daddy_trans_l_ =0;
36 }
37
38 Translator::Translator ()
39 {
40   init ();
41   output_def_l_ = 0;
42   smobify_self ();
43
44 }
45
46 Translator::Translator (Translator const &s)
47   : Input (s)
48 {
49   init ();
50   output_def_l_ = s.output_def_l_;
51   type_str_ = s.type_str_;
52
53   smobify_self ();
54 }
55
56 bool
57 Translator::is_alias_b (String s) const
58 {
59   bool b  = s == type_str_;
60
61   for (SCM a = unsmob_translator_def (definition_)->type_aliases_;
62        !b && gh_pair_p (a); a = gh_cdr (a))
63     b = b || s == ly_scm2string (gh_car (a));
64
65   return b;
66 }
67
68 bool
69 Translator::try_music (Music *)
70 {
71   return false;
72 }
73                             
74
75 Moment
76 Translator::now_mom () const
77 {
78   return daddy_trans_l_->now_mom ();
79 }
80
81
82
83
84
85 void
86 Translator::post_move_processing ()
87 {
88   start_translation_timestep ();
89 }
90
91 void
92 Translator::removal_processing ()
93 {
94   finalize ();
95 }
96
97
98 void
99 Translator::announces ()
100 {
101   do_announces ();
102 }
103
104
105 void
106 Translator::pre_move_processing ()
107 {
108   stop_translation_timestep ();
109 }
110
111
112
113 Music_output_def *
114 Translator::output_def_l () const
115 {
116   return output_def_l_;
117 }
118
119 SCM
120 Translator::get_property (char const * id) const
121 {
122   return daddy_trans_l_->get_property (ly_symbol2scm (id));
123 }
124
125 SCM
126 Translator::get_property (SCM sym) const
127 {
128   return daddy_trans_l_->get_property (sym);
129 }
130
131 void
132 Translator:: stop_translation_timestep ()
133 {
134 }
135
136 void
137 Translator::start_translation_timestep ()
138 {
139 }
140
141 void
142 Translator::do_announces ()
143 {
144 }
145
146 void
147 Translator::initialize ()
148 {
149 }
150
151 void
152 Translator::finalize ()
153 {
154 }
155
156
157 /*
158
159   SMOBS
160
161 */
162 SCM
163 Translator::mark_smob (SCM sm)
164 {
165   Translator * me = (Translator*) SCM_CELL_WORD_1 (sm);
166   scm_gc_mark (me->simple_trans_list_);
167   scm_gc_mark (me->trans_group_list_);
168   scm_gc_mark (me->definition_);  
169   scm_gc_mark (me->properties_scm_);  
170
171   return me->properties_scm_;
172 }
173
174
175 int
176 Translator::print_smob (SCM s, SCM port, scm_print_state *)
177 {
178   Translator *sc = (Translator *) gh_cdr (s);
179      
180   scm_puts ("#<Translator ", port);
181   scm_puts ((char *)sc->name (), port);
182   scm_display (sc->simple_trans_list_, port);
183   /*
184     don't try to print properties, that is too much hassle.
185    */
186   scm_puts (" >", port);
187   
188   return 1;
189 }
190
191 IMPLEMENT_UNSMOB (Translator, translator);
192 IMPLEMENT_SMOBS (Translator);
193 IMPLEMENT_DEFAULT_EQUAL_P (Translator);