2 music-output-def.cc -- implement Music_output_def
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "dictionary.hh"
12 #include "music-output-def.hh"
13 #include "global-translator.hh"
14 #include "translator-def.hh"
15 #include "identifier.hh"
17 #include "lily-guile.hh"
20 Music_output_def::get_next_default_count () const
27 Music_output_def::Music_output_def ()
30 translator_p_dict_p_ = new Scope;
33 Music_output_def::~Music_output_def ()
36 delete translator_p_dict_p_;
39 Music_output_def::Music_output_def (Music_output_def const &s)
41 scope_p_ = new Scope (*s.scope_p_);
42 translator_p_dict_p_ = new Scope (*s.translator_p_dict_p_);
46 Music_output_def::assign_translator (SCM transdef)
48 Translator_def *tp = unsmob_translator_def (transdef);
51 String s = ly_scm2string (tp->type_name_);
52 translator_p_dict_p_->set (s, transdef);
56 Music_output_def::find_translator_l (SCM name) const
58 String s = ly_scm2string (name);
61 if (translator_p_dict_p_->elem_b (s))
62 return translator_p_dict_p_->scm_elem (s);
68 Music_output_def::get_global_translator_p ()
70 Translator_def * t = unsmob_translator_def (find_translator_l (gh_str02scm ("Score")));
72 error (_f ("can't find `%s' context", "Score"));
74 Translator_group * tg = t->instantiate (this);
76 tg->add_processing ();
78 return dynamic_cast <Global_translator *> (tg);
84 Music_output_def::get_default_output () const
86 if (safe_global_b || !scope_p_->elem_b ("output"))
88 SCM s = scope_p_->scm_elem ("output");
90 return gh_string_p (s) ? ly_scm2string (s) : String ("");