diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-08-18 18:51:31 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-08-18 18:51:31 +0000 |
| commit | c1793a87ebea8c8e1bb2d5d1a409d105bfae3871 (patch) | |
| tree | b7ff53cf9747ad61a80b169e1adad96950f4b16c /pokemod/Fraction.cpp | |
| parent | fa4764c9e4d86fdfa976bb9fa9f6976e82c496d5 (diff) | |
| download | sigen-c1793a87ebea8c8e1bb2d5d1a409d105bfae3871.tar.gz sigen-c1793a87ebea8c8e1bb2d5d1a409d105bfae3871.tar.xz sigen-c1793a87ebea8c8e1bb2d5d1a409d105bfae3871.zip | |
[FIX] Script to make a tarball now defaults to HEAD for the revision
[FIX] Enumeration types used to help remove some checks
[FIX] Macro code moved to static members of Object (not all though)
[FIX] Scripting wrappers now share information by keeping track of already-created instances of the wrapper
[FIX] Scripting methods are now Q_SCRIPTABLE and not slots
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@239 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemod/Fraction.cpp')
| -rw-r--r-- | pokemod/Fraction.cpp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/pokemod/Fraction.cpp b/pokemod/Fraction.cpp index a3075775..33c9add0 100644 --- a/pokemod/Fraction.cpp +++ b/pokemod/Fraction.cpp @@ -18,6 +18,45 @@ // Header include #include "Fraction.h" +Pokemod::Fraction::Fraction(const int numerator, const int denominator) +{ + set(numerator, denominator); + reduce(); +} + +Pokemod::Fraction::Fraction(const Fraction& fraction) +{ + set(fraction.numerator(), fraction.denominator()); + reduce(); +} + +void Pokemod::Fraction::set(const int numerator, const int denominator) +{ + m_numerator = numerator; + m_denominator = denominator; + normalize(); +} + +void Pokemod::Fraction::setNumerator(const int numerator) +{ + set(numerator, m_denominator); +} + +void Pokemod::Fraction::setDenominator(const int denominator) +{ + set(m_numerator, denominator); +} + +int Pokemod::Fraction::numerator() const +{ + return m_numerator; +} + +int Pokemod::Fraction::denominator() const +{ + return m_denominator; +} + void Pokemod::Fraction::reduce() { if (!m_numerator || !m_denominator) @@ -31,3 +70,81 @@ void Pokemod::Fraction::reduce() m_numerator /= i; m_denominator /= i; } + +bool Pokemod::Fraction::poll() const +{ + return (qrand() % m_denominator) < m_numerator; +} + +Pokemod::Fraction& Pokemod::Fraction::operator=(const Fraction& rhs) +{ + if (this == &rhs) + return *this; + m_numerator = rhs.m_numerator; + m_denominator = rhs.m_denominator; + return *this; +} + +Pokemod::Fraction::operator double() const +{ + return (double(m_numerator) / m_denominator); +} + +Pokemod::Fraction Pokemod::Fraction::operator+(const Fraction& rhs) const +{ + return Fraction((m_numerator * rhs.m_denominator) + (m_denominator * rhs.m_numerator), m_denominator * rhs.m_denominator); +} + +Pokemod::Fraction Pokemod::Fraction::operator-(const Fraction& rhs) const +{ + return Fraction((m_numerator * rhs.m_denominator) - (m_denominator * rhs.m_numerator), m_denominator * rhs.m_denominator); +} + +Pokemod::Fraction Pokemod::Fraction::operator*(const Fraction& rhs) const +{ + return Fraction(m_numerator * rhs.m_numerator, m_denominator * rhs.m_denominator); +} + +Pokemod::Fraction Pokemod::Fraction::operator/(const Fraction& rhs) const +{ + return Fraction(m_numerator * rhs.m_denominator, m_denominator * rhs.m_numerator); +} + +Pokemod::Fraction& Pokemod::Fraction::operator+=(const Fraction& rhs) +{ + return *this = *this + rhs; +} + +Pokemod::Fraction& Pokemod::Fraction::operator-=(const Fraction& rhs) +{ + return *this = *this - rhs; +} + +Pokemod::Fraction& Pokemod::Fraction::operator*=(const Fraction& rhs) +{ + return *this = *this * rhs; +} + +Pokemod::Fraction& Pokemod::Fraction::operator/=(const Fraction& rhs) +{ + return *this = *this / rhs; +} + +bool Pokemod::Fraction::operator==(const Fraction& rhs) const +{ + return ((m_numerator == rhs.m_numerator) && (m_denominator == rhs.m_denominator)); +} + +bool Pokemod::Fraction::operator!=(const Fraction& rhs) const +{ + return !(*this == rhs); +} + +void Pokemod::Fraction::normalize() +{ + if (m_denominator < 0) + { + m_denominator = -m_denominator; + m_numerator = -m_numerator; + } +} |
