X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Frational.hh;h=69a9ab1bd20b429bfe6e2f38739b096c8218409d;hb=d8ddee6490dd1bb4965980d3e952a390493bfffd;hp=c8af749cda277dbf05ffa8eaa803202f47d57969;hpb=8aad615ea7bb31f49a0c2afc21eea5ff5de20437;p=lilypond.git diff --git a/flower/include/rational.hh b/flower/include/rational.hh index c8af749cda..69a9ab1bd2 100644 --- a/flower/include/rational.hh +++ b/flower/include/rational.hh @@ -3,22 +3,18 @@ source file of the Flower Library - (c) 1997--1999 Han-Wen Nienhuys + (c) 1997--2000 Han-Wen Nienhuys */ #ifndef RATIONAL_HH #define RATIONAL_HH -#if PARANOIA -#ifndef Rational -#define Rational MyRational -#endif -#endif #include "compare.hh" #include "arithmetic-operator.hh" -#include "fproto.hh" +#include "flower-proto.hh" +class String; /** Rational numbers. Included is support for + and - infinity. @@ -45,7 +41,9 @@ public: int den () const { return den_; } int num_i () const { return sign_ * num_; } int den_i () const { return den_; } - Rational truncated () const; + Rational trunc_rat () const; + Rational div_rat (Rational) const; + Rational mod_rat (Rational) const; void negate (); operator bool () const; operator int () const; @@ -57,13 +55,14 @@ public: Rational (); Rational (int, int =1); Rational (double); - Rational (Rational const&); + Rational (Rational const&r) { copy (r);} Rational &operator = (Rational const &); Rational &operator *= (Rational); Rational &operator /= (Rational); Rational &operator += (Rational); Rational &operator -= (Rational); + Rational &operator %= (Rational); static int compare (Rational const&, Rational const&); int sign () const; String str () const; @@ -73,6 +72,7 @@ IMPLEMENT_ARITHMETIC_OPERATOR (Rational, / ); IMPLEMENT_ARITHMETIC_OPERATOR (Rational, + ); IMPLEMENT_ARITHMETIC_OPERATOR (Rational, * ); IMPLEMENT_ARITHMETIC_OPERATOR (Rational, - ); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, % ); INSTANTIATE_COMPARE (Rational const&, Rational::compare); @@ -91,4 +91,6 @@ class ostream; ostream & operator << (ostream &, Rational); +const Rational infinity_rat = INT_MAX; + #endif // RATIONAL_HH