X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-scheme.cc;h=c52b1d6a8727a1ef591eea6201aba2d1220c5084;hb=e93ef6da649651c20932fa4acbe807e8cb37e0ac;hp=4da272678277b18daac75266058cfafe2435e30f;hpb=dbb4524af169a9c15e5c7fcfddfa1a4b85dd288d;p=lilypond.git diff --git a/lily/music-scheme.cc b/lily/music-scheme.cc index 4da2726782..c52b1d6a87 100644 --- a/lily/music-scheme.cc +++ b/lily/music-scheme.cc @@ -3,48 +3,39 @@ source file of the GNU LilyPond music typesetter - (c) 2005--2006 Han-Wen Nienhuys + (c) 2005--2007 Han-Wen Nienhuys */ +#include "music.hh" + #include "duration.hh" #include "warn.hh" -#include "music.hh" -#include "pitch.hh" LY_DEFINE (ly_music_length, "ly:music-length", 1, 0, 0, (SCM mus), "Get the length of music expression @var{mus}, and return as a @code{Moment} object.") { + LY_ASSERT_TYPE (unsmob_music, mus, 1); Music *sc = unsmob_music (mus); - SCM_ASSERT_TYPE (sc, mus, SCM_ARG1, __FUNCTION__, "music"); return sc->get_length ().smobbed_copy (); } LY_DEFINE (ly_music_property, - "ly:music-property", 2, 0, 0, (SCM mus, SCM sym), + "ly:music-property", 2, 1, 0, (SCM mus, SCM sym, SCM dfault), "Get the property @var{sym} of music expression @var{mus}.\n" - "If @var{sym} is undefined, return @code{' ()}.\n") + "If @var{sym} is undefined, return @code{'()}.\n") { - Music *sc = unsmob_music (mus); - SCM_ASSERT_TYPE (sc, mus, SCM_ARG1, __FUNCTION__, "music"); - SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); - - return sc->internal_get_property (sym); + LY_ASSERT_TYPE (unsmob_music, mus, 1); + return ly_prob_property (mus, sym, dfault); } -LY_DEFINE (ly_music_set_property, "ly:music-set-property!", +LY_DEFINE (ly_music_set_property_x, "ly:music-set-property!", 3, 0, 0, (SCM mus, SCM sym, SCM val), "Set property @var{sym} in music expression @var{mus} to @var{val}.") { - Music *sc = unsmob_music (mus); - SCM_ASSERT_TYPE (sc, mus, SCM_ARG1, __FUNCTION__, "music"); - SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); + LY_ASSERT_TYPE (unsmob_music, mus, 1); - bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?")); - if (ok) - sc->internal_set_property (sym, val); - - return SCM_UNSPECIFIED; + return ly_prob_set_property_x (mus, sym, val); } @@ -77,8 +68,8 @@ LY_DEFINE (ly_music_mutable_properties, "ly:music-mutable-properties", "they are constant and initialized by the " "@code{make-music} function.\n") { + LY_ASSERT_TYPE (unsmob_music, mus, 1); Music *m = unsmob_music (mus); - SCM_ASSERT_TYPE (m, mus, SCM_ARG1, __FUNCTION__, "music"); return m->get_property_alist (true); } @@ -119,10 +110,11 @@ LY_DEFINE (ly_music_transpose, "ly:music-transpose", "Transpose @var{m} such that central C is mapped to @var{p}. " "Return @var{m}.") { + LY_ASSERT_TYPE (unsmob_music, m, 1); + LY_ASSERT_SMOB (Pitch, p, 2); + Music *sc = unsmob_music (m); Pitch *sp = unsmob_pitch (p); - SCM_ASSERT_TYPE (sc, m, SCM_ARG1, __FUNCTION__, "music"); - SCM_ASSERT_TYPE (sp, p, SCM_ARG2, __FUNCTION__, "pitch"); sc->transpose (*sp); // SCM_UNDEFINED ? @@ -136,11 +128,10 @@ LY_DEFINE (ly_music_compress, "ly:music-compress", 2, 0, 0, (SCM m, SCM factor), "Compress music object @var{m} by moment @var{factor}.") { - Music *sc = unsmob_music (m); - - SCM_ASSERT_TYPE (sc, m, SCM_ARG1, __FUNCTION__, "music"); - SCM_ASSERT_TYPE (unsmob_moment (factor), factor, SCM_ARG2, __FUNCTION__, "moment"); + LY_ASSERT_TYPE (unsmob_music, m, 1); + LY_ASSERT_TYPE (unsmob_moment, factor, 2); + Music *sc = unsmob_music (m); sc->compress (*unsmob_moment (factor)); return sc->self_scm (); } @@ -149,8 +140,8 @@ LY_DEFINE (ly_music_duration_length, "ly:music-duration-length", 1, 0, 0, (SCM mus), "Extract the duration field from @var{mus}, and return the length.") { + LY_ASSERT_TYPE (unsmob_music, mus, 1); Music *m = unsmob_music (mus); - SCM_ASSERT_TYPE (m, mus, SCM_ARG1, __FUNCTION__, "Music"); Duration *d = unsmob_duration (m->get_property ("duration")); Moment len; @@ -166,10 +157,11 @@ LY_DEFINE (ly_music_duration_compress, "ly:music-duration-compress", 2, 0, 0, (SCM mus, SCM fact), "Compress @var{mus} by factor @var{fact}, which is a @code{Moment}.") { + LY_ASSERT_TYPE (unsmob_music, mus, 1); + LY_ASSERT_SMOB (Moment, fact, 2); + Music *m = unsmob_music (mus); Moment *f = unsmob_moment (fact); - SCM_ASSERT_TYPE (m, mus, SCM_ARG1, __FUNCTION__, "Music"); - SCM_ASSERT_TYPE (f, fact, SCM_ARG2, __FUNCTION__, "Moment"); Duration *d = unsmob_duration (m->get_property ("duration")); if (d) @@ -199,23 +191,23 @@ LY_DEFINE (ly_transpose_key_alist, "ly:transpose-key-alist", { Pitch orig (scm_to_int (scm_car (key)), scm_to_int (scm_cdr (key)), - scm_to_int (alter)); + ly_scm2rational (alter)); orig = orig.transposed (*p); SCM key = scm_cons (scm_from_int (orig.get_octave ()), scm_from_int (orig.get_notename ())); - newlist = scm_cons (scm_cons (key, scm_from_int (orig.get_alteration ())), + newlist = scm_cons (scm_cons (key, ly_rational2scm (orig.get_alteration ())), newlist); } else if (scm_is_number (key)) { - Pitch orig (0, scm_to_int (key), scm_to_int (alter)); + Pitch orig (0, scm_to_int (key), ly_scm2rational (alter)); orig = orig.transposed (*p); key = scm_from_int (orig.get_notename ()); - alter = scm_from_int (orig.get_alteration ()); + alter = ly_rational2scm (orig.get_alteration ()); newlist = scm_cons (scm_cons (key, alter), newlist); } }