X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Frelative-octave-check.cc;h=f7a81a78d105e3dd91cf9e33c6eeb134a45a8100;hb=ca20eaa74e7e762c0611de26cc2267909ae27e02;hp=f751dc1e241f327b228ca0b74be6daf7e2bb01eb;hpb=276413150fbc1eb23354c0bde8bab655b26a937e;p=lilypond.git diff --git a/lily/relative-octave-check.cc b/lily/relative-octave-check.cc index f751dc1e24..f7a81a78d1 100644 --- a/lily/relative-octave-check.cc +++ b/lily/relative-octave-check.cc @@ -7,16 +7,25 @@ */ -#include "relative-octave-check.hh" - +#include "music.hh" #include "input.hh" #include "pitch.hh" -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) { @@ -31,20 +40,12 @@ Relative_octave_check::to_relative_octave (Pitch p) 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 ()); + return Pitch (p.get_octave () + delta_oct, + p.get_notename (), p.get_alteration ()).smobbed_copy (); } - - -Relative_octave_check::Relative_octave_check (SCM x) - : Music (x) -{ -} - -ADD_MUSIC (Relative_octave_check);