]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/melisma-engraver.cc
test
[lilypond.git] / lily / melisma-engraver.cc
index 434fefbc32fa81a433d2c58d19216d18c954602a..fd35082cdf98cc73a2331af4ad035b6b463c0080 100644 (file)
@@ -3,12 +3,14 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1999--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
 #include "engraver.hh"
 #include "musical-request.hh"
+#include "grob.hh"
+#include "translator-group.hh"
 
 /**
    Signal existence of melismas.
 class Melisma_engraver:public Engraver
 {
 public:
-  VIRTUAL_COPY_CONS(Translator);
-  bool do_try_music (Music *);
+  TRANSLATOR_DECLARATIONS(Melisma_engraver);
+  bool try_music (Music *);
 };
-ADD_THIS_TRANSLATOR(Melisma_engraver);
+
+
 
 bool
-Melisma_engraver::do_try_music (Music *m 
+Melisma_engraver::try_music (Music *m
 {
-  if (dynamic_cast<Melisma_playing_req*>(m))
+  if (dynamic_cast<Melisma_playing_req*> (m))
     {
-      Scalar s (get_property ("melismaBusy", 0));
-      return s.to_bool ();
+      SCM plain (get_property ("melismaBusy"));
+      SCM slur (get_property ("slurMelismaBusy"));
+      SCM tie (get_property ("tieMelismaBusy"));
+      SCM beam (get_property ("beamMelismaBusy"));
+      
+      if ((to_boolean (plain))
+         || (to_boolean (slur))
+         || (to_boolean (tie))
+         || (to_boolean (beam))) {
+
+       daddy_trans_->set_property ("melismaEngraverBusy",SCM_BOOL_T);
+       return true;
+      }
     }
+  daddy_trans_->set_property ("melismaEngraverBusy",SCM_BOOL_F);
   return false;
 }
+Melisma_engraver::Melisma_engraver()
+{
+}
+ENTER_DESCRIPTION(Melisma_engraver,
+/* descr */       "",
+/* creats*/       "",
+/* acks  */       "",
+/* reads */       "melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy",
+/* write */       "");