From aabbf231c5ef6177cab5250ff99bb172ee55efab Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Thu, 24 May 2012 15:03:26 +1000 Subject: [PATCH] Add more scalar operators for range --- range.cpp | 17 +++++++++++++++++ range.hpp | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/range.cpp b/range.cpp index 55b8d763..3e70aa82 100644 --- a/range.cpp +++ b/range.cpp @@ -95,6 +95,23 @@ range::normalise (T val) const { } +template +range& +range::operator*= (T val) { + min *= val; + max *= val; + + return *this; +} + + +template +range +range::operator* (T val) const { + return range (min * val, max * val); +} + + namespace util { template <> double diff --git a/range.hpp b/range.hpp index 3a809f1f..4c76e99e 100644 --- a/range.hpp +++ b/range.hpp @@ -48,9 +48,22 @@ namespace util { /// Expand the range to include this value if necessary void expand (T val); + /// Normalise a number to [0, 1] within the range. Does not check bounds. double normalise (T val) const; + range& operator*= (T); + range operator* (T) const; + + range& operator/= (T); + range operator/ (T) const; + + range& operator+= (T); + range operator+ (T) const; + + range& operator-= (T); + range operator- (T) const; + /// Return a pseudo-random uniformly distributed value within the range. /// There are no statistical randomness guarantees whatsoever. T random (void) const;