2 duration.cc -- implement Duration, Plet,
4 source file of the LilyPond music typesetter
6 (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
7 Han-Wen Nienhuys <hanwen@cs.uu.nl>
13 #include "lily-proto.hh"
16 #include "duration.hh"
19 compare (Array<Duration>* left, Array<Duration>* right)
24 if (left->size () == right->size ())
26 for (int i = 0; i < left->size (); i++)
28 int r = Duration::compare ((*left)[i], (*right)[i]);
39 Duration::compare (Duration const &left, Duration const &right)
41 return Rational::compare (left.length_mom (), right.length_mom ());
53 Duration::compress (Rational m)
55 tuplet_iso_i_ *= m.num_i ();
56 tuplet_type_i_ *= m.den_i ();
60 Duration::length_mom () const
62 Rational mom (1 << abs (durlog_i_));
69 for (int d = dots_i_; d; d--)
75 return mom * Moment (tuplet_iso_i_, tuplet_type_i_);
79 Duration::set_plet (int i, int t)
87 Duration::str () const
89 return to_str (durlog_i_) + to_str ('.', dots_i_);
96 return tuplet_iso_i_ != 1 || tuplet_type_i_ != 1;