blob: d59c49c7dba5538ba58e220f42afcb3c403c25e4 [file] [log] [blame]
/* synopsis
class universal_time
{
public:
universal_time(); // current time
universal_time& operator += (const elapsed_time& dt);
universal_time& operator -= (const elapsed_time& dt);
std::time_t sec_;
std::int32_t nsec_;
};
class elapsed_time
{
public:
explicit elapsed_time(std::time_t sec = 0, std::int32_t nsec = 0);
elapsed_time& operator += (const elapsed_time& dt);
elapsed_time& operator -= (const elapsed_time& dt);
elapsed_time operator - () const;
elapsed_time operator + () const;
std::time_t sec_;
std::int32_t nsec_;
};
elapsed_time operator-(const universal_time& t1, const universal_time& t2);
universal_time operator-(const universal_time& t1, const elapsed_time& dt);
elapsed_time operator-(const elapsed_time& dt1, const elapsed_time& dt2);
universal_time operator+(const universal_time& t1, const elapsed_time& dt);
universal_time operator+(const elapsed_time& dt, const universal_time& t1);
elapsed_time operator+(const elapsed_time& dt1, const elapsed_time& dt2);
bool operator == (const universal_time& x, const universal_time& y);
bool operator != (const universal_time& x, const universal_time& y);
bool operator < (const universal_time& x, const universal_time& y);
bool operator <= (const universal_time& x, const universal_time& y);
bool operator > (const universal_time& x, const universal_time& y);
bool operator >= (const universal_time& x, const universal_time& y);
bool operator == (const elapsed_time& x, const elapsed_time& y);
bool operator != (const elapsed_time& x, const elapsed_time& y);
bool operator < (const elapsed_time& x, const elapsed_time& y);
bool operator <= (const elapsed_time& x, const elapsed_time& y);
bool operator > (const elapsed_time& x, const elapsed_time& y);
bool operator >= (const elapsed_time& x, const elapsed_time& y);
*/
#ifndef HTIMER
#define HTIMER
#include <time.h>
#include <stdint.h>
class elapsed_time;
class universal_time
{
public:
universal_time(); // current time
universal_time& operator += (const elapsed_time& dt);
universal_time& operator -= (const elapsed_time& dt);
time_t sec_;
int32_t nsec_;
};
class elapsed_time
{
public:
explicit elapsed_time(time_t sec = 0, int32_t nsec = 0)
: sec_(sec), nsec_(nsec) {}
elapsed_time& operator += (const elapsed_time& dt);
elapsed_time& operator -= (const elapsed_time& dt);
elapsed_time operator - () const {return elapsed_time(-sec_, -nsec_);}
elapsed_time operator + () const {return *this;}
time_t sec_;
int32_t nsec_;
};
inline
elapsed_time
operator-(const universal_time& t1, const universal_time& t2)
{
elapsed_time t(t1.sec_, t1.nsec_);
t -= (const elapsed_time&)t2;
return t;
}
inline
universal_time
operator-(const universal_time& t1, const elapsed_time& dt)
{
universal_time t(t1);
t -= dt;
return t;
}
inline
elapsed_time
operator-(const elapsed_time& dt1, const elapsed_time& dt2)
{
elapsed_time t(dt1);
t -= dt2;
return t;
}
inline
universal_time
operator+(const universal_time& t1, const elapsed_time& dt)
{
universal_time t(t1);
t += dt;
return t;
}
inline
universal_time
operator+(const elapsed_time& dt, const universal_time& t1)
{
universal_time t(t1);
t += dt;
return t;
}
inline
elapsed_time
operator+(const elapsed_time& dt1, const elapsed_time& dt2)
{
elapsed_time t(dt1);
t += dt2;
return t;
}
inline
bool
operator == (const universal_time& x, const universal_time& y)
{
return x.sec_ == y.sec_ && x.nsec_ == y.nsec_;
}
inline
bool
operator != (const universal_time& x, const universal_time& y)
{
return !(x == y);
}
inline
bool
operator < (const universal_time& x, const universal_time& y)
{
return x.sec_ < y.sec_ || (x.sec_ == y.sec_ && x.nsec_ < y.nsec_);
}
inline
bool
operator <= (const universal_time& x, const universal_time& y)
{
return !(y < x);
}
inline
bool
operator > (const universal_time& x, const universal_time& y)
{
return y < x;
}
inline
bool
operator >= (const universal_time& x, const universal_time& y)
{
return !(x < y);
}
inline
bool
operator == (const elapsed_time& x, const elapsed_time& y)
{
return x.sec_ == y.sec_ && x.nsec_ == y.nsec_;
}
inline
bool
operator != (const elapsed_time& x, const elapsed_time& y)
{
return !(x == y);
}
inline
bool
operator < (const elapsed_time& x, const elapsed_time& y)
{
return x.sec_ < y.sec_ || (x.sec_ == y.sec_ && x.nsec_ < y.nsec_);
}
inline
bool
operator <= (const elapsed_time& x, const elapsed_time& y)
{
return !(y < x);
}
inline
bool
operator > (const elapsed_time& x, const elapsed_time& y)
{
return y < x;
}
inline
bool
operator >= (const elapsed_time& x, const elapsed_time& y)
{
return !(x < y);
}
#endif // HTIMER