//
// @(#)Real Time Threads 0.5 prasad@watson.ibm.com:aug97
// ----------------------------------------------------------------------------
const MaxUsecs = 999999;
class Utime {
time_t s;
int us;
public:
static Utime Zero ();
static Utime Now ();
static Utime Never ();
Utime () { s = 0; us = 0; }
Utime (time_t t) { s = t; us = 0; }
Utime (time_t t, int tu) { s = t; us = tu; }
time_t Secs () const { return s; }
int Usecs () const { return us; }
void sleep () const;
void alarm () const;
int operator ! () const
{ return ! s && ! us; }
int operator == (const Utime& t) const
{ return s == t.s && us == t.us; }
int operator != (const Utime& t) const
{ return s != t.s || us != t.us; }
int operator < (const Utime& t) const
{ return s < t.s || (s == t.s && us < t.us); }
int operator <= (const Utime& t) const
{ return s <= t.s || (s == t.s && us <= t.us); }
int operator > (const Utime& t) const
{ return ! (*this <= t); }
int operator >= (const Utime& t) const
{ return ! (*this < t); }
Utime& operator += (const Utime& t) throw ();
Utime& operator -= (const Utime& t) throw ();
Utime& operator *= (float&) throw ();
Utime operator + (const Utime& t) const throw ();
Utime operator - (const Utime& t) const throw ();
friend Utime operator * (float, const Utime&);
friend ostream& operator << (ostream&, const Utime&);
};
Utime operator * (float, const Utime&);
ostream& operator << (ostream& os, const Utime& t) {
os << t.s << '.' << t.us;
return os;
}
// ----------------------------------------------------------------------------