]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/relative-octave-music.cc
* buildscripts/gen-emmentaler-scripts.py (outdir): capitalize
[lilypond.git] / lily / relative-octave-music.cc
index afe6b4a29a5ca04af2b9b572e32d48cd000c7d8d..a6421659a0b8de924fb9e83c989854d0dc5bf2a1 100644 (file)
@@ -3,17 +3,36 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
-#include "relative-music.hh"
+#include "music.hh"
+#include "pitch.hh"
 #include "warn.hh"
 #include "scm-option.hh"
 
-Pitch
-Relative_octave_music::to_relative_octave (Pitch p)
+
+class Relative_octave_music
+{
+public:
+  DECLARE_SCHEME_CALLBACK(relative_callback, (SCM, SCM));
+  DECLARE_SCHEME_CALLBACK(no_relative_callback, (SCM, SCM));
+};
+
+MAKE_SCHEME_CALLBACK(Relative_octave_music, no_relative_callback, 2)
+SCM
+Relative_octave_music::no_relative_callback (SCM music, SCM pitch)
+{
+  (void)music;
+  return pitch;
+}
+
+MAKE_SCHEME_CALLBACK(Relative_octave_music, relative_callback, 2)
+SCM
+Relative_octave_music::relative_callback (SCM music, SCM pitch)
 {
+  Music *me = unsmob_music (music);
   if (lily_1_8_relative)
     {
       lily_1_8_compatibility_used = true;
@@ -23,20 +42,12 @@ Relative_octave_music::to_relative_octave (Pitch p)
         When you do, B should start where A left off.
 
        \relative { A \relative { ...} B }  */
-      Pitch *ptr = unsmob_pitch (get_property ("last-pitch"));
-      return (ptr) ?  *ptr : p;
+      SCM last_pitch = me->get_property ("last-pitch");
+      Pitch *ptr = unsmob_pitch (last_pitch);
+      return (ptr) ?  last_pitch : pitch;
     }
   else
-    return p;
+    return pitch;
 }
 
 
-Relative_octave_music::Relative_octave_music (SCM x)
-  : Music (x)
-{
-  
-}
-
-ADD_MUSIC (Relative_octave_music);
-
-