X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmoment-scheme.cc;h=b19259e6b2505d36c30034282cc3caf55abfcdb9;hb=f9214bac21e9926dc3248416f58190c98c4167a9;hp=45754aba5434e8382c844e2cf3e085ef72446da0;hpb=e24df7c27635dc996c466295eacf2981bddccaf7;p=lilypond.git diff --git a/lily/moment-scheme.cc b/lily/moment-scheme.cc index 45754aba54..b19259e6b2 100644 --- a/lily/moment-scheme.cc +++ b/lily/moment-scheme.cc @@ -1,14 +1,13 @@ -/* - moment.cc -- implement Moment bindings +/* + moment.cc -- implement Moment bindings source file of the GNU LilyPond music typesetter - (c) 1999--2005 Han-Wen Nienhuys + (c) 1999--2007 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), @@ -17,7 +16,7 @@ LY_DEFINE (ly_make_moment, "ly:make-moment", "\n" "\n" "Moment is a point in musical time. " - "It is consists of a pair of rationals (@var{m},@var{g}), " + "It is consists of a pair of rationals (@var{m}, @var{g}), " "where @var{m} is the timing for the main\n" "notes, and @var{g} the timing for grace notes. " "In absence of grace notes, @var{g} is zero.\n") @@ -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,30 +83,60 @@ 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_main_numerator,"ly:moment-main-numerator", +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.") { 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", +LY_DEFINE (ly_moment_main_denominator, "ly:moment-main-denominator", 1, 0, 0, (SCM mom), "Extract denominator from main timing.") { 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