X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmoment-scheme.cc;h=bc8dfae78b9ccbc9b806a36932f2da122641e48a;hb=cfee004dad1a3138b02a297884a41b8109d6df62;hp=865431c6da63b9f84bfd7135c324c1355d31eaea;hpb=58bcc84c9480dae1b21bc24d8396b91fe19e0131;p=lilypond.git diff --git a/lily/moment-scheme.cc b/lily/moment-scheme.cc index 865431c6da..bc8dfae78b 100644 --- a/lily/moment-scheme.cc +++ b/lily/moment-scheme.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1999--2005 Han-Wen Nienhuys + (c) 1999--2006 Han-Wen Nienhuys */ #include "moment.hh" @@ -42,7 +42,18 @@ LY_DEFINE (ly_make_moment, "ly:make-moment", Rational (grace_num, grace_den)).smobbed_copy (); } -LY_DEFINE (ly_add_moment, "ly:add-moment", +LY_DEFINE (ly_sub_moment, "ly:moment-sub", + 2, 0, 0, (SCM a, SCM b), + "Subtract two moments.") +{ + Moment *ma = unsmob_moment (a); + Moment *mb = unsmob_moment (b); + SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment"); + SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment"); + return (*ma - *mb).smobbed_copy (); +} + +LY_DEFINE (ly_moment_add, "ly:moment-add", 2, 0, 0, (SCM a, SCM b), "Add two moments.") { @@ -53,7 +64,7 @@ LY_DEFINE (ly_add_moment, "ly:add-moment", return (*ma + *mb).smobbed_copy (); } -LY_DEFINE (ly_mul_moment, "ly:mul-moment", +LY_DEFINE (ly_moment_mul, "ly:moment-mul", 2, 0, 0, (SCM a, SCM b), "Multiply two moments.") { @@ -61,10 +72,10 @@ LY_DEFINE (ly_mul_moment, "ly:mul-moment", Moment *mb = unsmob_moment (b); SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment"); SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment"); - return (*ma * *mb).smobbed_copy (); + return (*ma * * mb).smobbed_copy (); } -LY_DEFINE (ly_div_moment, "ly:div-moment", +LY_DEFINE (ly_moment_div, "ly:moment-div", 2, 0, 0, (SCM a, SCM b), "Divide two moments.") { @@ -72,9 +83,39 @@ LY_DEFINE (ly_div_moment, "ly:div-moment", Moment *mb = unsmob_moment (b); SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment"); SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment"); - return (*ma / *mb).smobbed_copy (); + return (*ma / * mb).smobbed_copy (); } +LY_DEFINE (ly_moment_mod, "ly:moment-mod", + 2, 0, 0, (SCM a, SCM b), + "Modulo of two moments.") +{ + Moment *ma = unsmob_moment (a); + Moment *mb = unsmob_moment (b); + SCM_ASSERT_TYPE (ma, a, SCM_ARG1, __FUNCTION__, "moment"); + SCM_ASSERT_TYPE (mb, b, SCM_ARG2, __FUNCTION__, "moment"); + return (*ma % * mb).smobbed_copy (); +} + +LY_DEFINE (ly_moment_grace_numerator, "ly:moment-grace-numerator", + 1, 0, 0, (SCM mom), + "Extract numerator from grace timing.") +{ + Moment *ma = unsmob_moment (mom); + SCM_ASSERT_TYPE (ma, mom, SCM_ARG1, __FUNCTION__, "moment"); + + return scm_from_int (ma->grace_part_.numerator ()); +} + +LY_DEFINE (ly_moment_grace_denominator, "ly:moment-grace-denominator", + 1, 0, 0, (SCM mom), + "Extract denominator from grace timing.") +{ + Moment *ma = unsmob_moment (mom); + SCM_ASSERT_TYPE (ma, mom, SCM_ARG1, __FUNCTION__, "moment"); + + return scm_from_int (ma->grace_part_.denominator ()); +} LY_DEFINE (ly_moment_main_numerator, "ly:moment-main-numerator", 1, 0, 0, (SCM mom), "Extract numerator from main timing.")