X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmoment.cc;h=bfbd06c88336f3897ee23a091e702abc0d5c1811;hb=f817c9010f8016d5e9c19ec3b167e7d485538eb3;hp=03bd7df4e1df6a9a25555789aa8d93b66a859ceb;hpb=37ec023ff30dca4f6850331fbd526940f8570939;p=lilypond.git diff --git a/lily/moment.cc b/lily/moment.cc index 03bd7df4e1..bfbd06c883 100644 --- a/lily/moment.cc +++ b/lily/moment.cc @@ -1,40 +1,51 @@ /* moment.cc -- implement Moment - + source file of the GNU LilyPond music typesetter - - (c) 1999--2004 Han-Wen Nienhuys - - */ + (c) 1999--2004 Han-Wen Nienhuys +*/ -#include "lily-guile.hh" #include "moment.hh" + #include "warn.hh" -#include "ly-smobs.icc" -IMPLEMENT_SIMPLE_SMOBS (Moment); -IMPLEMENT_TYPE_P (Moment, "ly:moment?"); +Moment::Moment () +{ +} -SCM -Moment::mark_smob (SCM) +Moment::Moment (int m) { - return SCM_EOL; + main_part_ = Rational (m); + grace_part_ = Rational ( 0); } +Moment::Moment (Rational m, Rational g) +{ + main_part_ = m; + grace_part_ = g; +} -SCM -Moment::smobbed_copy () const +Moment::Moment (Rational m) { - Moment * m = new Moment (*this); - return m->smobbed_self (); + main_part_ = m; + grace_part_ = Rational (0); } +#include "ly-smobs.icc" +IMPLEMENT_SIMPLE_SMOBS (Moment); +IMPLEMENT_TYPE_P (Moment, "ly:moment?"); + +SCM +Moment::mark_smob (SCM) +{ + return SCM_EOL; +} int Moment::print_smob (SCM s, SCM port, scm_print_state *) { - Moment *r = (Moment *) ly_cdr (s); + Moment *r = (Moment *) SCM_CELL_WORD_1 (s); scm_puts ("#to_string (); @@ -44,77 +55,17 @@ Moment::print_smob (SCM s, SCM port, scm_print_state *) return 1; } -/* - TODO: add optional factor argument. -*/ -LY_DEFINE (make_moment,"ly:make-moment", 2,0,0, (SCM n, SCM d), - "Create the rational number with main timing @var{n}/@var{d}. \n" - "\n" - "\n" - "Moment is a point in musical time. It is consists of a pair of\n" - "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\n" - "notes, @var{g} is zero.\n" - ) -{ - SCM_ASSERT_TYPE (SCM_INUMP (n), n, SCM_ARG1, __FUNCTION__, "integer"); - SCM_ASSERT_TYPE (SCM_INUMP (d), d, SCM_ARG2, __FUNCTION__, "integer"); - - return Moment (Rational (gh_scm2int (n), gh_scm2int (d))).smobbed_copy (); -} - -LY_DEFINE (add_moment,"ly:add-moment", 2,0,0, (SCM a, SCM b), - "Add 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 (mul_moment,"ly:mul-moment", 2,0,0, (SCM a, SCM b), - "Multiply 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 (div_moment,"ly:div-moment", 2,0,0, (SCM a, SCM b), - "Divide 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_less_p,"ly:moment