]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/include/context.hh (class Context): make members protected.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 11 Apr 2004 23:43:10 +0000 (23:43 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 11 Apr 2004 23:43:10 +0000 (23:43 +0000)
(children_contexts): new accessor function.

* lily/include/translator.hh (class Translator): make
daddy_context_ protected.
(class Translator): clean up.

* lily/include/context.hh (class Context): make daddy_context_
private.

* lily/lyric-engraver.cc (get_voice_to_lyrics): recursively go
higher for finding Voice. (backportme)

* lily/include/context.hh (class Context): remove
find_context_below() as a method.

* Documentation/user/notation.itely (The Lyrics context): add note
about manual durations

* ly/chord-modifiers-init.ly (blackTriangleMarkup): use TeX-math
encoding.

* scm/output-tex.scm (text): dump \inputencoding{} for text.

61 files changed:
ChangeLog
Documentation/user/notation.itely
lily/accidental-engraver.cc
lily/audio-element-info.cc
lily/auto-beam-engraver.cc
lily/auto-change-iterator.cc
lily/axis-group-engraver.cc
lily/beam-engraver.cc
lily/beam-performer.cc
lily/change-iterator.cc
lily/chord-name-engraver.cc
lily/clef-engraver.cc
lily/context-def.cc
lily/context-scheme.cc
lily/context.cc
lily/drum-note-engraver.cc
lily/dynamic-engraver.cc
lily/engraver-group-engraver.cc
lily/extender-engraver.cc
lily/figured-bass-engraver.cc
lily/font-size-engraver.cc
lily/grob-info.cc
lily/grob-pq-engraver.cc
lily/include/context.hh
lily/include/engraver.hh
lily/include/translator.hh
lily/instrument-name-engraver.cc
lily/key-engraver.cc
lily/ligature-engraver.cc
lily/lyric-engraver.cc
lily/mark-engraver.cc
lily/melisma-translator.cc
lily/metronome-engraver.cc
lily/music-iterator.cc
lily/new-fingering-engraver.cc
lily/new-lyric-combine-music-iterator.cc
lily/note-head-line-engraver.cc
lily/output-property-engraver.cc
lily/performer-group-performer.cc
lily/recording-group-engraver.cc
lily/repeat-acknowledge-engraver.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/script-engraver.cc
lily/separating-line-group-engraver.cc
lily/simultaneous-music-iterator.cc
lily/slur-engraver.cc
lily/slur-performer.cc
lily/staff-collecting-engraver.cc
lily/staff-performer.cc
lily/stem-engraver.cc
lily/system-start-delimiter-engraver.cc
lily/tie-engraver.cc
lily/tie-performer.cc
lily/timing-engraver.cc
lily/timing-translator.cc
lily/translator-group.cc
lily/translator-property.cc
ly/chord-modifiers-init.ly
make/lilypond.redhat.spec.in
scm/output-tex.scm

index 40b9e3b3171ace319a1eff6292bde25b395596dc..4f4b9c5950ce6dd6a6384498618ac4620fe61b20 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,27 @@
 2004-04-12  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
+       * lily/include/context.hh (class Context): make members protected.
+       (children_contexts): new accessor function.
+
+       * lily/include/translator.hh (class Translator): make
+       daddy_context_ protected.
+       (class Translator): clean up. 
+
+       * lily/include/context.hh (class Context): make daddy_context_
+       private.
+
+       * lily/lyric-engraver.cc (get_voice_to_lyrics): recursively go
+       higher for finding Voice. (backportme)  
+
+       * lily/include/context.hh (class Context): remove
+       find_context_below() as a method.
+
+       * Documentation/user/notation.itely (The Lyrics context): add note
+       about manual durations
+
+       * ly/chord-modifiers-init.ly (blackTriangleMarkup): use TeX-math
+       encoding.
+
        * scm/output-tex.scm (text): dump \inputencoding{} for text.
 
 2004-04-11  Han-Wen Nienhuys   <hanwen@xs4all.nl>
index 022baccb4c0d79658f2e56c510a87331154b31ab..ec8499d4b607e5b2385fde1fc4421a9f4ee250a3 100644 (file)
@@ -3466,6 +3466,36 @@ be tuned with the property @code{melismaBusyProperties}. See
 @internalsref{Melisma_translator} in the program reference for more
 information.
 
+Lyrics can also be entered without @code{\lyricsto}. In this case the
+durations of each syllable must be entered explicitly, for example,
+
+@verbatim
+  play2 the4 game2.
+  sink2 or4 swim2.  
+@end verbatim
+
+Alignment to a melody can be specified with the @code{associatedVoice}
+property,
+
+@verbatim
+  \set associatedVoice = #"melody"
+@end verbatim 
+
+Here is an example demonstrating manual lyric durations,
+
+@lilypond[relative=1,verbatim,fragment]
+<< \context Voice = melody {
+     c2 e4 g2.
+  } 
+  \new Lyrics \lyrics {
+    \set associatedVoice = #"melody"
+    play2 the4 game2.
+  }  >>
+@end lilypond
+
+
+
+
 When multiple stanzas are put on the same melody, it can happen that
 two stanzas have melismata in different locations. This can be
 remedied by switching off melismata for one
index 7d19220de4dfbe907399744df59e277c9c5f606a..4d86929756ecc9ba41865f3ae0fb068f42f76cc8 100644 (file)
@@ -73,7 +73,7 @@ static void
 set_property_on_children (Context * trans, const char * sym, SCM val)
 {
   trans->set_property (sym, val);
-  for (SCM p = trans->context_list_; is_pair (p); p = ly_cdr (p))
+  for (SCM p = trans->children_contexts (); is_pair (p); p = ly_cdr (p))
     {
       Context *trg =  unsmob_context (ly_car (p));
       set_property_on_children (trg, sym, ly_deep_copy (val));
@@ -91,14 +91,14 @@ Accidental_engraver::initialize ()
 {
   last_keysig_ = get_property ("keySignature");
 
-  Context * trans_ = daddy_context_;
+  Context * trans_ = get_parent_context ();
   while (trans_)
     {
       trans_ -> set_property ("localKeySignature",
                              ly_deep_copy (last_keysig_));
-      trans_ = trans_->daddy_context_;
+      trans_ = trans_->get_parent_context ();
     }
-  set_property_on_children (daddy_context_,"localKeySignature", last_keysig_);
+  set_property_on_children (get_parent_context (),"localKeySignature", last_keysig_);
 }
 
 /*
@@ -203,7 +203,7 @@ number_accidentals (bool *different,
        {
          Context * dad = origin;
          while (dad && !dad->is_alias (rule))
-           dad = dad->daddy_context_;
+           dad = dad->get_parent_context ();
       
          if (dad)
            origin = dad;
@@ -411,7 +411,7 @@ Accidental_engraver::stop_translation_timestep ()
 
          if (change)
            origin->set_property ("localKeySignature",  localsig);
-         origin = origin->daddy_context_;
+         origin = origin->get_parent_context ();
        }
     }
   
@@ -447,7 +447,7 @@ Accidental_engraver::acknowledge_grob (Grob_info info)
          
          Accidental_entry entry ;
          entry.head_ = info.grob_;
-         entry.origin_ = info.origin_trans_->daddy_context_;
+         entry.origin_ = info.origin_trans_->get_parent_context ();
          entry.melodic_ = note;
 
          accidentals_.push (entry);
@@ -477,13 +477,13 @@ Accidental_engraver::process_music ()
   */
   if (last_keysig_ != sig)
     {
-      Context * trans_ = daddy_context_;
+      Context * trans_ = get_parent_context ();
       while (trans_)
        {
          trans_ -> set_property ("localKeySignature",  ly_deep_copy (sig));
-         trans_ = trans_->daddy_context_;
+         trans_ = trans_->get_parent_context ();
        }
-      set_property_on_children (daddy_context_,"localKeySignature", sig);
+      set_property_on_children (get_parent_context (),"localKeySignature", sig);
 
       last_keysig_ = sig;
     }
index a2bf63233a237bbd4ae8cf8098daacef7b0ba423..76ec0f603014625a91de49ef0e887265587f4185 100644 (file)
@@ -29,12 +29,12 @@ Audio_element_info::Audio_element_info ()
 Link_array<Context>
 Audio_element_info::origin_contexts (Translator* end) const
 {
-  Context * t = origin_trans_->daddy_context_;
+  Context * t = origin_trans_->get_parent_context ();
   Link_array<Context> r;
   do {
     r.push (t);
-    t = t->daddy_context_;
-  } while (t && t != end->daddy_context_);
+    t = t->get_parent_context ();
+  } while (t && t != end->get_parent_context ());
   
   return r;
 }
index c5b3a4641a32bdea2d059610e3d552281730e0b8..0f9f4143908e8447797f8e8c7188a048af2cd1a5 100644 (file)
@@ -300,7 +300,7 @@ Auto_beam_engraver::begin_beam ()
   
   stems_ = new Link_array<Item>;
   grouping_ = new Beaming_info_list;
-  beam_settings_ = updated_grob_properties (daddy_context_, ly_symbol2scm ("Beam"));
+  beam_settings_ = updated_grob_properties (get_parent_context (), ly_symbol2scm ("Beam"));
   
   beam_start_moment_ = now_mom ();
   beam_start_location_ = *unsmob_moment (get_property ("measurePosition"));
index 365d0cfbcae5dce972610658dd8ee06586b5407e..3ab3f6b427ff1bbf2e34d220f63d17b897b87f5d 100644 (file)
@@ -53,7 +53,7 @@ Auto_change_iterator::change_to (Music_iterator *it, SCM to_type_sym,
   while (current && !current->is_alias (to_type_sym))
     {
       last = current;
-      current = current->daddy_context_;
+      current = current->get_parent_context ();
     }
 
   if (current && current->id_string_ == to_id)
index 8e404c150ef4d0b50927098d187915b819193c03..4b1cf29bc6a1fe740c5028de6f6e6a33848bf7d1 100644 (file)
@@ -69,7 +69,7 @@ Axis_group_engraver::finalize ()
   if (!staffline_)
     return ;
   
-  String type = daddy_context_->context_name ();
+  String type = get_parent_context ()->context_name ();
   SCM dims = get_property ("verticalExtent");
   
   if (is_number_pair (dims))
index e810b7052d1086d67a54085e64007713d8b42405..4305aa2191a1a26205e3174b52140b6271cc7c28 100644 (file)
@@ -121,7 +121,7 @@ Beam_engraver::set_melisma (bool ml)
 {
   SCM b = get_property ("autoBeaming");
   if (!to_boolean (b))
-    daddy_context_->set_property ("beamMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
+    get_parent_context ()->set_property ("beamMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
 }
 
 void
index 868397641fba0906c1576f070fd94971ce647a9f..1767f4f5b2e05555879d3d32855c4953a6017c1a 100644 (file)
@@ -57,7 +57,7 @@ Beam_performer::set_melisma (bool ml)
 {
   SCM b = get_property ("autoBeaming");
   if (!to_boolean (b))
-    daddy_context_->set_property ("beamMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
+    get_parent_context ()->set_property ("beamMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
 }
 
 void
index aa03614babe8b8afa051086ea1dff54e1b95f6f4..771be9b983a6694f53a5ad230176e0ba9c6a5674 100644 (file)
@@ -52,7 +52,7 @@ Change_iterator::process (Moment m)
   while (current && !current->is_alias (to_type))
     {
       last = current;
-      current = current->daddy_context_;
+      current = current->get_parent_context ();
     }
 
   if (current && current->id_string_ == to_id)
@@ -68,8 +68,8 @@ Change_iterator::process (Moment m)
        Context * where = get_outlet ();
        while (!dest && where)
          {
-           dest = where->find_context_below (to_type, to_id);
-           where = where->daddy_context_;
+           dest = find_context_below (where, to_type, to_id);
+           where = where->get_parent_context ();
          }
        
        if (dest)
index 3db792dbe174c3223c7c51a3114bf765d0b822fd..6f3c3e33d7f88e0cb5cf447b112575bf2760f6b8 100644 (file)
@@ -102,7 +102,7 @@ Chord_name_engraver::process_music ()
 
   SCM name_proc = get_property ("chordNameFunction");
   SCM markup = scm_call_4 (name_proc, pitches, bass, inversion,
-                          daddy_context_->self_scm ());
+                          get_parent_context ()->self_scm ());
 
   /*
     Ugh. 
index 40c009f00b516d492d1fb109e0d77489f252af33..46a21080126ab93f707199da18b3e38dcbd3afec 100644 (file)
@@ -61,8 +61,8 @@ Clef_engraver::set_glyph ()
 
   SCM basic = ly_symbol2scm ("Clef");
   
-  execute_pushpop_property (daddy_context_, basic, glyph_sym, SCM_UNDEFINED);
-  execute_pushpop_property (daddy_context_, basic, glyph_sym, glyph);
+  execute_pushpop_property (get_parent_context (), basic, glyph_sym, SCM_UNDEFINED);
+  execute_pushpop_property (get_parent_context (), basic, glyph_sym, glyph);
 }
 
 /** 
@@ -152,7 +152,7 @@ Clef_engraver::inspect_clef_properties ()
 
   if (to_boolean (force_clef))
     {
-      Context * w = daddy_context_->where_defined (ly_symbol2scm ("forceClef"));
+      Context * w = get_parent_context ()->where_defined (ly_symbol2scm ("forceClef"));
       w->set_property ("forceClef", SCM_EOL);
     }
 }
index db674808ab592696f15d5a525632f35c5aad6485..72d13e6276643c614d5323d91c410771443df29d 100644 (file)
@@ -307,7 +307,25 @@ Context_def::instantiate (SCM ops)
   Translator * g = get_translator (translator_group_type_);
   g = g->clone ();
   
-  g->simple_trans_list_ = names_to_translators (trans_names, tg);
+  g->simple_trans_list_ =  SCM_EOL;
+
+  for (SCM s = trans_names; is_pair (s) ; s = ly_cdr (s))
+    {
+      Translator * t = get_translator (ly_car (s));
+      if (!t)
+       warning (_f ("can't find: `%s'", s));
+      else
+       {
+         Translator * tr = t->clone ();
+         SCM str = tr->self_scm ();
+         g->simple_trans_list_ = scm_cons (str, g->simple_trans_list_);
+         tr->daddy_context_ = tg;
+         scm_gc_unprotect_object (str);
+       }
+    }
+
+
+  
   tg->implementation_ = g->self_scm ();
   if (dynamic_cast<Engraver*> (g))
     g->simple_trans_list_ = filter_performers (g->simple_trans_list_);
index 0852958727b058b646321557fe8941b8ffee634b..1de64aef27ceeeaf19c1f95cd992a3ab6c94895e 100644 (file)
@@ -30,7 +30,7 @@ LY_DEFINE (ly_context_name, "ly:context-name",
 {
   Context *tr = unsmob_context (context);
   SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
-  return unsmob_context_def (tr->definition_)->get_context_name (); 
+  return ly_symbol2scm (tr->context_name ().to_str0 ()); 
 }
 
 LY_DEFINE (is_contextushpop_property, "ly:context-pushpop-property",
@@ -111,7 +111,7 @@ LY_DEFINE (is_contextarent, "ly:context-parent",
   Context *tr = unsmob_context (context);
   SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
 
-  tr = tr->daddy_context_ ;
+  tr = tr->get_parent_context () ;
   if (tr)
     return tr->self_scm ();
   else
@@ -132,7 +132,7 @@ LY_DEFINE (ly_context_find, "ly:context-find",
     {
       if (tr->is_alias (name))
        return tr->self_scm ();
-      tr =  tr->daddy_context_ ;
+      tr =  tr->get_parent_context () ;
     }
   
   return SCM_BOOL_F;
index 43e919a3927ab6fd7d42f27558f92bd6d2b549b5..bbd12474322d3f2addd4f7dbb0026abcf074bf81 100644 (file)
@@ -95,22 +95,6 @@ Context::Context ()
   scm_gc_unprotect_object (properties_scm_);
 }
 
-Context *
-Context::find_context_below (SCM n, String id)
-{
-  if ((is_alias (n) && (id_string_ == id || id.is_empty ())))
-    return this;
-
-  Context* r = 0;
-  for (SCM p = context_list_; !r && is_pair (p); p = ly_cdr (p))
-    {
-      Context *  t = unsmob_context (ly_car (p));
-      
-      r = dynamic_cast<Context*> (t)->find_context_below (n, id);
-    }
-
-  return r;
-}
 
 
 Context*
@@ -125,7 +109,7 @@ Context::find_create_context (SCM n, String id,
     return get_score_context ()->find_create_context (n, id, operations);
     
   
-  Context * existing = find_context_below (n,id);
+  Context * existing = find_context_below (this, n,id);
   if (existing)
     return existing;
 
@@ -189,10 +173,10 @@ Context::find_create_context (SCM n, String id,
   none.
 */
 SCM
-default_child_context_name (Context const *tg)
+Context::default_child_context_name () const
 {
-  return is_pair (tg->accepts_list_)
-    ? ly_car (scm_last_pair (tg->accepts_list_))
+  return is_pair (accepts_list_)
+    ? ly_car (scm_last_pair (accepts_list_))
     : SCM_EOL;
 }
 
@@ -200,7 +184,7 @@ default_child_context_name (Context const *tg)
 bool
 Context::is_bottom_context () const
 {
-  return !is_symbol (default_child_context_name (this));
+  return !is_symbol (default_child_context_name ());
 }
 
 Context*
@@ -208,7 +192,7 @@ Context::get_default_interpreter ()
 {
   if (!is_bottom_context ())
     {
-      SCM nm = default_child_context_name (this);
+      SCM nm = default_child_context_name ();
       SCM st = get_output_def ()->find_context_def (nm);
 
       Context_def *t = unsmob_context_def (st);
@@ -315,7 +299,7 @@ Context::remove_context (Context*trans)
  */
 Context *
 find_context_below (Context * where,
-                   String type, String id)
+                   SCM type, String id)
 {
   if (where->is_alias (ly_symbol2scm (type.to_str0 ())))
     {
@@ -324,7 +308,7 @@ find_context_below (Context * where,
     }
   
   Context * found = 0;
-  for (SCM s = where->context_list_;
+  for (SCM s = where->children_contexts ();
        !found && is_pair (s); s = ly_cdr (s))
     {
       Context * tr = unsmob_context (ly_car (s));
@@ -452,3 +436,9 @@ Context::get_global_context () const
   programming_error ("No Global context!");
   return 0;
 }
+
+Context*
+Context::get_parent_context () const
+{
+  return daddy_context_;
+}
index 3663ab0c414e7deb2dada55d53ae2fe7fcf89d94..7437d08b5f0e556cc57fb6d470a49488528e17bb 100644 (file)
@@ -106,7 +106,7 @@ Drum_notes_engraver::process_music ()
              Item *p  = make_item ("Script");
              SCM desc  = SCM_EOL;
              make_script_from_event (p, &desc,
-                                     daddy_context_, script,
+                                     get_parent_context (), script,
                                      0);
 
              if (p->get_property ("follow-into-staff"))
index 3e947e36f2b06d8c0238bdb536c6f6ae7e20de34..0e6573db9238ebba53da18fc1f686591efd2d3fe 100644 (file)
@@ -239,7 +239,7 @@ Dynamic_engraver::process_music ()
            {
              cresc_  = make_spanner ("TextSpanner");
              cresc_->set_property ("style", s);
-             daddy_context_->set_property ((start_type
+             get_parent_context ()->set_property ((start_type
                                            + "Spanner").to_str0 (), SCM_EOL);
              s = get_property ((start_type + "Text").to_str0 ());
              /*
@@ -249,7 +249,7 @@ Dynamic_engraver::process_music ()
                {
                  cresc_->set_property ("edge-text",
                                             scm_cons (s, scm_makfrom0str ("")));
-                 daddy_context_->set_property ((start_type + "Text").to_str0 (),
+                 get_parent_context ()->set_property ((start_type + "Text").to_str0 (),
                                                SCM_EOL);
                }
            }
index 0f30f31e25da0ceb46b127d381c0391e431da487..057cd0d22ced707488b9c79bda921dc3c370d565 100644 (file)
@@ -101,7 +101,7 @@ void
 Engraver_group_engraver::initialize ()
 {
   SCM tab = scm_make_vector (scm_int2num (61), SCM_BOOL_F);
-  daddy_context_->set_property ("acknowledgeHashTable", tab);
+  get_parent_context ()->set_property ("acknowledgeHashTable", tab);
 
   Translator_group::initialize ();
 }
@@ -168,7 +168,7 @@ recurse_down_engravers (Context * c, Engraver_method ptr, bool context_first)
       (tg->*ptr) ();
     }
 
-  for (SCM s = c->context_list_ ; is_pair (s);
+  for (SCM s = c->children_contexts () ; is_pair (s);
        s =ly_cdr (s))
     {
       recurse_down_engravers (unsmob_context (ly_car (s)), ptr, context_first);
index 67388c0c141abfeb9ecbf03be90d43441f696cef..e90cc50c1d8c9114d4411396db610113d77c12ab 100644 (file)
@@ -92,7 +92,7 @@ Extender_engraver::stop_translation_timestep ()
 
   if (extender_ || pending_extender_)
     {
-      Context *voice = get_voice_to_lyrics (daddy_context_);
+      Context *voice = get_voice_to_lyrics (get_parent_context ());
       Grob* h =  (voice) ? get_current_note_head (voice) : 0;
 
       if (h)
index 62c761bfa0e1f632b56ab51b9689aaf4a765dbd1..23eeac32204a7b5106a332796cfec25d583b8fb8 100644 (file)
@@ -85,7 +85,7 @@ Figured_bass_engraver::process_music ()
              t = SCM_CDRLOC (*t);
            }
          figure_ = make_item ("BassFigure");
-         scm_call_3 (proc, l, daddy_context_->self_scm (),
+         scm_call_3 (proc, l, get_parent_context ()->self_scm (),
                      figure_->self_scm ());
          announce_grob (figure_, figures_[0]->self_scm ()); // todo
        }
index 659dba6630d39d517490732360d70b6b32b35ebc..96846d0d181fa9597156a4d01c9ab1079a74b81d 100644 (file)
@@ -33,7 +33,7 @@ Font_size_engraver::acknowledge_grob (Grob_info gi)
   /*
     We only want to process a grob once.
    */
-  if (gi.origin_trans_->daddy_context_ != daddy_context_)
+  if (gi.origin_trans_->get_parent_context () != get_parent_context ())
     return ;
   
   if (is_number (sz) && ly_scm2double (sz))
index 809fdd54a4c3c17b7cc7e7d4cfd98034da3ed8ca..d56cd46862b3f1a7cd261d23f27473cc052062ed 100644 (file)
@@ -28,12 +28,12 @@ Grob_info::music_cause ()
 Link_array<Context>
 Grob_info::origin_contexts (Translator* end) const
 {
-  Context * t = origin_trans_->daddy_context_;
+  Context * t = origin_trans_->get_parent_context ();
   Link_array<Context> r;
   do {
     r.push (t);
-    t = t->daddy_context_;
-  } while (t && t != end->daddy_context_);
+    t = t->get_parent_context ();
+  } while (t && t != end->get_parent_context ());
   
   return r;
 }
index 41a3dc3dfe2d350689846e984694305750eb74bc..f83866ac4c18b33ed0665640e8fba27ea372b6a9 100644 (file)
@@ -30,7 +30,7 @@ Grob_pq_engraver::Grob_pq_engraver ()
 void
 Grob_pq_engraver::initialize ()
 {
-  daddy_context_->set_property ("busyGrobs", SCM_EOL); 
+  get_parent_context ()->set_property ("busyGrobs", SCM_EOL); 
 }
 
 LY_DEFINE (ly_grob_pq_less_p, "ly:grob-pq-less?",
@@ -71,7 +71,7 @@ Grob_pq_engraver::acknowledge_grob (Grob_info gi)
 
       SCM busy= get_property ("busyGrobs");
       busy = scm_merge_x (lst, busy, ly_grob_pq_less_p_proc);
-      daddy_context_->set_property ("busyGrobs", busy);
+      get_parent_context ()->set_property ("busyGrobs", busy);
     }
 }
 
@@ -88,7 +88,7 @@ Grob_pq_engraver::stop_translation_timestep ()
     }
 
   if (start_busy != busy)
-    daddy_context_->set_property ("busyGrobs", busy);
+    get_parent_context ()->set_property ("busyGrobs", busy);
 }
 
 void
@@ -108,7 +108,7 @@ Grob_pq_engraver::start_translation_timestep ()
     }
 
   if (start_busy != busy)
-    daddy_context_->set_property ("busyGrobs", busy);
+    get_parent_context ()->set_property ("busyGrobs", busy);
 }
 
 
index 004f68fdba88eeaedb921ac37da81e823087f660..55a4671eaa5d9a269ec39e954f5cafdd89acc09e 100644 (file)
@@ -21,14 +21,21 @@ class Context
   DECLARE_SMOBS (Context, dummy);
 
   void terminate ();
-public:
+
+protected:
+  Context * daddy_context_;
   SCM definition_;
   SCM properties_scm_;
   SCM context_list_;
   SCM accepts_list_;
   SCM aliases_;
 
-  Context * daddy_context_;
+  friend class Context_def;
+public:
+  SCM children_contexts () const { return context_list_; }
+  SCM default_child_context_name () const;
+
+  Context * get_parent_context () const;
   
   Context ();
   void execute_pushpop_property (SCM prop, SCM sym, SCM val);
@@ -55,9 +62,8 @@ public:
   
   virtual Music_output_def *get_output_def () const;
   virtual Moment now_mom () const;
-  Context *find_context_below (SCM context_name, String id);
   Context *find_create_context (SCM context_name,
-                                           String id, SCM ops);
+                               String id, SCM ops);
   Link_array<Context> path_to_acceptable_context (SCM alias,
                                                  Music_output_def*) const;
   virtual Context *get_default_interpreter ();
@@ -78,7 +84,7 @@ void apply_property_operations (Context*tg, SCM pre_init_ops);
 void execute_pushpop_property (Context * trg, SCM prop, SCM eltprop, SCM val);
 SCM updated_grob_properties (Context* tg, SCM sym);
 Context * find_context_below (Context * where,
-                   String type, String id);
+                             SCM type_sym, String id);
 bool melisma_busy (Context*);
 
 Context *get_voice_to_lyrics (Context *lyrics);
index 76f2a122bfb897dcc14c3ab06fa2e32ac404a5e1..de0c4e9a64267ea9fbb889da29f5df35f7e2cd81 100644 (file)
@@ -57,8 +57,8 @@ public:
   TRANSLATOR_DECLARATIONS(Engraver);
 };
 
-#define make_item(x) make_item_from_properties (daddy_context_, ly_symbol2scm (x))
-#define make_spanner(x) make_spanner_from_properties (daddy_context_, ly_symbol2scm (x))
+#define make_item(x) make_item_from_properties (get_parent_context (), ly_symbol2scm (x))
+#define make_spanner(x) make_spanner_from_properties (get_parent_context (), ly_symbol2scm (x))
 Item* make_item_from_properties (Context * tg, SCM x);
 Spanner* make_spanner_from_properties (Context * tg, SCM x);
 
index 57e3257a2ff94ea8268b04f38413df1f043906c8..69b09852ad931bb47dfb2bb8d3c21177e6b405e5 100644 (file)
@@ -35,30 +35,18 @@ public:                                                     \
 class Translator
 {
   void init ();
+  
 public:
-  Music_output_def * output_def_;
+  Context * get_parent_context () const { return daddy_context_; }
   
   Translator (Translator const &);
-  Context * daddy_context_ ;
 
   void removal_processing ();
-  virtual Music_output_def *get_output_def () const;
   SCM internal_get_property (SCM symbol) const;
+  
+  virtual Music_output_def *get_output_def () const;
   virtual Translator_group* get_daddy_translator ()const;
   virtual Moment now_mom () const;  
-
-public:
-  DECLARE_SMOBS (Translator, dummy);
-
-protected:                     // should be private.
-  SCM simple_trans_list_;
-  friend class Context_def;
-
-public:
-  Score_context * get_score_context () const;
-  Global_context * get_global_context () const;
-  
-  TRANSLATOR_DECLARATIONS(Translator);
   virtual bool try_music (Music *req);
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
@@ -66,6 +54,17 @@ public:
   virtual void process_music ();
   virtual void do_announces ();
   virtual void finalize ();
+  
+  Score_context * get_score_context () const;
+  Global_context * get_global_context () const;
+  
+  TRANSLATOR_DECLARATIONS(Translator);
+  DECLARE_SMOBS (Translator, dummy);
+protected:                     // should be private.
+  Context * daddy_context_ ;
+  SCM simple_trans_list_;
+  friend class Context_def;
+  friend class Context;
 };
 
 /**
index c859831f986a1da161c394cf35674507dc1ad228..039d941230fb94d658b24ebcaa10dd076202e7d7 100644 (file)
@@ -42,7 +42,7 @@ Instrument_name_engraver::Instrument_name_engraver ()
 void
 Instrument_name_engraver::initialize ()
 {
-  daddy_context_->set_property ("instrumentSupport", SCM_EOL); 
+  get_parent_context ()->set_property ("instrumentSupport", SCM_EOL); 
 }
 
 void
@@ -111,7 +111,7 @@ Instrument_name_engraver::acknowledge_grob (Grob_info i)
       SCM nl = scm_cons (i.grob_->self_scm (),
                        get_property ("instrumentSupport"));
 
-      daddy_context_->set_property ("instrumentSupport", nl);
+      get_parent_context ()->set_property ("instrumentSupport", nl);
     }
 }
 
index 5a124921dc3c0718a4ca2ff95741e07076068f04..716f6fb0c136eafa38360b14db754025205ebd90 100644 (file)
@@ -167,8 +167,8 @@ Key_engraver::read_ev (Music const * r)
     if (ly_scm2int (ly_cdar (s)))
       accs = scm_cons (ly_car (s), accs);
 
-  daddy_context_->set_property ("keySignature", accs);
-  daddy_context_->set_property ("tonic" ,
+  get_parent_context ()->set_property ("keySignature", accs);
+  get_parent_context ()->set_property ("tonic" ,
                              r->get_property ("tonic"));
 }
 
@@ -177,18 +177,18 @@ void
 Key_engraver::start_translation_timestep ()
 {
   key_ev_ = 0;
-  daddy_context_->set_property ("lastKeySignature", get_property ("keySignature"));
+  get_parent_context ()->set_property ("lastKeySignature", get_property ("keySignature"));
 }
 
 
 void
 Key_engraver::initialize ()
 {
-  daddy_context_->set_property ("keySignature", SCM_EOL);
-  daddy_context_->set_property ("lastKeySignature", SCM_EOL);
+  get_parent_context ()->set_property ("keySignature", SCM_EOL);
+  get_parent_context ()->set_property ("lastKeySignature", SCM_EOL);
 
   Pitch p (0,0,0);
-  daddy_context_->set_property ("tonic", p.smobbed_copy ());
+  get_parent_context ()->set_property ("tonic", p.smobbed_copy ());
 
 }
 
index c74058e18c4c50bf181cb1c46abd41c4db230d7b..2acc37050115bd375f1acc741a6a0af4524203c1 100644 (file)
@@ -115,9 +115,9 @@ Ligature_engraver::override_stencil_callback ()
 {
   SCM target_callback = ly_symbol2scm ("print-function");
   SCM source_callback = ly_symbol2scm ("ligature-primitive-callback");
-  SCM noteHeadProperties = updated_grob_properties (daddy_context_, ly_symbol2scm ("NoteHead"));
+  SCM noteHeadProperties = updated_grob_properties (get_parent_context (), ly_symbol2scm ("NoteHead"));
   SCM value = ly_cdr (scm_sloppy_assq (source_callback, noteHeadProperties));
-  execute_pushpop_property (daddy_context_, ly_symbol2scm ("NoteHead"),
+  execute_pushpop_property (get_parent_context (), ly_symbol2scm ("NoteHead"),
                            target_callback, value);
 }
 
@@ -139,7 +139,7 @@ Ligature_engraver::revert_stencil_callback ()
 {
   SCM symbol = ly_symbol2scm ("NoteHead");
   SCM key = ly_symbol2scm ("print-function");
-  execute_pushpop_property (daddy_context_, symbol, key, SCM_UNDEFINED);
+  execute_pushpop_property (get_parent_context (), symbol, key, SCM_UNDEFINED);
 }
 
 void
index 9d421bdd50eb70e6c7f987971afb002d6d9e7a1e..cc7356d8475e9ce5772c17ed0ad6d3fe71670912 100644 (file)
@@ -73,11 +73,11 @@ get_voice_to_lyrics (Context *lyrics)
   if  (Context *c = unsmob_context (avc))
     return c;
 
-  SCM voice = lyrics->get_property ("associatedVoice");
+  SCM voice_name = lyrics->get_property ("associatedVoice");
   String nm = lyrics->id_string_;
 
-  if (is_string (voice))
-    nm = ly_scm2string (voice);
+  if (is_string (voice_name))
+    nm = ly_scm2string (voice_name);
   else
     {
       int idx = nm.index_last ('-');
@@ -85,12 +85,26 @@ get_voice_to_lyrics (Context *lyrics)
        nm = nm.left_string (idx);
     }
 
-  Context *c =  lyrics->find_context_below (ly_symbol2scm ("Voice"), nm);
+  Context *parent = lyrics;
+  Context *voice = 0; 
+  while (parent && !voice)
+    {
+      voice = find_context_below (parent, ly_symbol2scm ("Voice"), nm);
+      parent = parent->get_parent_context ();
+    }
 
-  if (c)
-    return c;
+  if (voice)
+    return voice;
+
+  parent = lyrics;
+  voice = 0; 
+  while (parent && !voice)
+    {
+      voice = find_context_below (parent, ly_symbol2scm ("Voice"), "");
+      parent = parent->get_parent_context ();
+    }
 
-  return lyrics->find_context_below (ly_symbol2scm ("Voice"), "");
+  return voice;
 }
 
 Grob *
@@ -114,7 +128,7 @@ Lyric_engraver::stop_translation_timestep ()
 {
   if (text_)
     {
-      Context * voice = get_voice_to_lyrics (daddy_context_);
+      Context * voice = get_voice_to_lyrics (get_parent_context ());
 
       if (voice)
        {
index a6403a3a3c0ff8c217de381e74fde9b37b01c267..7281e21f54deaf56135e81aa87a3e10d75a38536 100644 (file)
@@ -123,12 +123,12 @@ Mark_engraver::process_music ()
            {
              int mark_count = ly_scm2int (m);
              mark_count ++;
-             daddy_context_->set_property ("rehearsalMark",
+             get_parent_context ()->set_property ("rehearsalMark",
                                            scm_int2num (mark_count));
            }
 
          if (is_number (m))
-           m = scm_call_2 (proc, m, daddy_context_->self_scm ());
+           m = scm_call_2 (proc, m, get_parent_context ()->self_scm ());
          else
            warning ("rehearsalMark does not have integer value.");
        }
index 5f057b28d5f46eb675a9fcb510b718661b125b7a..1b01c2d82d67a7e80a7a3fe7dcb98ed69394148d 100644 (file)
@@ -36,7 +36,7 @@ Melisma_translator::try_music (Music *m)
 {
   if (m->is_mus_type ("melisma-playing-event"))
     {
-      return melisma_busy (daddy_context_);
+      return melisma_busy (get_parent_context ());
     }
   else if (m->is_mus_type ("melisma-span-event"))
     {
@@ -55,9 +55,9 @@ Melisma_translator::process_music ()
       SCM sd = event_->get_property ("span-direction");
       Direction d = to_dir (sd);
       if (d == START)
-       daddy_context_->set_property ("melismaBusy", SCM_BOOL_T);
+       get_parent_context ()->set_property ("melismaBusy", SCM_BOOL_T);
       else
-       daddy_context_->unset_property (ly_symbol2scm ("melismaBusy"));
+       get_parent_context ()->unset_property (ly_symbol2scm ("melismaBusy"));
     }
       
 }
index 63c7b04aad7601e13884feb071cdb4b52c4373ce..34e32df049d8cb72e08b68a65267b8614fc5ba5a 100644 (file)
@@ -101,7 +101,7 @@ Metronome_mark_engraver::process_music ()
 
       SCM proc = get_property ("metronomeMarkFormatter");
       SCM result= scm_call_2 (proc, mark_ev_->self_scm (),
-                             daddy_context_->self_scm ()); 
+                             get_parent_context ()->self_scm ()); 
       
       text_->set_property ("text", result);
     }
index ce0bf4140e8b0a00b9a78b1ede73431d5fac55a4..d3bc1ec780efe82e0bbb70fe5decf0c09d825d51 100644 (file)
@@ -243,7 +243,7 @@ is_child_context (Context *me, Context *child)
 {
   while (child && child != me)
     {
-      child = child->daddy_context_;
+      child = child->get_parent_context ();
     }
   
   return child == me;
index f07b72672599d87e5212df5d47390c6144a8389a..b5e17e9f583fca823a3cca7b3dd4f8c8e2bb2dea 100644 (file)
@@ -112,7 +112,7 @@ New_fingering_engraver::add_script (Grob * head,
   Finger_tuple ft ;
 
   Grob * g=  make_item ("Script");
-  make_script_from_event (g, &ft.description_, daddy_context_,
+  make_script_from_event (g, &ft.description_, get_parent_context (),
                          event->get_property ("articulation-type"), 0);
   if (g)
     {
index b2f95dde61b04e8f1080129e2ea0b00efef0c4c1..03f82646af221ddb707c3c15e7ca2da73af8214d 100644 (file)
@@ -144,7 +144,7 @@ New_lyric_combine_music_iterator::construct_children ()
   
   if (lyric_iter_)
     lyrics_context_ = find_context_below (lyric_iter_->get_outlet (),
-                                         "Lyrics", "");
+                                         ly_symbol2scm ("Lyrics"), "");
 
   /*
     We do not create a Lyrics context, because the user might
@@ -163,11 +163,11 @@ New_lyric_combine_music_iterator::find_voice ()
       if (is_string (voice_name))
        {
          Context *t = get_outlet ();
-         while (t && t->daddy_context_)
-           t = t->daddy_context_;
+         while (t && t->get_parent_context ())
+           t = t->get_parent_context ();
 
          String name = ly_scm2string (voice_name);
-         Context *voice = find_context_below (t, "Voice", name);
+         Context *voice = find_context_below (t, ly_symbol2scm ("Voice"), name);
          if (!voice)
            get_music ()->origin ()->warning (_f ("cannot find Voice: %s",
                                                  name.to_str0 ()) + "\n");
@@ -195,7 +195,7 @@ New_lyric_combine_music_iterator::process (Moment )
   if (!music_context_)
     return ;
   
-  if (!music_context_->daddy_context_)
+  if (!music_context_->get_parent_context ())
     {
       /*
        The melody has died.
index fee6c1e63c9c6fb4a30217b0945140519fa85e90..f5a548a87ad4d0d53c5e63b9fd18859ac1acc7c2 100644 (file)
@@ -60,9 +60,9 @@ Note_head_line_engraver::acknowledge_grob (Grob_info info)
       head_ = info.grob_;
       if (to_boolean (get_property ("followVoice")))
        {
-         Context * tr = daddy_context_;
+         Context * tr = get_parent_context ();
          while (tr && !tr->is_alias (ly_symbol2scm ( "Staff")))
-           tr = tr->daddy_context_ ;
+           tr = tr->get_parent_context () ;
 
          if (tr
              && tr->is_alias (ly_symbol2scm ("Staff")) && tr != last_staff_)
index 88a0168abde96f0dedbcf5707e371c5754c5c89d..c7a6759220f2d97511853569461f10554dbc854f 100644 (file)
@@ -64,13 +64,13 @@ Output_property_engraver::acknowledge_grob (Grob_info inf)
            dynamic_cast<Context *> (inf.origin_trans_);
 
          if (!d)
-           d = dynamic_cast<Context *> (inf.origin_trans_->daddy_context_);
+           d = dynamic_cast<Context *> (inf.origin_trans_->get_parent_context ());
          
          SCM proc = o->get_property ("procedure");
          scm_call_3 (proc,
                      inf.grob_->self_scm (),
                      d->self_scm (), 
-                     daddy_context_->self_scm ());
+                     get_parent_context ()->self_scm ());
        }
     }
 }
index 7054d2d0569b9d297ef73e2144999be5c1b21ac4..b7312e8878d42bcd66a3ae883714a7bc47e2fcf4 100644 (file)
@@ -28,7 +28,7 @@ Performer_group_performer::announce_element (Audio_element_info info)
 {
   announce_infos_.push (info);
   Translator *t
-    = unsmob_translator (daddy_context_->daddy_context_->implementation_);
+    = unsmob_translator (get_parent_context ()->get_parent_context ()->implementation_);
 
   if (Performer_group_performer * eg = dynamic_cast<Performer_group_performer*> (t))
     eg->announce_element (info);
index 3a13dc0e25c7d2cbd72a8a20c9de5fefd0eb78df..a40f45bff0262337dd6d36689d07081effe14102 100644 (file)
@@ -81,7 +81,7 @@ Recording_group_engraver::finalize ()
   SCM proc = get_property ("recordEventSequence");
 
   if (is_procedure (proc))
-    scm_call_2  (proc, daddy_context_->self_scm (), ly_cdr (accumulator_));
+    scm_call_2  (proc, get_parent_context ()->self_scm (), ly_cdr (accumulator_));
 
   accumulator_ = SCM_EOL;
 }
index b6c94d757279ba4e7e94c38e69ef58125510c134..5ae53695aaaa98d3d2599e53a55472342f6cfb71 100644 (file)
@@ -38,7 +38,7 @@ public:
 void
 Repeat_acknowledge_engraver::initialize ()
 {
-  daddy_context_->set_property ("repeatCommands", SCM_EOL);
+  get_parent_context ()->set_property ("repeatCommands", SCM_EOL);
 }
 
 
@@ -49,9 +49,9 @@ Repeat_acknowledge_engraver::Repeat_acknowledge_engraver ()
 void
 Repeat_acknowledge_engraver::start_translation_timestep ()
 {
-  Context * tr = daddy_context_->where_defined (ly_symbol2scm ("repeatCommands"));
+  Context * tr = get_parent_context ()->where_defined (ly_symbol2scm ("repeatCommands"));
   if (!tr)
-    tr = daddy_context_;
+    tr = get_parent_context ();
 
   tr->set_property ("repeatCommands", SCM_EOL);
 }
@@ -104,7 +104,7 @@ Repeat_acknowledge_engraver::process_music ()
     {
       if (s != "" || (volta_found && !is_string (wb)))
        {
-         daddy_context_->set_property ("whichBar", scm_makfrom0str (s.to_str0 ()));
+         get_parent_context ()->set_property ("whichBar", scm_makfrom0str (s.to_str0 ()));
        }
     }
 }
index 818bb2ac5f7bc429473f45ee3ce0f478f63601d6..3fc44c527d00b02dd01f69a549bd86bedd92f4bd 100644 (file)
@@ -47,9 +47,9 @@ Score_engraver::make_columns ()
   if (!command_column_)
     {
       SCM nmp
-       = updated_grob_properties (daddy_context_,
+       = updated_grob_properties (get_parent_context (),
                                   ly_symbol2scm ("NonMusicalPaperColumn"));
-      SCM pc = updated_grob_properties (daddy_context_,
+      SCM pc = updated_grob_properties (get_parent_context (),
                                        ly_symbol2scm ("PaperColumn"));
       
       set_columns (new Paper_column (nmp), new Paper_column (pc));
@@ -80,7 +80,7 @@ Score_engraver::prepare (Moment m)
   command_column_->set_property ("when", w);
   musical_column_->set_property ("when", w);
   
-  recurse_over_translators (daddy_context_, &Translator::start_translation_timestep, DOWN);
+  recurse_over_translators (get_parent_context (), &Translator::start_translation_timestep, DOWN);
 }
 
 void
@@ -89,7 +89,7 @@ Score_engraver::finish ()
   if ((breaks_%8))
     progress_indication ("[" + to_string (breaks_) + "]");
 
-  recurse_over_translators (daddy_context_, &Translator::finalize, UP);
+  recurse_over_translators (get_parent_context (), &Translator::finalize, UP);
 }
 
 /*
@@ -107,7 +107,7 @@ Score_engraver::initialize ()
   pscore_ = new Paper_score;
   pscore_->paper_ = dynamic_cast<Paper_def*> (get_output_def ());
 
-  SCM props = updated_grob_properties (daddy_context_, ly_symbol2scm ("System"));
+  SCM props = updated_grob_properties (get_parent_context (), ly_symbol2scm ("System"));
 
   pscore_->typeset_line (new System (props));
   
@@ -139,11 +139,11 @@ Score_engraver::one_time_step ()
 {
   if (!to_boolean (get_property ("skipTypesetting")))
     {
-      recurse_over_translators (daddy_context_, &Engraver::process_music, UP);
-      recurse_over_translators (daddy_context_, &Engraver::do_announces, UP);
+      recurse_over_translators (get_parent_context (), &Engraver::process_music, UP);
+      recurse_over_translators (get_parent_context (), &Engraver::do_announces, UP);
     }
   
-  recurse_over_translators (daddy_context_, &Translator::stop_translation_timestep, UP);
+  recurse_over_translators (get_parent_context (), &Translator::stop_translation_timestep, UP);
 }
 
 void
@@ -241,12 +241,12 @@ Score_engraver::set_columns (Paper_column *new_command,
   musical_column_ = new_musical;
   if (new_command)
     {
-      daddy_context_->set_property ("currentCommandColumn", new_command->self_scm ());  
+      get_parent_context ()->set_property ("currentCommandColumn", new_command->self_scm ());  
     }
   
   if (new_musical)
     {
-      daddy_context_->set_property ("currentMusicalColumn", new_musical->self_scm ());
+      get_parent_context ()->set_property ("currentMusicalColumn", new_musical->self_scm ());
     }
 }
 
index 54e2c90fb9e59691ad21b94af232fc27b822e8ec..175450d381bc727821942392ee3d74ec3d7bbffd 100644 (file)
@@ -58,21 +58,21 @@ Score_performer::prepare (Moment m)
 {
   audio_column_ = new Audio_column (m);
   play_element (audio_column_);
-  recurse_over_translators (daddy_context_, &Translator::start_translation_timestep, UP);
+  recurse_over_translators (get_parent_context (), &Translator::start_translation_timestep, UP);
 }
 
 void
 Score_performer::finish ()
 {
-  recurse_over_translators (daddy_context_, &Translator::finalize, UP);
+  recurse_over_translators (get_parent_context (), &Translator::finalize, UP);
 }
   
 void 
 Score_performer::one_time_step ()
 {
-  recurse_over_translators (daddy_context_, &Performer::process_music, UP);
-  recurse_over_translators (daddy_context_, &Performer::do_announces, UP);
-  recurse_over_translators (daddy_context_, &Translator::stop_translation_timestep, UP);
+  recurse_over_translators (get_parent_context (), &Performer::process_music, UP);
+  recurse_over_translators (get_parent_context (), &Performer::do_announces, UP);
+  recurse_over_translators (get_parent_context (), &Translator::stop_translation_timestep, UP);
 }
 
 int
index 67078978c878522d16ba436d9ab294a5b4f734be..0abfc686051cba1dde6b2be553650e1b80bf4771 100644 (file)
@@ -134,7 +134,7 @@ Script_engraver::process_music ()
 
       Grob * p = make_item ("Script");
 
-      make_script_from_event (p, &scripts_[i].description_, daddy_context_,
+      make_script_from_event (p, &scripts_[i].description_, get_parent_context (),
                              l->get_property ("articulation-type"),
                              i);
 
index ebeb9429ca2da4e20c237f8c14d50f49a5a84930..bd880658423971aef63504a0104458f494e9de64 100644 (file)
@@ -140,7 +140,7 @@ Separating_line_group_engraver::acknowledge_grob (Grob_info i)
       if (ib)
        {
          p_ref_->set_property ("breakable", SCM_BOOL_T);
-         daddy_context_->set_property ("breakableSeparationItem", p_ref_->self_scm ());
+         get_parent_context ()->set_property ("breakableSeparationItem", p_ref_->self_scm ());
        }
       announce_grob (p_ref_, SCM_EOL);
 
@@ -179,7 +179,7 @@ void
 Separating_line_group_engraver::start_translation_timestep ()
 {
   if (break_item_)
-    daddy_context_->unset_property (ly_symbol2scm ("breakableSeparationItem"));
+    get_parent_context ()->unset_property (ly_symbol2scm ("breakableSeparationItem"));
   break_item_ =0;
 }
 
index 0619f45ca087756c0f967ad23b741c05c6d52afb..9dcf354f160a6dc485f69705d4f742229dee06af 100644 (file)
@@ -52,7 +52,7 @@ Simultaneous_music_iterator::construct_children ()
       /* if create_separate_contexts_ is set, create a new context with the
         number number as name */
 
-      SCM name = unsmob_context_def (get_outlet ()->definition_)->get_context_name ();
+      SCM name = ly_symbol2scm (get_outlet ()->context_name ().to_str0 ());
       Context * t = (j && create_separate_contexts_)
        ? get_outlet ()->find_create_context (name, to_string (j), SCM_EOL)
        : get_outlet ();
index 3fc82162276ebf9fd0b3ad20117563087675af8b..79434ad225283deae7c9dc063b0f5f007517cddc 100644 (file)
@@ -88,7 +88,7 @@ Slur_engraver::try_music (Music *ev)
 void
 Slur_engraver::set_melisma (bool m)
 {
-  daddy_context_->set_property ("slurMelismaBusy", m ? SCM_BOOL_T :SCM_BOOL_F);
+  get_parent_context ()->set_property ("slurMelismaBusy", m ? SCM_BOOL_T :SCM_BOOL_F);
 }
 
 void
index 17c0a2dc2e49404cd81624f3e8581cf5b535dff4..32896aac0578efd9e9468806ca6499242c550350 100644 (file)
@@ -60,7 +60,7 @@ Slur_performer::process_music ()
 void
 Slur_performer::set_melisma (bool ml)
 {
-  daddy_context_->set_property ("slurMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
+  get_parent_context ()->set_property ("slurMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
 }
 
 void
index ad1092e981efb2f02d09180616617a92333c2987..42a9fec8843fa1259dee3a37c4c80ca031ba07af 100644 (file)
@@ -32,7 +32,7 @@ Staff_collecting_engraver::acknowledge_grob (Grob_info gi)
       SCM staffs = get_property ("stavesFound");
       staffs = scm_cons (gi.grob_->self_scm (), staffs);
 
-      daddy_context_->set_property ("stavesFound", staffs);
+      get_parent_context ()->set_property ("stavesFound", staffs);
     }
 }
 
index 30283681dda7f029a1e10f8cce7165331cd4ccbe..5de18f26edce9fc3568c48e95c4de80d2733746f 100644 (file)
@@ -65,7 +65,7 @@ Staff_performer::initialize ()
   audio_staff_ = new Audio_staff;
   announce_element (Audio_element_info (audio_staff_, 0));
 
-  name_ = new Audio_text (Audio_text::TRACK_NAME, daddy_context_->id_string_);
+  name_ = new Audio_text (Audio_text::TRACK_NAME, get_parent_context ()->id_string_);
   announce_element (Audio_element_info (name_, 0));
 
   tempo_ = new Audio_tempo (get_tempo ());
index e5d49a40543671d7aa17d50e58ad9ac6364a4655..a0adf56d6dd36b9dfc39346d52163219acf512fc 100644 (file)
@@ -88,7 +88,7 @@ Stem_engraver::acknowledge_grob (Grob_info i)
                else
                  requested_type = 8; 
              else
-               daddy_context_->set_property ("tremoloFlags", scm_int2num (requested_type));
+               get_parent_context ()->set_property ("tremoloFlags", scm_int2num (requested_type));
 
              int tremolo_flags = intlog2 (requested_type) - 2
                - (duration_log > 2 ? duration_log - 2 : 0);
@@ -152,13 +152,13 @@ Stem_engraver::stop_translation_timestep ()
       if (is_number (prop))
        {
          Stem::set_beaming (stem_,ly_scm2int (prop),LEFT);
-         daddy_context_->unset_property (ly_symbol2scm ("stemLeftBeamCount"));
+         get_parent_context ()->unset_property (ly_symbol2scm ("stemLeftBeamCount"));
        }
       prop = get_property ("stemRightBeamCount");
       if (is_number (prop))
        {
          Stem::set_beaming (stem_,ly_scm2int (prop), RIGHT);
-         daddy_context_->unset_property (ly_symbol2scm ("stemRightBeamCount"));
+         get_parent_context ()->unset_property (ly_symbol2scm ("stemRightBeamCount"));
        }
 
       typeset_grob (stem_);
index 9b0f93fe06b78a7e115f92b8725e4f2384eec233..994302f22541e20aafba98f22fa385967acb1259 100644 (file)
@@ -73,7 +73,7 @@ System_start_delimiter_engraver::process_music ()
   if (!delim_)
     {
       SCM delim_name =get_property ("systemStartDelimiter");
-      delim_ = make_spanner_from_properties (daddy_context_, delim_name);
+      delim_ = make_spanner_from_properties (get_parent_context (), delim_name);
 
       delim_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
       announce_grob (delim_, SCM_EOL);
index 69b69599ccdae4aa3521f09cfdf60c8f2f989762..181ede0912fd3c3fe921f5babc1a30e3d5e9d2b6 100644 (file)
@@ -74,7 +74,7 @@ void
 Tie_engraver::process_music ()
 {
   if (event_)
-    daddy_context_->set_property ("tieMelismaBusy", SCM_BOOL_T);
+    get_parent_context ()->set_property ("tieMelismaBusy", SCM_BOOL_T);
 }
 
 void
@@ -123,7 +123,7 @@ Tie_engraver::acknowledge_grob (Grob_info i)
 void
 Tie_engraver::start_translation_timestep ()
 {
-  daddy_context_->set_property ("tieMelismaBusy",
+  get_parent_context ()->set_property ("tieMelismaBusy",
                              ly_bool2scm (heads_to_tie_.size ()));
       
 }
index cbb38819e50dd275e18cf93215dc362472af4d8b..a44bf7df7e14eee837dcf0ad7eba353476dbe973 100644 (file)
@@ -57,7 +57,7 @@ void
 Tie_performer::process_music ()
 {
   if (event_)
-    daddy_context_->set_property ("tieMelismaBusy", SCM_BOOL_T);
+    get_parent_context ()->set_property ("tieMelismaBusy", SCM_BOOL_T);
 }
 
 void
@@ -87,7 +87,7 @@ Tie_performer::acknowledge_audio_element (Audio_element_info inf)
 void
 Tie_performer::start_translation_timestep ()
 {
-  daddy_context_->set_property ("tieMelismaBusy",
+  get_parent_context ()->set_property ("tieMelismaBusy",
                              ly_bool2scm (heads_to_tie_.size ()));
       
 }
index d366a7a088804def188c72fd9a36fabc35179710..1d6302f04114715c6cf125622c8b0f34810be53e 100644 (file)
@@ -49,7 +49,7 @@ Timing_engraver::initialize ()
     which = (now.main_part_ || now.main_part_ == last_moment_.main_part_)
       ? SCM_EOL : scm_makfrom0str ("|");
 
-  daddy_context_->set_property ("whichBar", which);
+  get_parent_context ()->set_property ("whichBar", which);
 }
 
 
@@ -88,14 +88,14 @@ Timing_engraver::start_translation_timestep ()
        }
     }
 
-  daddy_context_->set_property ("whichBar", which);
+  get_parent_context ()->set_property ("whichBar", which);
 }
 
 void
 Timing_engraver::stop_translation_timestep ()
 {
   Timing_translator::stop_translation_timestep ();
-  daddy_context_->set_property ("whichBar", SCM_EOL);
+  get_parent_context ()->set_property ("whichBar", SCM_EOL);
   last_moment_ = now_mom ();
 }
 
index a52e2eba280a0ca315d9db3665ce787ef83a1155..15c3866a3ebe6bbb7e3f986c3f342d7107c8cd8f 100644 (file)
@@ -49,18 +49,18 @@ Timing_translator::initialize ()
   /*
     move this to engraver-init.ly? 
    */
-  daddy_context_->add_alias (ly_symbol2scm ("Timing"));
-  daddy_context_->set_property ("timing" , SCM_BOOL_T);  
-  daddy_context_->set_property ("currentBarNumber" , scm_int2num (1));
+  get_parent_context ()->add_alias (ly_symbol2scm ("Timing"));
+  get_parent_context ()->set_property ("timing" , SCM_BOOL_T);  
+  get_parent_context ()->set_property ("currentBarNumber" , scm_int2num (1));
 
-  daddy_context_->set_property ("timeSignatureFraction",
+  get_parent_context ()->set_property ("timeSignatureFraction",
                                scm_cons (scm_int2num (4), scm_int2num (4)));
   /*
     Do not init measurePosition; this should be done from global
     context.
    */
-  daddy_context_->set_property ("measureLength", Moment (Rational (1)).smobbed_copy ());
-  daddy_context_->set_property ("beatLength", Moment (Rational (1,4)).smobbed_copy ());
+  get_parent_context ()->set_property ("measureLength", Moment (Rational (1)).smobbed_copy ());
+  get_parent_context ()->set_property ("beatLength", Moment (Rational (1,4)).smobbed_copy ());
 }
 
 Rational
@@ -125,7 +125,7 @@ Timing_translator::start_translation_timestep ()
   else
     {
       measposp = now;
-      daddy_context_->set_property ("measurePosition",
+      get_parent_context ()->set_property ("measurePosition",
                                    measposp.smobbed_copy ());
     }
   
@@ -148,8 +148,8 @@ Timing_translator::start_translation_timestep ()
       b ++;
     }
 
-  daddy_context_->set_property ("currentBarNumber", scm_int2num (b));
-  daddy_context_->set_property ("measurePosition", measposp.smobbed_copy ());
+  get_parent_context ()->set_property ("currentBarNumber", scm_int2num (b));
+  get_parent_context ()->set_property ("measurePosition", measposp.smobbed_copy ());
 }
 
 ENTER_DESCRIPTION (Timing_translator,
index d2ff5652907054c9f125a1e566726d1cba12a8f7..85c473db18c1614a8ed3a1b8a22b74adfa5d787e 100644 (file)
@@ -21,7 +21,7 @@ Translator_group*
 Translator_group::get_daddy_translator () const
 {
   Translator *t
-    = unsmob_translator (daddy_context_->daddy_context_->implementation_);
+    = unsmob_translator (get_parent_context ()->get_parent_context ()->implementation_);
   return dynamic_cast<Translator_group*> (t);
 }
 
@@ -38,7 +38,7 @@ void
 Translator_group::initialize ()
 {
   SCM tab = scm_make_vector (scm_int2num (19), SCM_BOOL_F);
-  daddy_context_->set_property ("acceptHashTable", tab);
+  get_parent_context ()->set_property ("acceptHashTable", tab);
 }
 
 
@@ -97,28 +97,6 @@ Translator_group::try_music (Music* m)
   return false;
 }
 
-SCM
-names_to_translators (SCM namelist, Context*tg)
-{
-  SCM l = SCM_EOL;
-  for (SCM s = namelist; is_pair (s) ; s = ly_cdr (s))
-    {
-      Translator * t = get_translator (ly_car (s));
-      if (!t)
-       warning (_f ("can't find: `%s'", s));
-      else
-       {
-         Translator * tr = t->clone ();
-         SCM str = tr->self_scm ();
-         l = scm_cons (str, l);
-
-         tr->daddy_context_ = tg;
-         scm_gc_unprotect_object (str);
-       }
-    }
-  return l;
-}
-
 
 SCM
 Translator_group::get_simple_trans_list ()
@@ -144,7 +122,7 @@ recurse_over_translators (Context * c, Translator_method ptr, Direction dir)
       (tg->*ptr) ();
     }
 
-  for (SCM s = c->context_list_ ; is_pair (s);
+  for (SCM s = c->children_contexts () ; is_pair (s);
        s =ly_cdr (s))
     {
       recurse_over_translators (unsmob_context (ly_car (s)), ptr, dir);
index 7a278668d6ce59d72654975532125dadeefe7101..ece48c1bc57c6c16c37e5901b0628284aa40bdb4 100644 (file)
@@ -158,8 +158,8 @@ updated_grob_properties (Context * tg, SCM sym)
     return SCM_EOL;
   
   SCM daddy_props
-    = (tg->daddy_context_)
-    ? updated_grob_properties (tg->daddy_context_, sym)
+    = (tg->get_parent_context ())
+    ? updated_grob_properties (tg->get_parent_context (), sym)
     : SCM_EOL;
   
   SCM props  = tg->internal_get_property (sym);
index 3f9beefa72f45f2ec97852f08ae297fde3542b16..094fe05552f1f4f970497fac3f1d550e7a0a69e6 100644 (file)
@@ -3,10 +3,10 @@
 chordmodifiers = #default-chord-modifier-list
 
 whiteTriangleMarkup = #(make-override-markup
-                       '(font-encoding . math) (make-simple-markup "M"))
+                       '(font-encoding . TeX-math) (make-simple-markup "M"))
 
 blackTriangleMarkup = #(make-override-markup
-                       '(font-encoding . math) (make-simple-markup "N"))
+                       '(font-encoding . TeX-math) (make-simple-markup "N"))
 
 ignatzekExceptionMusic = \notes{
        <c e gis>1-\markup { "+" }
index 14b1c6e6afcc681195c3797239ae0f19cbf5c384..d05c1cd9096db793006832359c633fe3842f7991 100644 (file)
@@ -18,7 +18,7 @@ Buildrequires: t1utils bison flex mftrace ImageMagick
 Buildrequires: texinfo >= 4.6
 Buildrequires: guile-devel >= 1.6.4-8
 Requires: tetex  tetex-latex libstdc++ python  tetex-dvips tetex-latex
-Requires: guile >= 1.6.4-8 ec-fonts-mftraced
+Requires: guile >= 1.6.4-8 ec-fonts-mftrace
 
 %description
 LilyPond lets you create music notation.  It produces
index 6c080460d5f71bae4c2c9dd5b4575db745335320..c8997b78d438f53ad08af5c45a43d3358f54b6a8 100644 (file)
 
 (define (text font s)
   (let*
-      ((mapping #f)
-       (input-enc-name (assoc-get 'input-name (ly:font-encoding-alist font) ))
-       )
+      ((mapping #f)       ;; (assoc-get  'char-mapping (ly:font-encoding-alist font))))
+
 
-    ;; TODO: we'd better do this for PS only
-    ;; LaTeX gets in the way, and we need to remap
-    ;; nonprintable chars.
-    
-    ;; (assoc-get  'char-mapping (ly:font-encoding-alist font))))
+       ;; TODO: we'd better do this for PS only
+       ;; LaTeX gets in the way, and we need to remap
+       ;; nonprintable chars.
+       
+
+       (input-enc-name #f) ;; (assoc-get 'input-name (ly:font-encoding-alist font) ))
+       )
 
     (string-append "\\hbox{\\" (font-command font)
                   (if (string? input-enc-name)