X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fduration-scheme.cc;h=fb4bb102632b9946286d07abc048dfb4308b306a;hb=7dcae7597fae14ce5c4e2e7d50c2709d162b7332;hp=1d840a753e2e9649005ad69ec6cd9f5acdf3fa31;hpb=58bcc84c9480dae1b21bc24d8396b91fe19e0131;p=lilypond.git diff --git a/lily/duration-scheme.cc b/lily/duration-scheme.cc index 1d840a753e..fb4bb10263 100644 --- a/lily/duration-scheme.cc +++ b/lily/duration-scheme.cc @@ -3,8 +3,8 @@ source file of the LilyPond music typesetter - (c) 1997--2005 Jan Nieuwenhuizen - Han-Wen Nienhuys + (c) 1997--2006 Jan Nieuwenhuizen + Han-Wen Nienhuys */ #include "duration.hh" @@ -71,7 +71,7 @@ LY_DEFINE (ly_make_duration, "ly:make-duration", compress = true; } else - num = scm_int2num (1); + num = scm_from_int (1); if (den != SCM_UNDEFINED) { @@ -79,7 +79,7 @@ LY_DEFINE (ly_make_duration, "ly:make-duration", compress = true; } else - den = scm_int2num (1); + den = scm_from_int (1); Duration p (scm_to_int (length), dots); if (compress) @@ -93,7 +93,7 @@ LY_DEFINE (ly_duration_log, "ly:duration-log", "Extract the duration log from @var{dur}") { SCM_ASSERT_TYPE (unsmob_duration (dur), dur, SCM_ARG1, __FUNCTION__, "duration"); - return scm_int2num (unsmob_duration (dur)->duration_log ()); + return scm_from_int (unsmob_duration (dur)->duration_log ()); } LY_DEFINE (ly_duration_dot_count, "ly:duration-dot-count", @@ -101,7 +101,7 @@ LY_DEFINE (ly_duration_dot_count, "ly:duration-dot-count", "Extract the dot count from @var{dur}") { SCM_ASSERT_TYPE (unsmob_duration (dur), dur, SCM_ARG1, __FUNCTION__, "duration"); - return scm_int2num (unsmob_duration (dur)->dot_count ()); + return scm_from_int (unsmob_duration (dur)->dot_count ()); } LY_DEFINE (ly_intlog2, "ly:intlog2", @@ -110,7 +110,15 @@ LY_DEFINE (ly_intlog2, "ly:intlog2", { SCM_ASSERT_TYPE (scm_is_number (d), d, SCM_ARG1, __FUNCTION__, "integer"); int log = intlog2 (scm_to_int (d)); - return scm_int2num (log); + return scm_from_int (log); +} + +LY_DEFINE (ly_duration_length, "ly:duration-length", + 1, 0, 0, (SCM dur), + "The length of the duration as a Moment.") +{ + SCM_ASSERT_TYPE (unsmob_duration (dur), dur, SCM_ARG1, __FUNCTION__, "duration"); + return Moment (unsmob_duration (dur)->get_length ()).smobbed_copy (); } LY_DEFINE (ly_duration_factor, "ly:duration-factor", @@ -119,5 +127,5 @@ LY_DEFINE (ly_duration_factor, "ly:duration-factor", { SCM_ASSERT_TYPE (unsmob_duration (dur), dur, SCM_ARG1, __FUNCTION__, "duration"); Rational r = unsmob_duration (dur)->factor (); - return scm_cons (scm_int2num (r.num ()), scm_int2num (r.den ())); + return scm_cons (scm_from_int (r.num ()), scm_from_int (r.den ())); }