#include #include namespace sp { Time::Time(long value) : m_us(value) { } double Time::seconds() const { // Faster way of calling milliseconds() / 1000 as // ms = us / 1000 // s = ms / 1000 = us / 1000 / 1000 = us / 10000000 return ((double) m_us) / 1000000.0f; } int Time::milliseconds() const { // ms = us / 1000 return ((double) m_us) / 1000; } long Time::microseconds() const { return m_us; } // ---------------------------- // Helper construct functions // ---------------------------- Time Time::seconds(double value) { return Time((long) std::round(value * 1000000.0f)); } Time Time::milliseconds(int value) { return Time((long) (value * 1000)); } Time Time::microseconds(long value) { return Time(value); } // ---------------------------- // Compare // ---------------------------- bool operator ==(const Time& a, const Time& b) { return a.microseconds() == b.microseconds(); } bool operator !=(const Time& a, const Time& b) { return a.microseconds() != b.microseconds(); } bool operator <(const Time& a, const Time& b) { return a.microseconds() < b.microseconds(); } bool operator <=(const Time& a, const Time& b) { return a.microseconds() <= b.microseconds(); } bool operator >(const Time& a, const Time& b) { return a.microseconds() > b.microseconds(); } bool operator >=(const Time& a, const Time& b) { return a.microseconds() >= b.microseconds(); } // ---------------------------- // Arithmetic // ---------------------------- Time operator +(const Time& a, const Time& b) { return Time(a.microseconds() + b.microseconds()); } Time& operator +=(Time& a, const Time& b) { return a = a + b; } Time operator -(const Time& a, const Time& b) { return Time(a.microseconds() - b.microseconds()); } Time& operator -=(Time& a, const Time& b) { return a = a - b; } } // namespace sp