]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/moment.cc
Run `make grand-replace'.
[lilypond.git] / lily / moment.cc
index c892d5f459d4183dc579408b35530d64b2cdd8df..30941e31d77cd59186191230eb2d43afbf95438f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1999--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1999--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #include "moment.hh"
@@ -33,6 +33,7 @@ Moment::Moment (Rational m)
 }
 
 #include "ly-smobs.icc"
+
 IMPLEMENT_SIMPLE_SMOBS (Moment);
 IMPLEMENT_TYPE_P (Moment, "ly:moment?");
 
@@ -48,8 +49,8 @@ Moment::print_smob (SCM s, SCM port, scm_print_state *)
   Moment *r = (Moment *) SCM_CELL_WORD_1 (s);
 
   scm_puts ("#<Mom ", port);
-  String str = r->to_string ();
-  scm_puts ((char *)str.to_str0 (), port);
+  string str = r->to_string ();
+  scm_puts ((char *)str.c_str (), port);
   scm_puts (">", port);
 
   return 1;
@@ -59,10 +60,10 @@ SCM
 Moment::as_scheme () const
 {
   return scm_list_5 (ly_symbol2scm ("ly:make-moment"),
-                    scm_from_int (main_part_.num ()),
-                    scm_from_int (main_part_.den ()),
-                    scm_from_int (grace_part_.num ()),
-                    scm_from_int (grace_part_.den ()));
+                    scm_from_int64 (main_part_.num ()),
+                    scm_from_int64 (main_part_.den ()),
+                    scm_from_int64 (grace_part_.num ()),
+                    scm_from_int64 (grace_part_.den ()));
 }
 
 SCM
@@ -91,45 +92,51 @@ Moment::compare (Moment const &a, Moment const &b)
 }
 
 void
-Moment::operator+= (Moment const &src)
+Moment::operator += (Moment const &src)
 {
   main_part_ += src.main_part_;
   grace_part_ += src.grace_part_;
 }
+
 void
-Moment::operator-= (Moment const &src)
+Moment::operator -= (Moment const &src)
 {
   main_part_ -= src.main_part_;
   grace_part_ -= src.grace_part_;
 }
 
-/*
-  only take the main part of SRC for multiplication.
-*/
+/* Only take the main part of SRC for multiplication.  */
 void
-Moment::operator*= (Moment const &src)
+Moment::operator *= (Moment const &src)
 {
   main_part_ *= src.main_part_;
   grace_part_ *= src.main_part_;
 }
 
-/*
-  only take the main part of SRC for multiplication.
-*/
+/* Only take the main part of SRC for division.  */
 void
-Moment::operator/= (Moment const &src)
+Moment::operator /= (Moment const &src)
 {
   main_part_ /= src.main_part_;
   grace_part_ /= src.main_part_;
 }
 
-int
+/* Only take the main part of SRC for division.  */
+void
+Moment::operator %= (Moment const &src)
+{
+  main_part_ %= src.main_part_;
+  grace_part_ %= src.main_part_;
+}
+
+I64
 Moment::den () const
 {
+  /* TODO: ensure MSB == 0 here */
   return main_part_.den ();
 }
 
-int
+I64
 Moment::num () const
 {
   return main_part_.num ();
@@ -147,29 +154,27 @@ Moment::set_infinite (int k)
   main_part_.set_infinite (k);
 }
 
-String
+string
 Moment::to_string () const
 {
-  String s = main_part_.to_string ();
+  string s = main_part_.to_string ();
   if (grace_part_)
-    {
-      s += "G" + grace_part_.to_string ();
-    }
+    s += "G" + grace_part_.to_string ();
   return s;
 }
 
 Moment
-Moment::operator- () const
+Moment::operator - () const
 {
   Moment m;
   m.grace_part_ = -grace_part_;
-  m. main_part_ = -main_part_;
+  m.main_part_ = -main_part_;
   return m;
 }
 
 #ifdef STREAM_SUPPORT
-std::ostream &
-operator<< (std::ostream &os, Moment const &m)
+ostream &
+operator << (ostream &os, Moment const &m)
 {
   os << m.to_string ();
   return os;