]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/moment.hh
release: 1.3.60
[lilypond.git] / lily / include / moment.hh
1 /*   
2   moment.hh -- declare Moment
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 1999--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9
10 #ifndef MOMENT_HH
11 #define MOMENT_HH
12
13 #include "smobs.hh"
14 #include "rational.hh"
15
16 /**
17    Rationals with glue for Guilification;
18
19    FIXME: remove self_scm_ and then remove this class */
20 struct Moment : public Rational
21 {
22   Moment () { self_scm_ = SCM_EOL; }
23   Moment (int m) : Rational (m) {self_scm_ = SCM_EOL; }
24   Moment (int m, int n) : Rational (m,n) {self_scm_ = SCM_EOL; }
25   Moment (Rational m) : Rational (m) {self_scm_ = SCM_EOL; }
26   ~Moment ();
27   
28   DECLARE_SMOBS;
29 };
30
31 SCM smobify (Moment*);
32 Moment * unsmob_moment (SCM);
33
34 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / );
35 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + );
36 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * );
37 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - );
38 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, % );
39
40 INSTANTIATE_COMPARE (Moment const&, Rational::compare);
41
42
43 /**
44   A really big time-moment.
45
46   Windhoze-suck-suck-suck-suck-suck-thank-you-cygnus
47
48   I get tired of all these incompatibilities.  Let's just assume that
49   INT_MAX is really, really, really big.
50
51   Can't we name this Saint_jut_mom (Sintjuttemis ?)  */
52   
53 /* URG ! WE HAVE TWO RATIONAL INFINITIES! */
54 const Moment infinity_mom = INT_MAX;
55
56 #endif /* MOMENT_HH */
57