lilypond-1.3.147
[lilypond.git] / lily / translator.cc
blob03adb249f91a22bb4065e746183fab71e21248e4
1 /*
2 translator.cc -- implement Translator
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
10 #include "translator.hh"
11 #include "debug.hh"
12 #include "translator-group.hh"
13 #include "translator-def.hh"
15 #include "moment.hh"
16 #include "ly-smobs.icc"
18 char const*
19 Translator::name () const
21 return classname (this);
24 Translator::~Translator ()
28 void
29 Translator::init ()
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;
38 Translator::Translator ()
40 init ();
41 output_def_l_ = 0;
42 smobify_self ();
46 Translator::Translator (Translator const &s)
47 : Input (s)
49 init ();
50 output_def_l_ = s.output_def_l_;
51 type_str_ = s.type_str_;
53 smobify_self ();
56 bool
57 Translator::is_alias_b (String s) const
59 bool b = s == type_str_;
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));
65 return b;
68 bool
69 Translator::try_music (Music *)
71 return false;
75 Moment
76 Translator::now_mom () const
78 return daddy_trans_l_->now_mom ();
86 void
87 Translator::removal_processing ()
89 finalize ();
93 void
94 Translator::announces ()
96 do_announces ();
100 Music_output_def *
101 Translator::output_def_l () const
103 return output_def_l_;
107 Translator::get_property (char const * id) const
109 return daddy_trans_l_->get_property (ly_symbol2scm (id));
113 Translator::get_property (SCM sym) const
115 return daddy_trans_l_->get_property (sym);
118 void
119 Translator:: stop_translation_timestep ()
123 void
124 Translator::start_translation_timestep ()
128 void
129 Translator::do_announces ()
133 void
134 Translator::initialize ()
138 void
139 Translator::finalize ()
146 SMOBS
150 Translator::mark_smob (SCM sm)
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_);
158 return me->properties_scm_;
163 Translator::print_smob (SCM s, SCM port, scm_print_state *)
165 Translator *sc = (Translator *) gh_cdr (s);
167 scm_puts ("#<Translator ", port);
168 scm_puts ((char *)sc->name (), port);
169 scm_display (sc->simple_trans_list_, port);
171 don't try to print properties, that is too much hassle.
173 scm_puts (" >", port);
175 return 1;
178 IMPLEMENT_UNSMOB (Translator, translator);
179 IMPLEMENT_SMOBS (Translator);
180 IMPLEMENT_DEFAULT_EQUAL_P (Translator);