X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmoment.hh;h=ed7c7b0741d34da984936e12f8c568708ce88ebf;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=ae6dc6f8ce304872f408129bbbc1c6a38b2b61cc;hpb=b542997680bb2d95c3a03a77468b67e04d30685f;p=lilypond.git diff --git a/lily/include/moment.hh b/lily/include/moment.hh index ae6dc6f8ce..ed7c7b0741 100644 --- a/lily/include/moment.hh +++ b/lily/include/moment.hh @@ -1,11 +1,10 @@ -/* +/* moment.hh -- declare Moment - + source file of the GNU LilyPond music typesetter - - (c) 1999--2000 Han-Wen Nienhuys - - */ + + (c) 1999--2008 Han-Wen Nienhuys +*/ #ifndef MOMENT_HH #define MOMENT_HH @@ -14,43 +13,61 @@ #include "rational.hh" /** - Rationals with glue for Guilification; - */ -struct Moment : public Rational + Musical timing (Main-timing, grace-timing) with glue for + Guilification; +*/ +class Moment { - Moment () { self_scm_ = SCM_EOL; } - Moment (int m) : Rational (m) {self_scm_ = SCM_EOL; } - Moment (int m, int n) : Rational (m,n) {self_scm_ = SCM_EOL; } - Moment (Rational m) : Rational (m) {self_scm_ = SCM_EOL; } - ~Moment (); - - DECLARE_SMOBS; -}; + DECLARE_SIMPLE_SMOBS (Moment); +public: + Moment (); + Moment (int m); -SCM smobify (Moment*); -Moment * unsmob_moment (SCM); + Moment (Rational, Rational); + Moment (Rational m); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / ); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + ); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * ); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - ); -IMPLEMENT_ARITHMETIC_OPERATOR (Moment, % ); + Moment operator - () const; -INSTANTIATE_COMPARE (Moment const&, Rational::compare); + 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); -/** - A really big time-moment. + 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 + */ + string to_string () const; + static int compare (Moment const &, Moment const &); + SCM as_scheme () const; +}; + +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, +); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, -); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, /); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, *); +IMPLEMENT_ARITHMETIC_OPERATOR (Moment, %); + +DECLARE_UNSMOB (Moment, moment); +int compare (Moment const &, Moment const &); +INSTANTIATE_COMPARE (Moment const &, Moment::compare); - Windhoze-suck-suck-suck-suck-suck-thank-you-cygnus +Moment robust_scm2moment (SCM, Moment); - I get tired of all these incompatibilities. Let's just assume that - INT_MAX is really, really, really big. +#ifdef STREAM_SUPPORT +ostream &operator << (ostream &, Moment const &); +#endif - Can't we name this Saint_jut_mom (Sintjuttemis ?) */ - -/* URG ! WE HAVE TWO RATIONAL INFINITIES! */ -const Moment infinity_mom = INT_MAX; +bool moment_less (SCM a, SCM b); #endif /* MOMENT_HH */