]> git.donarmstrong.com Git - lilypond.git/blob - lily/translator.cc
patch::: 1.3.141.hwn3: Re: Sugar
[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
86 void
87 Translator::removal_processing ()
88 {
89   finalize ();
90 }
91
92
93 void
94 Translator::announces ()
95 {
96   do_announces ();
97 }
98
99
100 Music_output_def *
101 Translator::output_def_l () const
102 {
103   return output_def_l_;
104 }
105
106 SCM
107 Translator::get_property (char const * id) const
108 {
109   return daddy_trans_l_->get_property (ly_symbol2scm (id));
110 }
111
112 SCM
113 Translator::get_property (SCM sym) const
114 {
115   return daddy_trans_l_->get_property (sym);
116 }
117
118 void
119 Translator:: stop_translation_timestep ()
120 {
121 }
122
123 void
124 Translator::start_translation_timestep ()
125 {
126 }
127
128 void
129 Translator::do_announces ()
130 {
131 }
132
133 void
134 Translator::initialize ()
135 {
136 }
137
138 void
139 Translator::finalize ()
140 {
141 }
142
143
144 /*
145
146   SMOBS
147
148 */
149 SCM
150 Translator::mark_smob (SCM sm)
151 {
152   Translator * me = (Translator*) SCM_CELL_WORD_1 (sm);
153   scm_gc_mark (me->simple_trans_list_);
154   scm_gc_mark (me->trans_group_list_);
155   scm_gc_mark (me->definition_);  
156   scm_gc_mark (me->properties_scm_);  
157
158   return me->properties_scm_;
159 }
160
161
162 int
163 Translator::print_smob (SCM s, SCM port, scm_print_state *)
164 {
165   Translator *sc = (Translator *) gh_cdr (s);
166      
167   scm_puts ("#<Translator ", port);
168   scm_puts ((char *)sc->name (), port);
169   scm_display (sc->simple_trans_list_, port);
170   /*
171     don't try to print properties, that is too much hassle.
172    */
173   scm_puts (" >", port);
174   
175   return 1;
176 }
177
178 IMPLEMENT_UNSMOB (Translator, translator);
179 IMPLEMENT_SMOBS (Translator);
180 IMPLEMENT_DEFAULT_EQUAL_P (Translator);