105 lines
1.8 KiB
C++
105 lines
1.8 KiB
C++
|
|
#include <cmath>
|
|
#include <Spectre/Math/Time.h>
|
|
|
|
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
|