* The grand 2005-2006 replace.
[lilypond/patrick.git] / lily / include / moment.hh
blobea6ef59a5fa5d7ff23a68e655fc1c190082d3e19
1 /*
2 moment.hh -- declare Moment
4 source file of the GNU LilyPond music typesetter
6 (c) 1999--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
7 */
9 #ifndef MOMENT_HH
10 #define MOMENT_HH
12 #include "smobs.hh"
13 #include "rational.hh"
15 /**
16 Musical timing (Main-timing, grace-timing) with glue for
17 Guilification;
19 class Moment
21 DECLARE_SIMPLE_SMOBS (Moment,);
22 public:
23 Moment ();
24 Moment (int m);
26 Moment (Rational, Rational);
27 Moment (Rational m);
29 Moment operator - () const;
31 void operator += (Moment const &m);
32 void operator -= (Moment const &m);
34 void operator *= (Moment const &m);
35 void operator /= (Moment const &m);
36 void operator %= (Moment const &m);
38 Rational main_part_;
39 Rational grace_part_;
41 void set_infinite (int k);
43 bool to_bool () const;
44 int den () const;
45 int num () const;
47 Deliver a copy of THIS as a smobified SCM
49 String to_string () const;
50 static int compare (Moment const &, Moment const &);
51 SCM as_scheme () const;
53 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, +);
54 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, -);
55 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, /);
56 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, *);
57 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, %);
59 DECLARE_UNSMOB (Moment, moment);
60 int compare (Moment const &, Moment const &);
61 INSTANTIATE_COMPARE (Moment const &, Moment::compare);
63 Moment robust_scm2moment (SCM, Moment);
65 #ifdef STREAM_SUPPORT
66 ostream &operator << (ostream &, Moment const &);
67 #endif
69 bool moment_less (SCM a, SCM b);
71 #endif /* MOMENT_HH */