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>
10 #include "translator.hh"
12 #include "translator-group.hh"
13 #include "translator-def.hh"
16 #include "ly-smobs.icc"
19 Translator::name () const
21 return classname (this);
24 Translator::~Translator ()
31 simple_trans_list_
= SCM_EOL
;
32 trans_group_list_
= SCM_EOL
;
33 properties_scm_
= SCM_EOL
;
34 definition_
= SCM_EOL
;
38 Translator::Translator ()
46 Translator::Translator (Translator
const &s
)
50 output_def_l_
= s
.output_def_l_
;
51 type_str_
= s
.type_str_
;
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
));
69 Translator::try_music (Music
*)
76 Translator::now_mom () const
78 return daddy_trans_l_
->now_mom ();
87 Translator::removal_processing ()
94 Translator::announces ()
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
);
119 Translator:: stop_translation_timestep ()
124 Translator::start_translation_timestep ()
129 Translator::do_announces ()
134 Translator::initialize ()
139 Translator::finalize ()
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
);
178 IMPLEMENT_UNSMOB (Translator
, translator
);
179 IMPLEMENT_SMOBS (Translator
);
180 IMPLEMENT_DEFAULT_EQUAL_P (Translator
);