]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/relative-octave-check.cc
Run `make grand-replace'.
[lilypond.git] / lily / relative-octave-check.cc
index fedc58b9be1b4c5ee4bcf42401ce8ae64f0eea0f..8f997ee81a988ad14a0bf6df0a4b6d130f69ba79 100644 (file)
@@ -1,15 +1,28 @@
-#include "relative-octave-check.hh"
+/*
+  relative-octave-check.cc -- implement Relative_octave_check
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 2005--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
+*/
+
 #include "input.hh"
-#include "pitch.hh"
+#include "international.hh"
+#include "music.hh"
 
-/*
-  yeah, so this should be in a separate file.
-  I'm lazy.
- */
-Pitch
-Relative_octave_check::to_relative_octave (Pitch p)
+class Relative_octave_check
 {
-  Pitch * check_p = unsmob_pitch (get_property ("pitch"));
+public:
+  DECLARE_SCHEME_CALLBACK (relative_callback, (SCM, SCM));
+};
+
+MAKE_SCHEME_CALLBACK (Relative_octave_check, relative_callback, 2)
+  SCM
+Relative_octave_check::relative_callback (SCM music, SCM last_pitch)
+{
+  Pitch p = *unsmob_pitch (last_pitch);
+  Music *m = unsmob_music (music);
+  Pitch *check_p = unsmob_pitch (m->get_property ("pitch"));
 
   int delta_oct = 0;
   if (check_p)
@@ -22,17 +35,16 @@ Relative_octave_check::to_relative_octave (Pitch p)
 
       if (result != *check_p)
        {
-         String s = _("Failed octave check, got: ");
+         string s = _ ("Failed octave check, got: ");
          s += result.to_string ();
-         
-         origin ()->warning (s);
-         
+
+         m->origin ()->warning (s);
+
          delta_oct = check_p->get_octave () - result.get_octave ();
        }
     }
-  
-  return  Pitch (p.get_octave () + delta_oct,
-                p.get_notename (), p.get_alteration ());
-}
 
-ADD_MUSIC (Relative_octave_check);
+  return Pitch (p.get_octave () + delta_oct,
+               p.get_notename (),
+               p.get_alteration ()).smobbed_copy ();
+}