X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Frational.hh;h=8583de70e2982368077d2b6575ea112a705a0ffe;hb=9e781b7dc83b60a543ce218aa1a5f139f74c760f;hp=5effd3787af9ef3249f37b9b24b5701b93058c7c;hpb=e42585017a01fd02f6353b994cf0c87b03a7bb2e;p=lilypond.git diff --git a/flower/include/rational.hh b/flower/include/rational.hh index 5effd3787a..8583de70e2 100644 --- a/flower/include/rational.hh +++ b/flower/include/rational.hh @@ -1,15 +1,28 @@ /* - rational.hh -- declare rational helpers + This file is part of LilyPond, the GNU music typesetter. - source file of the Flower Library + Copyright (C) 1997--2014 Han-Wen Nienhuys - (c) 1997--2006 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #ifndef RATIONAL_HH #define RATIONAL_HH +#include "flower-proto.hh" #include "std-string.hh" +#include /** Rational numbers. Included is support for + and - infinity. @@ -25,7 +38,7 @@ class Rational 0 if *this is zero. */ int sign_; - unsigned int num_, den_; + U64 num_, den_; void normalize (); void copy (Rational const &); @@ -33,10 +46,10 @@ public: void set_infinite (int sign); bool is_infinity () const; void invert (); - int numerator () const { return sign_ * num_; } - int denominator () const { return den_; } - int num () const { return numerator (); } - int den () const { return denominator (); } + I64 numerator () const { return sign_ * num_; } + I64 denominator () const { return den_; } + I64 num () const { return numerator (); } + I64 den () const { return denominator (); } Rational trunc_rat () const; Rational div_rat (Rational) const; @@ -54,12 +67,15 @@ public: */ Rational (); Rational (int); - explicit Rational (int, int); + Rational (I64); + Rational (U64); + explicit Rational (I64, I64); explicit Rational (double); Rational (Rational const &r) { copy (r);} Rational &operator = (Rational const &r) { - copy (r); return *this; + copy (r); + return *this; } Rational &operator *= (Rational); @@ -74,11 +90,11 @@ public: #include "arithmetic-operator.hh" -IMPLEMENT_ARITHMETIC_OPERATOR (Rational, /); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, / ); 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); @@ -98,6 +114,6 @@ ostream & operator << (ostream &, Rational); #endif -const Rational infinity_rat (INT_MAX); +const Rational infinity_rat (U64_MAX); #endif // RATIONAL_HH