]> git.donarmstrong.com Git - lilypond.git/blob - lily/music-output-def.cc
2e9a28786339227261492cd3f373106d97777290
[lilypond.git] / lily / music-output-def.cc
1 /*
2   music-output-def.cc -- implement Music_output_def
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #include "debug.hh"
11 #include "music-output-def.hh"
12 #include "global-translator.hh"
13 #include "dictionary-iter.hh"
14
15 int
16 Music_output_def::get_next_default_count () const
17 {
18   return 0;
19 }
20
21 IMPLEMENT_IS_TYPE_B(Music_output_def);
22
23 Music_output_def::Music_output_def ()
24 {
25 }
26
27 Music_output_def::~Music_output_def ()
28 {
29   for (Dictionary_iter<Translator*> i (translator_p_dict_); i.ok (); i++)
30     delete i.val ();
31 }
32
33 Music_output_def::Music_output_def (Music_output_def const &s)
34 {
35   outfile_str_ = s.outfile_str_;
36   for (Dictionary_iter<Translator*> i (s.translator_p_dict_); i.ok (); i++)
37     assign_translator (i.key (), i.val ()->clone ());
38 }
39
40 Translator*
41 Music_output_def::find_translator_l (String name) const
42 {
43   if (translator_p_dict_.elt_b (name))
44     return translator_p_dict_[name];
45
46   if (global_translator_dict_p->elt_b (name))
47     return (*global_translator_dict_p)[name];
48
49   return 0;
50 }
51
52
53 Global_translator *
54 Music_output_def::get_global_translator_p () 
55 {
56   Translator * t = find_translator_l ("Score")->clone ();
57   Global_translator *g = t->group_l ()->global_l ();
58   t->add_processing ();
59   
60   return g;
61 }
62
63
64 void
65 Music_output_def::assign_translator (String s, Translator*t)
66 {
67   t->type_str_ = s;
68   t->output_def_l_ = this;
69   
70   if (translator_p_dict_.elt_b (s))
71     delete translator_p_dict_[s];
72   translator_p_dict_[s] = t;
73 }
74
75 void
76 Music_output_def::print () const
77 {
78 #ifndef NPRINT
79   for (Dictionary_iter<Translator*> i (translator_p_dict_); i.ok (); i++)
80     {
81       DOUT << i.key () << " = ";
82       i.val ()->print ();
83     }
84   DOUT << "output: " << outfile_str_;
85 #endif
86 }