]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.86.jcn2
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 13 Sep 2000 19:28:07 +0000 (21:28 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 13 Sep 2000 19:28:07 +0000 (21:28 +0200)
41 files changed:
VERSION
input/bugs/voice-switch-slur.ly [new file with mode: 0644]
input/bugs/voice-switch.ly
input/test/voice-switch.ly [new file with mode: 0644]
input/test/volta.ly
lily/a2-devnull-engraver.cc
lily/auto-change-iterator.cc
lily/change-iterator.cc
lily/chord-tremolo-iterator.cc
lily/folded-repeat-iterator.cc
lily/global-translator.cc
lily/grace-iterator.cc
lily/include/auto-change-iterator.hh
lily/include/change-iterator.hh
lily/include/chord-tremolo-iterator.hh
lily/include/folded-repeat-iterator.hh
lily/include/global-translator.hh
lily/include/grace-iterator.hh
lily/include/lyric-combine-music-iterator.hh
lily/include/music-iterator.hh
lily/include/music-wrapper-iterator.hh
lily/include/part-combine-music-iterator.hh
lily/include/property-iterator.hh
lily/include/request-chord-iterator.hh
lily/include/sequential-music-iterator.hh
lily/include/simple-music-iterator.hh
lily/include/simultaneous-music-iterator.hh
lily/include/time-scaled-music-iterator.hh
lily/include/unfolded-repeat-iterator.hh
lily/lyric-combine-music-iterator.cc
lily/music-iterator.cc
lily/music-wrapper-iterator.cc
lily/part-combine-music-iterator.cc
lily/property-iterator.cc
lily/request-chord-iterator.cc
lily/sequential-music-iterator.cc
lily/simple-music-iterator.cc
lily/simultaneous-music-iterator.cc
lily/time-scaled-music-iterator.cc
lily/unfolded-repeat-iterator.cc
lily/voice-devnull-engraver.cc

diff --git a/VERSION b/VERSION
index f8465bf1cd6df2401f106e2403d5fe34cbd0c6e0..9bae1a93632a2b8d97e664b4d9896f59b0fbb11e 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=86
-MY_PATCH_LEVEL=jcn1
+MY_PATCH_LEVEL=jcn2
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --git a/input/bugs/voice-switch-slur.ly b/input/bugs/voice-switch-slur.ly
new file mode 100644 (file)
index 0000000..f576f20
--- /dev/null
@@ -0,0 +1,21 @@
+\score{
+       \context Staff <
+               \context Voice=one\skip 1;
+               \context Voice=two\skip 1;
+               \context Voice=one \partcombine Voice
+                       \context Thread=one \notes\relative c'' {
+                               c4( c b )a 
+                               a( b c )d
+                       }
+                       \context Thread=two \notes\relative c'' {
+                               a4( c b )a
+                               a( b c )a
+                               
+                       }
+       >
+       \paper{
+               linewidth=140.\mm;
+       }
+}
+
+
index d515666e941eb1d377d8762397adaf18d8ec7b20..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,21 +0,0 @@
-\score{
-       \context Staff <
-               \context Voice=one\skip 1;
-               \context Voice=two\skip 1;
-               \context Voice=one \partcombine Voice
-                       \context Thread=one \notes\relative c'' {
-                               c2 c2
-                               c2 c2
-                       }
-                       \context Thread=two \notes\relative c'' {
-                               b2 a4 () a
-                               a2 a4 () a
-                               
-                       }
-       >
-       \paper{
-               linewidth=140.\mm;
-       }
-}
-
-
diff --git a/input/test/voice-switch.ly b/input/test/voice-switch.ly
new file mode 100644 (file)
index 0000000..d515666
--- /dev/null
@@ -0,0 +1,21 @@
+\score{
+       \context Staff <
+               \context Voice=one\skip 1;
+               \context Voice=two\skip 1;
+               \context Voice=one \partcombine Voice
+                       \context Thread=one \notes\relative c'' {
+                               c2 c2
+                               c2 c2
+                       }
+                       \context Thread=two \notes\relative c'' {
+                               b2 a4 () a
+                               a2 a4 () a
+                               
+                       }
+       >
+       \paper{
+               linewidth=140.\mm;
+       }
+}
+
+
index 443f79dfdef7519b6c896d4bbcdc51ba472536e5..48889cf91a22095b5e11509ec22a71db8cba21cb 100644 (file)
@@ -1,24 +1,42 @@
-\score { 
-  \context Voice \notes\relative c {
-    % Test of prima/secunda volta brackets in conjunction with 
-       % line breaks and special bars.
-       
-       c' d e f |
-       \repeat "volta" 2 { g a b c }
-       \alternative { { c b a g a g a g} { f e d c } } 
-       \repeat "volta" 2 { g a b c }
-       \alternative { { c b a g \break a g a g} { f e d c } } 
-       c' d e f |
-       \repeat "volta" 2 { g a b c }
-       \alternative { { c b a g \break a g a g \break a b a b } { f e d c } }
-       c' d e f |
-       \repeat "volta" 2 { g a b c }
-       \alternative { { c b a g } { f e d c \break a g a g} }
-       c' d e f |
-       \repeat "volta" 2 { g a b c }
-       \alternative { { c b a g a g a g} { f e d c \bar "|.";} }
-       
-  }
-  \paper { }  
-  \midi { }
-}
\ No newline at end of file
+
+voice4 = \notes {
+\clef bass;
+ \property Staff.instrument = "Bass"
+ \property Staff.instr = "B"
+ \time 4/4;  f,2 (   ) f,8    r8   f8    e8    
+\repeat  volta 2
+{
+ d8.    d16    e8.    f16    f8    c8    c16    c8. 
+}
+\alternative
+{
+    {   f,2 (   ) f,8    r8   f8    e8 ( \break   }
+    {   ) f,2.    r8   c16    c16      |
+    }
+}
+}
+voicedefault = \notes {
+ \property Staff.timeSignatureStyle="C"
+ \time 4/4; \key f; 
+ \tempo 4 = 200;
+}
+\score{
+        \notes <
+
+
+        \context Staff="4"
+        {
+            \$voicedefault
+            \$voice4 
+        }
+
+    >
+        \paper {
+            font_normal = 12.;
+            \translator {
+                 \StaffContext 
+                 \consists Instrument_name_engraver;
+            }
+        }
+}
+
index 32aa7d958a8522f150dc818d084262cce72af764..ab905a49d45f145284c74ec2e802d91c34ef0245 100644 (file)
@@ -30,6 +30,7 @@ ADD_THIS_TRANSLATOR (A2_devnull_engraver);
 bool
 A2_devnull_engraver::do_try_music (Music *m)
 {
+  return false;
   if (1 //daddy_trans_l_->id_str_ == "two"
       && (to_boolean (get_property ("unison"))
          || to_boolean (get_property ("unisilence"))))
index 0ae3021d4670172be651ba9e1abd56df4b90f4ed..ec4a498c74036cdb8e51bf3d8c104dd155b3e65a 100644 (file)
@@ -65,11 +65,13 @@ Auto_change_iterator::change_to (Music_iterator *it, String to_type,
     ; //    error (_ ("none of these in my family"));
 
 }
+
 Pitch_interrogate_req* spanish_inquisition; // nobody expects it
+
 void
-Auto_change_iterator::do_process_and_next (Moment m)
+Auto_change_iterator::do_process (Moment m)
 {
-  Music_wrapper_iterator::do_process_and_next (m);
+  Music_wrapper_iterator::do_process (m);
 
   if (!spanish_inquisition)
     spanish_inquisition = new Pitch_interrogate_req;
index 730e4adc8e3cb241ab121e0b302dabcdca7d7025..36eb168f291f12227fc15d18d7d012c4d1c32b1c 100644 (file)
@@ -24,7 +24,7 @@ Change_iterator::error (String reason)
   /*
     GUHG!
    */
-  String warn2= "Change_iterator::do_process_and_next (): " 
+  String warn2= "Change_iterator::do_process (): " 
     + report_to_l ()->type_str_ + " = `"
     + report_to_l ()->id_str_ + "': ";
   warning (warn2);
@@ -35,7 +35,7 @@ Change_iterator::error (String reason)
   move to construct_children ?
  */
 void
-Change_iterator::do_process_and_next (Moment m)
+Change_iterator::do_process (Moment m)
 {
   Translator_group * current = report_to_l ();
   Translator_group * last = 0;
@@ -80,7 +80,7 @@ Change_iterator::do_process_and_next (Moment m)
       }
   else
     error (_ ("none of these in my family"));
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
 }
 
 
index 1fe1425527b42af1ef9a1e547c1fd6a7d9853ccc..e853e851da6996810dfefbd3c8b17389dd9de382 100644 (file)
@@ -31,7 +31,7 @@ Chord_tremolo_iterator::Chord_tremolo_iterator()
 }
 
 void
-Chord_tremolo_iterator::do_process_and_next (Moment m)
+Chord_tremolo_iterator::do_process (Moment m)
 {
   if (!m)
     {
@@ -42,7 +42,7 @@ Chord_tremolo_iterator::do_process_and_next (Moment m)
        music_l_->origin ()->warning ( _("no one to print a tremolos"));
     }
 
-  child_iter_p_->process_and_next  (factor_ * m);
+  child_iter_p_->process (factor_ * m);
 }
 
 
index 38241b8cf413cb1e6fc7b3fb06b16a646300a893..514192a5cd84f4918c779782cf867c3154b37984 100644 (file)
@@ -55,7 +55,7 @@ Folded_repeat_iterator::construct_children ()
 }
 
 void
-Folded_repeat_iterator::do_process_and_next (Moment m)
+Folded_repeat_iterator::do_process (Moment m)
 {
   if (!m)
     {
@@ -66,7 +66,7 @@ Folded_repeat_iterator::do_process_and_next (Moment m)
   
   if (main_iter_p_)
     {
-      main_iter_p_->process_and_next (m);
+      main_iter_p_->process (m);
       if (!main_iter_p_->ok ())
        leave_body ();
     }
@@ -78,7 +78,7 @@ Folded_repeat_iterator::do_process_and_next (Moment m)
   
   if (alternative_iter_p_)
     {
-      alternative_iter_p_->process_and_next (m - main_length_mom_);
+      alternative_iter_p_->process (m - main_length_mom_);
       if (!alternative_iter_p_->ok ())
        {
          delete alternative_iter_p_;
index 4993504d7bf8e0c284659714c19e533d3026f723..3ecc44b4e085101cdf6a0d6c2422e3c4ffb95b2d 100644 (file)
@@ -6,11 +6,12 @@
   (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "global-translator.hh"
-#include "music-iterator.hh"
 #include "debug.hh"
+#include "music.hh"
+#include "music-iterator.hh"
+#include "global-translator.hh"
 
-Global_translator::Global_translator()
+Global_translator::Global_translator ()
 {
 }
 
@@ -29,13 +30,12 @@ Global_translator::add_moment_to_process (Moment m)
   extra_mom_pq_.insert (m);
 }
 
-void
-Global_translator::modify_next (Moment &w)
+Moment
+Global_translator::sneaky_insert_extra_moment (Moment w)
 {
-  while (extra_mom_pq_.size() && 
-        extra_mom_pq_.front() <= w)
-       
-    w =extra_mom_pq_.get();
+  while (extra_mom_pq_.size() && extra_mom_pq_.front() <= w)
+    w = extra_mom_pq_.get();
+  return w;
 }
 
 int
@@ -93,13 +93,35 @@ Global_translator::run_iterator_on_me (Music_iterator * iter)
            iter->print();
        }
       
-      modify_next (w);
+      w = sneaky_insert_extra_moment (w);
       prepare (w);
       
       if (flower_dstream && !flower_dstream->silent_b ("walking"))
        print();
 
-      iter->process_and_next (w);
+      iter->process (w);
+      for (SCM i = iter->get_music (); gh_pair_p (i); i = SCM_CDR (i))
+       {
+         assert (gh_pair_p (i));
+         SCM p = SCM_CAR (i);
+         Music *m = unsmob_music (SCM_CAR (p));
+         Translator *t = unsmob_translator (SCM_CDR (p));
+         assert (m);
+         assert (t);
+         bool b = t->try_music (m);
+         if (!b)
+           {
+             /*
+               Children?
+             */
+             printf ("junking:\n");
+             m->print ();
+             t->print ();
+           }
+
+       }
+      
+      iter->next ();
       process();
     }
 }
index 52ba6f57e06c233a8f1d8ce9384fb485b059a69c..86e8fa9a1effc4f2467afcdd70127bbb974e90b6 100644 (file)
@@ -27,7 +27,7 @@ Grace_iterator::construct_children ()
 }
 
 void
-Grace_iterator::do_process_and_next (Moment m)
+Grace_iterator::do_process (Moment m)
 {
   Global_translator * t = dynamic_cast<Global_translator*>(report_to_l ());
   if (t)
@@ -42,7 +42,7 @@ Grace_iterator::do_process_and_next (Moment m)
     {
       warning (_("no Grace context available")); 
     }
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
 }
 
 Moment
index aa03806c27f5321325bb7b123865e41f96e66a18..5160fac29371905c03de153f3854e1087bf26ed5 100644 (file)
@@ -20,7 +20,7 @@ public:
   Auto_change_iterator ();
 
 protected:
-  virtual void do_process_and_next (Moment);  
+  virtual void do_process (Moment);  
 
 private:
   Direction where_dir_;
index a43c4da5f2d1d73d32632820403299c17d8ac1dd..f52eb63120164d80bfdfbc9424ef174c6b1c13ee 100644 (file)
@@ -17,12 +17,8 @@ class Change_iterator : public Music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  /*
-    CTOR is public
-   */
-
-protected:
-  virtual void do_process_and_next (Moment);
+  /* constructor is public */
+  virtual void do_process (Moment);
 
 private:
   void  error (String);
index 6d25034d6d22b74e7c5801d174da5df6972b328e..f83e497a31d6522784438dff02b2896dec225904 100644 (file)
@@ -24,7 +24,7 @@ protected:
   virtual void construct_children  () ;
   virtual bool ok () const;
   virtual void do_print () const;
-  virtual void do_process_and_next (Moment) ;
+  virtual void do_process (Moment) ;
   virtual Music_iterator *try_music_in_children (Music *) const;
 
 private:
index 1b36df304ace130b05a3a227518738bffff8bce2..c5f73658dfa592a7896f9bacb75a88ab862dc94b 100644 (file)
@@ -31,7 +31,7 @@ protected:
   void enter_alternative ();
   void leave_body ();
   
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
 
 private:
index ebcb6b34e9f582066137192beec99e64cf267aa7..34e99211429c1bf18f3585c13afdeb848c9aa7a7 100644 (file)
@@ -25,7 +25,7 @@ public:
   Global_translator();
 
   int moments_left_i() const;
-  void modify_next (Moment&);
+  Moment sneaky_insert_extra_moment (Moment);
   void add_moment_to_process (Moment);
   void run_iterator_on_me (Music_iterator*);
   
index c253d078e826d0bcaebe6fa0a7d74047ec86fe78..49db1a9d39701a001acc356112496ec3c59bb02b 100644 (file)
@@ -18,7 +18,7 @@ public:
   VIRTUAL_COPY_CONS (Music_iterator);
   ~Grace_iterator ();
   virtual void construct_children () ;
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
 
   Moment next_moment () const;
 };
index 31a47b489655b0a072531619add3994e82eaefdb..eada524f8048086bfafbe1ab68fea3606f8ca459 100644 (file)
@@ -22,7 +22,7 @@ public:
 protected:
   virtual void construct_children ();
   virtual Moment next_moment () const;
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
 
   virtual bool ok () const;
index 87644b494f8fdb225c0b4f8f698982c068984d05..7ea76005a59aa496a85d5c5f2e43e0da64873955 100644 (file)
@@ -42,7 +42,7 @@ public:
   /**
     The translation unit that we this iterator is reporting  to now.
    */
-  Translator_group*report_to_l () const;
+  Translator_group* report_to_l () const;
 
   void set_translator (Translator_group*);
   
@@ -59,11 +59,10 @@ public:
   ///Are we finished with this piece of music?
   virtual bool ok () const;
 
-  virtual Music* get_music ();
+  virtual SCM get_music ();
   virtual bool next ();
 
-  ///Report all musical information that occurs between now and UNTIL
-  void process_and_next (Moment until);
+  void process (Moment until);
 
   /**
     Construct sub-iterators, and set the translator to 
@@ -94,10 +93,7 @@ protected:
    */
   Music_iterator* get_iterator_p (Music *) const;
 
-  /** Do the actual move.  This should be overriden in derived
-    classes.  It is called by #process_and_next#, the public interface 
-    */
-  virtual void do_process_and_next (Moment until);
+  virtual void do_process (Moment);
 
   virtual Music_iterator* try_music_in_children (Music *) const;
   
index 1d97eb9067f1ea119c21da649651db9e9322f9c1..edb6b8a4d899b58159aba4dad6db436ff75cb563 100644 (file)
@@ -29,12 +29,12 @@ public:
   virtual void construct_children  () ;
   virtual Moment next_moment () const;
   virtual bool ok () const;
-  virtual Music* get_music ();
+  virtual SCM get_music ();
   virtual bool next ();
 
 protected:
   virtual void do_print () const;
-  virtual void do_process_and_next (Moment) ;
+  virtual void do_process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
 
   Music_iterator *child_iter_p_;
index d43a00a72daf9d29a95d459242bc27b10e1005a8..ee27bebb3a5467d71d84a660fb47b0e8bae53b13 100644 (file)
@@ -19,14 +19,17 @@ public:
   Part_combine_music_iterator ();
 
 protected:
+  virtual ~Part_combine_music_iterator ();
+
   virtual void construct_children ();
   virtual Moment next_moment () const;
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
 
   virtual bool ok () const;
+  virtual bool next ();
+  virtual SCM get_music ();
   virtual void do_print () const;
-  virtual ~Part_combine_music_iterator ();
 
 private:
   void change_to (Music_iterator*, String, String);
index 66c7143656c65092f9260591c7efe1b556a24484..bda6483ec967ed3aa0eaad276d48d4e057637222 100644 (file)
@@ -22,9 +22,9 @@ class Property_iterator : public Music_iterator
 {
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
-  // construction  
+  /* construction */
 protected:
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
 };
 
 class Push_property_iterator : public Music_iterator
@@ -32,7 +32,8 @@ class Push_property_iterator : public Music_iterator
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
 protected:
-  virtual void do_process_and_next (Moment);
+  /* construction */
+  virtual void do_process (Moment);
 };
 
 class Pop_property_iterator : public Music_iterator
@@ -40,7 +41,8 @@ class Pop_property_iterator : public Music_iterator
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
 protected:
-  virtual void do_process_and_next (Moment);
+  /* construction */
+  virtual void do_process (Moment);
 };
 
 
index a4794f100b02d92f674668406148b605989b6cfc..0e820f7b1f62ea90fd3dfc76c87805a1c8a1823d 100644 (file)
@@ -33,7 +33,7 @@ public:
   virtual bool ok () const;
 
 protected:
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
   virtual Moment next_moment() const;
   virtual void construct_children();
   virtual void do_print() const;
index 1a2dc730e7221c233a6857a8eb952c6fff75f898..661ce709b40099d44979ad6335666b2e6f050dbf 100644 (file)
@@ -26,15 +26,14 @@ public:
   virtual void construct_children ();
   virtual Moment next_moment () const;
   virtual bool ok () const;
-  virtual Music* get_music ();
+  virtual SCM get_music ();
   virtual bool next ();
 
 protected:
   virtual void do_print() const;
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
 
-
 private:
   Moment here_mom_;
 
index 324c9b952ab95815af37b5136542e33b910b5de7..f81a4cd629ba5a74ea5c0f037452a51bb731f23c 100644 (file)
@@ -17,9 +17,7 @@ public:
   VIRTUAL_COPY_CONS (Music_iterator);
   Simple_music_iterator ();
   Simple_music_iterator (Simple_music_iterator const &);
-
-protected:
-  virtual void do_process_and_next (Moment );
+  virtual void do_process (Moment);
 };
 
 #endif /* SIMPLE_MUSIC_ITERATOR_HH */
index 26666c339ccf934482c12e2f42e7909518ab3748..20efba729ef222b4d4557513e1396a56964b088a 100644 (file)
@@ -29,14 +29,13 @@ public:
   virtual Moment next_moment () const;
   virtual bool ok () const;
   virtual bool next ();
-  virtual Music* get_music ();
+  virtual SCM get_music ();
 
 protected:
   virtual void do_print () const;
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
 
-
 private:
   Cons_list<Music_iterator> children_p_list_;
 };
index abdd2ac6a646923207c9644456b795255fe845f9..e124bf2d4266fba2d6fd10f82909f022a0d4f42f 100644 (file)
@@ -16,9 +16,9 @@ class Time_scaled_music_iterator : public Music_wrapper_iterator
 {
 public:  
   VIRTUAL_COPY_CONS (Music_iterator);
-  // construction
+  /* construction */
 protected:
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
 };
 
 
index e52361b4737937ce2b68d20be9484d7b063c6531..08a51b5041fe38676decd81c0165ca3cf9ae3007 100644 (file)
@@ -48,7 +48,7 @@ public:
 protected:  
   virtual void construct_children ();
   virtual Moment next_moment () const;
-  virtual void do_process_and_next (Moment);
+  virtual void do_process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
 
   virtual bool ok () const;
index c422d79e63d3618b63796c0295aca63e17bc35ff..ff1e6e1798f9a1c5c6165b0e5b5c63e7cdff5000 100644 (file)
@@ -66,13 +66,13 @@ Lyric_combine_music_iterator::construct_children ()
 }
 
 void
-Lyric_combine_music_iterator::do_process_and_next (Moment m)
+Lyric_combine_music_iterator::do_process (Moment m)
 {
   Moment my_next = music_iter_p_->next_moment ();
   if (my_next > m)
     return;
   
-  music_iter_p_->process_and_next (m);
+  music_iter_p_->process (m);
 
   bool busy = try_music (busy_req);
   if (busy)
@@ -91,12 +91,12 @@ Lyric_combine_music_iterator::do_process_and_next (Moment m)
 #endif
              
              Moment m= lyric_iter_p_->next_moment ();
-             lyric_iter_p_->process_and_next (m);
+             lyric_iter_p_->process (m);
            }
        }
     }
   
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
 }
 
 Lyric_combine_music_iterator::~Lyric_combine_music_iterator ()
index bae22a94afddb94a0ef6790a871938c043f64bf3..bb7fa19310be419e3d8f364be985667ba2a05091 100644 (file)
@@ -53,78 +53,77 @@ Music_iterator::Music_iterator (Music_iterator const& src)
   music_l_ = src.music_l_;
 }
 
-Music_iterator::~Music_iterator()
+Music_iterator::~Music_iterator ()
 {
 }
 
 void
-Music_iterator::do_print() const
+Music_iterator::do_print () const
 {
 }
 
 void
-Music_iterator::print() const
+Music_iterator::print () const
 {
 #ifndef NPRINT
   if (!flower_dstream)
     return ;
-  DEBUG_OUT << classname(this) << "{";
-  Translator_group *t =     report_to_l();
+  DEBUG_OUT << classname (this) << "{";
+  Translator_group *t =     report_to_l ();
   DEBUG_OUT << "report to " << t->type_str_ << " = " << t->id_str_ << "\n";
-  if (ok())
-    DEBUG_OUT << "next at " << next_moment() << " ";
+  if (ok ())
+    DEBUG_OUT << "next at " << next_moment () << " ";
   else
     DEBUG_OUT << "not feeling well today..";
-  do_print();
+  do_print ();
   DEBUG_OUT << "}\n";
 #endif
 }
 
 Translator_group*
-Music_iterator::get_req_translator_l()
+Music_iterator::get_req_translator_l ()
 {
-  assert (report_to_l());
-  if (report_to_l()->is_bottom_translator_b ())
-    return report_to_l();
+  assert (report_to_l ());
+  if (report_to_l ()->is_bottom_translator_b ())
+    return report_to_l ();
 
-  set_translator (report_to_l()->get_default_interpreter ());
-  return report_to_l();
+  set_translator (report_to_l ()->get_default_interpreter ());
+  return report_to_l ();
 }
 
 
 Translator_group* 
-Music_iterator::report_to_l() const
+Music_iterator::report_to_l () const
 {
   return handle_.report_to_l ();
 }
 
 
 void
-Music_iterator::set_translator (Translator_group*trans)
+Music_iterator::set_translator (Translator_group *trans)
 {
   handle_.set_translator (trans);
 }
 
 void
-Music_iterator::construct_children()
+Music_iterator::construct_children ()
 {
 }
 
 Moment
-Music_iterator::next_moment() const
+Music_iterator::next_moment () const
 {
   return 0;
 }
 
-
 void
-Music_iterator::process_and_next (Moment m)
+Music_iterator::process (Moment m)
 {
-  do_process_and_next (m);
+  do_process (m);
 }
 
 void
-Music_iterator::do_process_and_next (Moment)
+Music_iterator::do_process (Moment)
 {
   first_b_ = false;
 }
@@ -135,12 +134,14 @@ Music_iterator::ok () const
   return first_b_;
 }
 
-Music*
+SCM
 Music_iterator::get_music ()
 {
   if (ok ())
-    return music_l_;
-  return 0;
+    return scm_listify (scm_cons (music_l_->self_scm (),
+                                 report_to_l ()->self_scm ()),
+                       SCM_UNDEFINED);
+  return SCM_EOL;
 }
 
 bool
@@ -151,7 +152,7 @@ Music_iterator::next ()
 }
 
 Music_iterator*
-Music_iterator::static_get_iterator_p (Music  *m)
+Music_iterator::static_get_iterator_p (Music *m)
 {
   Music_iterator * p =0;
 
@@ -169,9 +170,9 @@ Music_iterator::static_get_iterator_p (Music  *m)
     p = new Property_iterator;
   else if (dynamic_cast<Change_translator *> (m))
     p = new Change_iterator;
-  else if (dynamic_cast<Push_translation_property*>(m))
+  else if (dynamic_cast<Push_translation_property*> (m))
     p = new Push_property_iterator;
-  else if (dynamic_cast<Pop_translation_property*>(m))
+  else if (dynamic_cast<Pop_translation_property*> (m))
     p = new Pop_property_iterator;
   else if (dynamic_cast<Time_scaled_music *> (m))
     p = new Time_scaled_music_iterator;
@@ -202,10 +203,10 @@ Music_iterator::static_get_iterator_p (Music  *m)
 }
 
 void
-Music_iterator::init_translator (Music  *m, Translator_group  *report_l)
+Music_iterator::init_translator (Music *m, Translator_group *report_l)
 {
   music_l_ = m;
-  if (Context_specced_music  * csm =dynamic_cast<Context_specced_music *>(m))
+  if (Context_specced_music * csm =dynamic_cast<Context_specced_music *> (m))
     {
       Translator_group* a =report_l->
        find_create_translator_l (csm->translator_type_str_, csm->translator_id_str_);
@@ -214,7 +215,7 @@ Music_iterator::init_translator (Music  *m, Translator_group  *report_l)
       
     }
 
-  if (! report_to_l())
+  if (! report_to_l ())
     set_translator (report_l);
 }
 
@@ -223,16 +224,16 @@ Music_iterator*
 Music_iterator::get_iterator_p (Music *m) const
 {
   Music_iterator*p = static_get_iterator_p (m);
-  p->init_translator (m, report_to_l());
+  p->init_translator (m, report_to_l ());
   
-  p->construct_children();
+  p->construct_children ();
   return p;
 }
 
 Music_iterator*
-Music_iterator::try_music (Music  *m) const
+Music_iterator::try_music (Music *m) const
 {
-  bool b = report_to_l ()->try_music ((Music*)m); // ugh
+  bool b = report_to_l ()->try_music ( (Music*)m); // ugh
   Music_iterator * it = b ? (Music_iterator*) this : 0;        // ugh
   if (!it)
     it = try_music_in_children (m);
@@ -240,7 +241,7 @@ Music_iterator::try_music (Music  *m) const
 }
 
 Music_iterator*
-Music_iterator::try_music_in_children (Music  *  ) const
+Music_iterator::try_music_in_children (Music *) const
 {
   return 0;
 }
index 396e9c4657aea44f323c2172a5043fe2dd994f96..46f9b6da26279fbf7d97acbaa400a99f84324789 100644 (file)
@@ -47,13 +47,13 @@ Music_wrapper_iterator::ok () const
 }
 
 void
-Music_wrapper_iterator::do_process_and_next (Moment m)
+Music_wrapper_iterator::do_process (Moment m)
 {
-  child_iter_p_->process_and_next (m);
-  Music_iterator::do_process_and_next (m);
+  child_iter_p_->process (m);
+  Music_iterator::do_process (m);
 }
 
-Music*
+SCM
 Music_wrapper_iterator::get_music ()
 {
   return child_iter_p_->get_music ();
index b5c3780961c2b341664119d2b501d10ba938341b..9ed054e1ec465206a1b820d3b9878ea0aebbc4af 100644 (file)
@@ -48,6 +48,23 @@ Part_combine_music_iterator::ok () const
   return first_iter_p_->ok () || second_iter_p_->ok ();
 }
 
+SCM
+Part_combine_music_iterator::get_music ()
+{
+  return SCM_EOL;
+}
+
+bool
+Part_combine_music_iterator::next ()
+{
+  bool b = false;
+  if (first_iter_p_->ok ())
+    b = first_iter_p_->next ();
+  if (second_iter_p_->ok ())
+    b = second_iter_p_->next () || b;
+  return b;
+}
+
 void
 Part_combine_music_iterator::do_print () const
 {
@@ -116,7 +133,7 @@ Part_combine_music_iterator::change_to (Music_iterator *it, String to_type,
 }
 
 void
-Part_combine_music_iterator::do_process_and_next (Moment m)
+Part_combine_music_iterator::do_process (Moment m)
 {
   Part_combine_music const * p = dynamic_cast<Part_combine_music const* > (music_l_);
 
@@ -127,44 +144,42 @@ Part_combine_music_iterator::do_process_and_next (Moment m)
   if (first_iter_p_->ok ())
     {
       Music_iterator* i = first_iter_p_->clone ();
-      Moment until = i->next_moment ();
 
       /* Urg, silly first_b_ stuff */
-      if (now && i->next ())
-       until = i->next_moment ();
+      if (now)
+       i->next ();
 
-      /* How about a 'now_moment ()' for iterators? */
-      for (; i->ok () && i->next_moment () == until; i->next ())
+      SCM s = i->get_music ();
+      if (gh_pair_p (s))
        {
-         if (Music_sequence* m = dynamic_cast<Music_sequence *> (i->get_music ()))
+         if (Music_sequence* m = dynamic_cast<Music_sequence *> (unsmob_music (SCM_CAR (SCM_CAR (s)))))
            {
              for (SCM s = m->music_list (); gh_pair_p (s);  s = gh_cdr (s))
                {
                  Music *u = unsmob_music (gh_car (s));
                  if (Melodic_req *r = dynamic_cast<Melodic_req *> (u))
-                   first_pitches.push (r->pitch_);
+                       first_pitches.push (r->pitch_);
                  if (Rhythmic_req *r = dynamic_cast<Rhythmic_req *> (u))
                    first_durations.push (r->duration_);
                }
            }
        }
     }
-
+  
   Array<Musical_pitch> second_pitches;
   Array<Duration> second_durations;
   if (second_iter_p_->ok ())
     {
       Music_iterator* i = second_iter_p_->clone ();
-      Moment until = i->next_moment ();
 
       /* Urg, silly second_b_ stuff */
-      if (now && i->next ())
-       until = i->next_moment ();
+      if (now)
+       i->next ();
 
-      /* How about a 'now_moment ()' for iterators? */
-      for (; i->ok () && i->next_moment () == until; i->next ())
+      SCM s = i->get_music ();
+      if (gh_pair_p (s))
        {
-         if (Music_sequence* m = dynamic_cast<Music_sequence *> (i->get_music ()))
+         if (Music_sequence* m = dynamic_cast<Music_sequence *> (unsmob_music (SCM_CAR (SCM_CAR (s)))))
            {
              for (SCM s = m->music_list (); gh_pair_p (s);  s = gh_cdr (s))
                {
@@ -172,7 +187,7 @@ Part_combine_music_iterator::do_process_and_next (Moment m)
                  if (Melodic_req *r = dynamic_cast<Melodic_req *> (u))
                    second_pitches.push (r->pitch_);
                  if (Rhythmic_req *r = dynamic_cast<Rhythmic_req *> (u))
-                   second_durations.push (r->duration_);
+                       second_durations.push (r->duration_);
                }
            }
        }
@@ -202,7 +217,7 @@ Part_combine_music_iterator::do_process_and_next (Moment m)
        second_until_ = new_until;
     }
 
-#if 0 /* DEBUG */
+#if 1 /* DEBUG */
   printf ("now: %s\n", now.str ().ch_C ());
   printf ("first: ");
   for (int i = 0; i < first_pitches.size (); i++)
@@ -296,12 +311,12 @@ Part_combine_music_iterator::do_process_and_next (Moment m)
     Hmm, shouldn't we check per iterator if next_moment < m?
   */
   if (first_iter_p_->ok ())
-    first_iter_p_->process_and_next (m);
+    first_iter_p_->process (m);
   
   if (second_iter_p_->ok ())
-    second_iter_p_->process_and_next (m);
+    second_iter_p_->process (m);
 
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
 }
 
 Music_iterator*
index 2f44683094ea11879b913924501860c4d61dc6b9..3b6c47f9f7416b50c6cf9493e01d44006bcbaad3 100644 (file)
   translation unit, and set the property.
   */
 void
-Property_iterator::do_process_and_next (Moment m)
+Property_iterator::do_process (Moment m)
 {
   SCM sym = music_l_->get_mus_property ("symbol");
   if (gh_symbol_p(sym))
     report_to_l ()->set_property (sym, music_l_->get_mus_property ("value"));
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
 }
 
-
 void
-Push_property_iterator::do_process_and_next (Moment m)
+Push_property_iterator::do_process (Moment m)
 {
   SCM syms = music_l_->get_mus_property ("symbols");
   SCM eprop = music_l_->get_mus_property ("element-property");
@@ -34,15 +33,15 @@ Push_property_iterator::do_process_and_next (Moment m)
 
   Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, val);
   
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
 }
 
 void
-Pop_property_iterator::do_process_and_next (Moment m)
+Pop_property_iterator::do_process (Moment m)
 {
   SCM syms = music_l_->get_mus_property ("symbols");
   SCM eprop = music_l_->get_mus_property ("element-property");
   Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED);
   
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
 }
index 7ac4c2e2c7a6c507a0089bacd8e5a9b08f8bc64d..c13de02132a05674c81df4612ed0db8efafd0cfc 100644 (file)
@@ -72,8 +72,9 @@ Request_chord_iterator::next ()
 }
 
 void
-Request_chord_iterator::do_process_and_next (Moment)
+Request_chord_iterator::do_process (Moment)
 {
+#if 0
   // URG
   if (first_b_)
     {
@@ -93,4 +94,5 @@ Request_chord_iterator::do_process_and_next (Moment)
     }
 
   next ();
+#endif
 }
index 8ba2fa20db418aeca4c9880c98fae5f94deec8f3..8e0ec23362e44c8031b5265bd5b891b188b3b015 100644 (file)
@@ -93,18 +93,21 @@ Sequential_music_iterator::set_sequential_music_translator()
     set_translator (child_report);
 }
 
-Music*
+SCM
 Sequential_music_iterator::get_music ()
 {
   if (ok ())
-    return unsmob_music (gh_car (cursor_));
+    return scm_listify (scm_cons (SCM_CAR (cursor_),
+                                 report_to_l ()->self_scm ()),
+                       SCM_UNDEFINED);
       
-  return 0;
+  return SCM_EOL;
 }
   
 bool
 Sequential_music_iterator::next ()
 {
+#if 0
   if (ok ())
     {
       bool b = false;
@@ -121,14 +124,27 @@ Sequential_music_iterator::next ()
       return b;
     }
   return false;
+#else
+  if (ok ())
+    {
+      set_sequential_music_translator ();
+      leave_element ();
+      if (gh_pair_p (cursor_))
+       start_next_element ();
+      return ok ();
+    }
+  return false;
+#endif
 }
 
 /*
   This should use get_music () and next ()
  */
 void
-Sequential_music_iterator::do_process_and_next (Moment until)
+Sequential_music_iterator::do_process (Moment until)
 {
+  return;
+#if 0
   if (ok ())
     {
       while (1) 
@@ -138,9 +154,9 @@ Sequential_music_iterator::do_process_and_next (Moment until)
            {
              Moment here = iter_p_->next_moment ();
              if (here != local_until)
-               return Music_iterator::do_process_and_next (until);
+               return Music_iterator::do_process (until);
              
-             iter_p_->process_and_next (local_until);
+             iter_p_->process (local_until);
            }
          
          if (!iter_p_->ok ()) 
@@ -151,10 +167,11 @@ Sequential_music_iterator::do_process_and_next (Moment until)
              if (gh_pair_p (cursor_))
                start_next_element ();
              else 
-               return Music_iterator::do_process_and_next (until);
+               return Music_iterator::do_process (until);
            }
        }
     }
+#endif
 }
 
 Moment
index d19d615a22b67ea7dd4e225682e208bcb6d72037..d6cc80b0f2388507b634bcb665e74968364084ff 100644 (file)
@@ -22,8 +22,9 @@ Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src)
 }
 
 void
-Simple_music_iterator::do_process_and_next (Moment m)
+Simple_music_iterator::do_process (Moment m)
 {
+#if 0
   if (ok ())
     {
       bool b = try_music (get_music ());
@@ -32,5 +33,6 @@ Simple_music_iterator::do_process_and_next (Moment m)
                                          classname (music_l_)));
 
     }
-  Music_iterator::do_process_and_next (m);
+  Music_iterator::do_process (m);
+#endif
 }
index 3e4d821ede7abf64053928486ab04ed7f473a9cc..08f337c0658371d4b4e60df4df43cba6b883dc3b 100644 (file)
@@ -38,23 +38,29 @@ Simultaneous_music_iterator::~Simultaneous_music_iterator ()
 bool
 Simultaneous_music_iterator::next ()
 {
-  if (cursor_i_ < children_p_list_.size_i ())
-    cursor_i_++;
-  return cursor_i_ < children_p_list_.size_i ();
+  for (Cons<Music_iterator> **pp = &children_p_list_.head_; *pp;)
+    {
+      Music_iterator *i = (*pp)->car_;
+      if (i->ok ())
+       i->next ();
+      if (!i->ok ())
+       delete children_p_list_.remove_cons (pp);
+      else
+       pp = &(*pp)->next_;
+    }
+  return ok ();
 }
 
-Music*
+SCM
 Simultaneous_music_iterator::get_music ()
 {
-  if (cursor_i_ < children_p_list_.size_i ())
+  SCM s = SCM_EOL;
+  //  SCM t = report_to_l ()-self_scm ();
+  for (Cons<Music_iterator> *p = children_p_list_.head_; p; p = p->next_)
     {
-      Cons<Music_iterator> *p = children_p_list_.head_;
-      for (int i = 0; i <= cursor_i_ && p; i++)
-       p = p->next_;
-      if (p)
-       return p->car_->get_music ();
+      scm_cons (p->car_->get_music (), s);
     }
-  return 0;
+  return s;
 }
 
 void
@@ -102,26 +108,25 @@ Simultaneous_music_iterator::do_print() const
 }
 
 void
-Simultaneous_music_iterator::do_process_and_next (Moment until)
+Simultaneous_music_iterator::do_process (Moment until)
 {
-  for (Cons<Music_iterator> **pp = &children_p_list_.head_; *pp; )
+#if 1
+  for (Cons<Music_iterator> **pp = &children_p_list_.head_; *pp;)
     {
       Music_iterator * i = (*pp)->car_;
       if  (i->next_moment() == until) 
        {
-         i->process_and_next (until);
+         i->process (until);
        }
       if (!i->ok())
        delete children_p_list_.remove_cons (pp);
       else
        pp = &(*pp)->next_;
     }
-  Music_iterator::do_process_and_next (until);
+  Music_iterator::do_process (until);
+#endif
 }
 
-
-
-
 Moment
 Simultaneous_music_iterator::next_moment() const
 {
index 6230181c884b04482408c15f11fc4285361dfec4..6c111441f9a259faad65d18225c76b9e938d65fd 100644 (file)
@@ -14,7 +14,7 @@
 #include "command-request.hh"
 
 void
-Time_scaled_music_iterator::do_process_and_next (Moment m)
+Time_scaled_music_iterator::do_process (Moment m)
 {
   if (!m)
     {
@@ -25,5 +25,5 @@ Time_scaled_music_iterator::do_process_and_next (Moment m)
        music_l_->origin ()->warning ( _("no one to print a tuplet start bracket"));
     }
 
-  Music_wrapper_iterator::do_process_and_next (m);
+  Music_wrapper_iterator::do_process (m);
 }
index 6395987a1df84f235dba6c6fbabeacdadaea4b75..92b501f0a5578ab038f734810e0d128cb6bb4ec8 100644 (file)
@@ -135,7 +135,7 @@ Unfolded_repeat_iterator::construct_children ()
 }
 
 void
-Unfolded_repeat_iterator::do_process_and_next (Moment m) 
+Unfolded_repeat_iterator::do_process (Moment m) 
 {
   if (!m)
     {
@@ -156,7 +156,7 @@ Unfolded_repeat_iterator::do_process_and_next (Moment m)
        }
       
       if (m - done_mom_ >= current_iter_p_->next_moment ())
-       current_iter_p_->process_and_next (m - done_mom_);
+       current_iter_p_->process (m - done_mom_);
       else
        return;
     }
index a6684ed45416fa1fccf517d3f06eba82daa19e81..eb9bf8635446905161acf71dc13b1743e45078eb 100644 (file)
@@ -23,7 +23,9 @@ protected:
 ADD_THIS_TRANSLATOR (Voice_devnull_engraver);
 
 static char const *junk_interfaces[] = {
-  //   "beam-interface",
+#if 0
+  "beam-interface",
+#endif
   "slur-interface",
   "tie-interface",
   "text-item-interface",