From d7e238cb2f08283523adced82b55b43ba7c2e42f Mon Sep 17 00:00:00 2001 From: fred Date: Sun, 24 Mar 2002 20:06:41 +0000 Subject: [PATCH] lilypond-0.1.48 --- .dstreamrc | 4 +-- flower/include/rational.hh | 65 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/.dstreamrc b/.dstreamrc index d92dd4797c..d59bde6e3e 100644 --- a/.dstreamrc +++ b/.dstreamrc @@ -7,13 +7,13 @@ Dstream 1 InitParser 1 Parser 1 InitDeclarations 1 -Declarations 1 +Declarations 0 # FlexLexer debug InitLexer 1 Lexer 1 -walking 1 +walking 0 # flower lib File_path 1 diff --git a/flower/include/rational.hh b/flower/include/rational.hh index fb75268d92..4160af814d 100644 --- a/flower/include/rational.hh +++ b/flower/include/rational.hh @@ -9,9 +9,68 @@ #ifndef RATIONAL_HH #define RATIONAL_HH -#include -/// print a Rational. To be called from the debugger -void print_rat (Rational const&); +#if PARANOIA +#ifndef Rational +#define Rational MyRational +#endif +#endif + +#include "compare.hh" +#include "arithmetic-operator.hh" +#include "fproto.hh" + +class Rational { + int sign_; + unsigned int num_, den_; + void normalise (); + void copy (Rational const &); +public: + void set_infinite (int sign); + bool infty_b () const; + void invert (); + int num () const { return sign_ * num_; } + int den () const { return den_; } + Rational truncated () const; + void negate (); + operator bool () const; + operator String () const; + Rational operator - () const; + Rational (); + Rational (int, int =1); + Rational (double); + Rational (Rational const&); + + Rational &operator = (Rational const &); + 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; +}; + +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, / ); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, + ); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, * ); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, - ); + +INSTANTIATE_COMPARE (Rational const&, Rational::compare); + +int compare (Rational const&,Rational const&); +int sign (Rational r); + +inline void +Rational::copy (Rational const&r) +{ + sign_ = r.sign_; + num_ = r.num_; + den_ = r.den_; +} + +class ostream; +ostream & +operator << (ostream &, Rational); #endif // RATIONAL_HH -- 2.39.5