#ifndef RANGE_LIMITER_H #define RANGE_LIMITER_H #include #include class RangeLimiter { private: mutable QRandomGenerator gen_; public: inline RangeLimiter(); template inline T bounded(T highest) const noexcept; template inline T bounded(T lowest, T highest) const noexcept; }; RangeLimiter::RangeLimiter() : gen_(QRandomGenerator::securelySeeded()) {} template T RangeLimiter::bounded(T highest) const noexcept { return gen_.bounded(highest); } template T RangeLimiter::bounded(T lowest, T highest) const noexcept { if (lowest >= highest) { QString errorMessage = "Lowest value (%1) is greater than highest value (%2) or equal to it"; qFatal().noquote() << errorMessage.arg(lowest).arg(highest); } return gen_.bounded(lowest, highest); } #endif // RANGE_LIMITER_H