X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmoment-scheme.cc;h=bc8dfae78b9ccbc9b806a36932f2da122641e48a;hb=8331554b76548e31544738675fe5c6ab86fc5949;hp=a9ba114ed8c0b9b9050baeaa386163bd7a219dda;hpb=634ad74db688a5305f001917453c5cd15305c539;p=lilypond.git diff --git a/lily/moment-scheme.cc b/lily/moment-scheme.cc index a9ba114ed8..bc8dfae78b 100644 --- a/lily/moment-scheme.cc +++ b/lily/moment-scheme.cc @@ -1,14 +1,13 @@ -/* +/* moment.cc -- implement Moment bindings source file of the GNU LilyPond music typesetter - (c) 1999--2005 Han-Wen Nienhuys + (c) 1999--2006 Han-Wen Nienhuys */ #include "moment.hh" - /* TODO: add optional factor argument. */ LY_DEFINE (ly_make_moment, "ly:make-moment", 2, 2, 0, (SCM n, SCM d, SCM gn, SCM gd), @@ -43,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.") { @@ -54,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.") { @@ -62,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.") { @@ -73,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.") @@ -83,7 +123,7 @@ LY_DEFINE (ly_moment_main_numerator, "ly:moment-main-numerator", Moment *ma = unsmob_moment (mom); SCM_ASSERT_TYPE (ma, mom, SCM_ARG1, __FUNCTION__, "moment"); - return scm_from_int (ma->main_part_.numerator ()); + return scm_from_int (ma->main_part_.numerator ()); } LY_DEFINE (ly_moment_main_denominator, "ly:moment-main-denominator", @@ -93,7 +133,7 @@ LY_DEFINE (ly_moment_main_denominator, "ly:moment-main-denominator", Moment *ma = unsmob_moment (mom); SCM_ASSERT_TYPE (ma, mom, SCM_ARG1, __FUNCTION__, "moment"); - return scm_from_int (ma->main_part_.denominator ()); + return scm_from_int (ma->main_part_.denominator ()); } LY_DEFINE (ly_moment_less_p, "ly:moment