50typedef struct timespec
Time;
55# define NSEC 1000000000
58# define EVENT_TIME(e) ((e)->get_key())
61# define EVENT_SEC(e) (EVENT_TIME(e).tv_sec)
62# define EVENT_NSEC(e) (EVENT_TIME(e).tv_nsec)
67 assert(msec >= 0 and msec <
MSEC);
75 assert(usec >= 0 and usec <
USEC);
83 snprintf(str, str_size,
"(%ld sec, %ld nsec)", t.tv_sec, t.tv_nsec);
91 assert(current_time.tv_usec >= 0 and current_time.tv_usec <
USEC);
94 ret_val.tv_sec = current_time.tv_sec;
97 assert(ret_val.tv_nsec >= 0 and ret_val.tv_nsec <
NSEC);
105 struct timeval current_time;
106 gettimeofday(¤t_time,
nullptr);
115 assert(current_time.tv_nsec >= 0 and current_time.tv_nsec <
NSEC);
119 const long remain = msec %
MSEC;
121 const long total_nsec = current_time.tv_nsec +
msec_to_nsec(remain);
124 _t.tv_sec = current_time.tv_sec +
sec + total_nsec/
NSEC;
125 _t.tv_nsec = total_nsec%
NSEC;
127 assert(_t.tv_nsec >= 0 and _t.tv_nsec <
NSEC);
135 assert(
l.tv_nsec >= 0 and
l.tv_nsec <
NSEC);
136 assert(r.tv_nsec >= 0 and r.tv_nsec <
NSEC);
138 return l.tv_sec == r.tv_sec and
l.tv_nsec == r.tv_nsec;
144 assert(
l.tv_nsec >= 0 and
l.tv_nsec <
NSEC);
145 assert(r.tv_nsec >= 0 and r.tv_nsec <
NSEC);
147 if (
l.tv_sec not_eq r.tv_sec)
148 return l.tv_sec < r.tv_sec;
150 return l.tv_nsec < r.tv_nsec;
156 assert(
l.tv_nsec >= 0 and
l.tv_nsec <
NSEC);
157 assert(r.tv_nsec >= 0 and r.tv_nsec <
NSEC);
159 if (
l.tv_sec not_eq r.tv_sec)
160 return l.tv_sec < r.tv_sec;
162 return l.tv_nsec <= r.tv_nsec;
bool operator>=(const Time &l, const Time &r)
bool operator==(const Time &l, const Time &r)
long usec_to_nsec(const long &usec)
bool operator>(const Time &l, const Time &r)
Time time_plus_msec(const Time ¤t_time, const int &msec)
Time timeval_to_time(const struct timeval ¤t_time)
char * time_to_char(const Time &t, char *str, size_t str_size=64)
long msec_to_nsec(const long &msec)
bool operator<(const Time &l, const Time &r)
bool operator<=(const Time &l, const Time &r)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_sec_function > > sec(const __gmp_expr< T, U > &expr)