#ifndef MSP_TIME_TIMEDELTA_H_
#define MSP_TIME_TIMEDELTA_H_
+#include <cstdlib>
#include <ctime>
#include <msp/strings/lexicalcast.h>
#include "rawtime.h"
class TimeDelta
{
private:
- RawTime usec;
+ RawTime usec = 0;
public:
/** Constructs a zero TimeDelta. */
- TimeDelta(): usec(0) { }
+ TimeDelta() { }
/** Constructs a TimeDelta from a plain number. The purpose of this is to
allow serialization together with the raw() function. */
TimeDelta &operator+=(const TimeDelta &t) { usec += t.usec; return *this; }
TimeDelta operator-(const TimeDelta &t) const { return TimeDelta(usec-t.usec); }
TimeDelta &operator-=(const TimeDelta &t) { usec -= t.usec; return *this; }
+ TimeDelta operator-() const { return TimeDelta(-usec); }
template<typename T>
TimeDelta operator*(T a) const { return TimeDelta(RawTime(usec*a)); }
extern const TimeDelta day;
extern const TimeDelta week;
+inline TimeDelta abs(const TimeDelta &t) { return t>=zero ? t : -t; }
+using std::abs;
+
} // namespace Time
} // namespace Msp