X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmoment.hh;h=5671d6b2342b7cbf915b017faa84e8d22fc23532;hb=3345456ec7a84db2deb50f3f9f825b4f18870d7b;hp=55a5c87a812349e456279cd3e3e141a98d186e12;hpb=287611887cd612ac84dbf10c5fe4e1a44cc56596;p=lilypond.git diff --git a/lily/include/moment.hh b/lily/include/moment.hh index 55a5c87a81..5671d6b234 100644 --- a/lily/include/moment.hh +++ b/lily/include/moment.hh @@ -1,11 +1,21 @@ -/* - moment.hh -- declare Moment - - source file of the GNU LilyPond music typesetter - - (c) 1999--2000 Han-Wen Nienhuys - - */ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 1999--2011 Han-Wen Nienhuys + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ #ifndef MOMENT_HH #define MOMENT_HH @@ -14,35 +24,61 @@ #include "rational.hh" /** - Rationals with glue for Guilification; - - FIXME: remove self_scm_ and then remove this class */ -class Moment : public Rational + Musical timing (Main-timing, grace-timing) with glue for + Guilification; +*/ +class Moment { - DECLARE_SIMPLE_SMOBS(Moment,); + DECLARE_SIMPLE_SMOBS (Moment); public: - Moment () { } - Moment (int m) : Rational (m) { } - Moment (int m, int n) : Rational (m,n) { } - Moment (Rational m) : Rational (m) { } + Moment (); + Moment (int m); + + Moment (Rational, Rational); + Moment (Rational m); + + Moment operator - () const; + + void operator += (Moment const &m); + void operator -= (Moment const &m); + void operator *= (Moment const &m); + void operator /= (Moment const &m); + void operator %= (Moment const &m); + + Rational main_part_; + Rational grace_part_; + + void set_infinite (int k); + + bool to_bool () const; + I64 den () const; + I64 num () const; /* Deliver a copy of THIS as a smobified SCM - */ - SCM make_scm () const; + */ + string to_string () const; + static int compare (Moment const &, Moment const &); + SCM as_scheme () const; }; - -Moment * unsmob_moment (SCM); - +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, +); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, -); IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / ); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + ); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * ); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - ); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, *); IMPLEMENT_ARITHMETIC_OPERATOR (Moment, % ); -INSTANTIATE_COMPARE (Moment const&, Rational::compare); +DECLARE_UNSMOB (Moment, moment); +int compare (Moment const &, Moment const &); +INSTANTIATE_COMPARE (Moment const &, Moment::compare); + +Moment robust_scm2moment (SCM, Moment); + +#ifdef STREAM_SUPPORT +ostream &operator << (ostream &, Moment const &); +#endif +bool moment_less (SCM a, SCM b); #endif /* MOMENT_HH */