]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/request-chord-iterator.cc
release: 1.3.131
[lilypond.git] / lily / request-chord-iterator.cc
index 080240a8b519b726b25d9dc6d8e1e3fe58d0009c..118279299b768acc65af42ae4fc06399350f6888 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
@@ -49,7 +49,7 @@ SCM
 Request_chord_iterator::get_music (Moment) const
 {
   SCM s = SCM_EOL;
-  if (music_l_)
+  if (last_processed_mom_ < Moment (0))
     {
       Music_sequence * ms = dynamic_cast<Music_sequence*> (music_l_);
      
@@ -64,23 +64,19 @@ Request_chord_iterator::get_music (Moment) const
 void
 Request_chord_iterator::process (Moment m)
 {
-  if (music_l_)
+  if (last_processed_mom_ < Moment (0))
     {
       for (SCM s = dynamic_cast<Music_sequence *> (music_l_)->music_list ();
           gh_pair_p (s);  s = gh_cdr (s))
        {
          Music *mus = unsmob_music (gh_car (s));
 
-         if (Request * req_l = dynamic_cast<Request*> (mus))
-           {
-             bool gotcha = try_music (req_l);
-             if (!gotcha)
-               req_l->origin ()->warning (_f ("Junking request: `%s'", classname( req_l)));
-           }
-         else
-           mus->origin ()->warning (_f ("Huh?  Not a Request: `%s'",
-                                        classname (mus)));
+         bool gotcha = try_music (mus);
+         if (!gotcha)
+           mus->origin ()->warning (_f ("Junking request: `%s'", classname(mus)));
        }
     }
   skip (m);
 }
+
+IMPLEMENT_CTOR_CALLBACK(Request_chord_iterator);