1 #ifndef __TIME_SPAN_H__ 2 #define __TIME_SPAN_H__ 16 Time_Span(
struct timeval time)
18 _my_time = time;NormalizeTime(_my_time);
21 Time_Span(time_t time);
22 Time_Span(
long lDays,
int nHours,
int nMins,
int nSecs,
int usecs);
23 Time_Span(
long seconds,
int usecs ) ;
24 Time_Span(
const Time_Span& Time_SpanSrc);
26 Time_Span(PN_stdfloat Seconds);
30 const Time_Span& operator=(
const Time_Span& Time_SpanSrc);
35 long GetTotalHours()
const;
37 long GetTotalMinutes()
const;
38 int GetMinutes()
const;
39 long GetTotalSeconds()
const;
40 int GetSeconds()
const;
41 long GetTotalMSeconds()
const;
42 long GetTotal100Seconds()
const;
43 long GetMSeconds()
const;
47 const Time_Span& operator+=(Time_Span &Time_Span);
48 const Time_Span& operator-=(Time_Span &Time_Span);
49 bool operator==(Time_Span &Time_Span)
const;
50 bool operator!=(Time_Span &Time_Span)
const;
51 bool operator<(Time_Span &Time_Span)
const;
52 bool operator>(Time_Span &Time_Span)
const;
53 bool operator<=(Time_Span &Time_Span)
const;
54 bool operator>=(Time_Span &Time_Span)
const;
55 const timeval & GetTval()
const 61 void Set(
long lDays,
int nHours,
int nMins,
int nSecs,
int usecs);
63 std::string Format(
char *pFormat)
const;
65 struct timeval _my_time;
72 inline Time_Span::Time_Span(
long seconds,
int usecs)
74 _my_time.tv_sec = seconds;
75 _my_time.tv_usec = usecs;
76 NormalizeTime(_my_time);
82 inline Time_Span::Time_Span(time_t time)
85 _my_time.tv_sec = (long)time;
91 inline Time_Span::Time_Span(PN_stdfloat Seconds)
93 _my_time.tv_sec = (long)Seconds;
94 _my_time.tv_usec = (long)((Seconds - (
double)_my_time.tv_sec) * (
double)USEC);
100 inline Time_Span::Time_Span(
long lDays,
int nHours,
int nMins,
int nSecs,
int usecs)
102 _my_time.tv_sec = nSecs + 60 * (nMins + 60 * (nHours + 24 * lDays));
103 _my_time.tv_usec = usecs;
111 inline void Time_Span::Set(
long lDays,
int nHours,
int nMins,
int nSecs,
int usecs)
113 _my_time.tv_sec = nSecs + 60 * (nMins + 60 * (nHours + 24 * lDays));
114 _my_time.tv_usec = usecs;
122 inline Time_Span::Time_Span(
const Time_Span& Time_SpanSrc)
124 _my_time = Time_SpanSrc._my_time;
131 inline Time_Span::Time_Span(
const Time_Clock& Time_SpanSrc)
133 _my_time = Time_SpanSrc._my_time;
140 inline const Time_Span& Time_Span::operator=(
const Time_Span& Time_SpanSrc)
142 if (&Time_SpanSrc ==
this)
144 _my_time = Time_SpanSrc._my_time;
return *
this;
151 inline long Time_Span::GetDays()
const 153 return _my_time.tv_sec / (24*3600L);
160 inline long Time_Span::GetTotalHours()
const 162 return _my_time.tv_sec / 3600;
169 inline int Time_Span::GetHours()
const 171 return (
int)(GetTotalHours() - GetDays()*24);
178 inline long Time_Span::GetTotalMinutes()
const 180 return _my_time.tv_sec / 60;
187 inline int Time_Span::GetMinutes()
const 189 return (
int)(GetTotalMinutes() - GetTotalHours()*60);
196 inline long Time_Span::GetTotalSeconds()
const 198 return _my_time.tv_sec;
205 inline long Time_Span::GetTotalMSeconds()
const 207 return (_my_time.tv_sec * 1000) + (_my_time.tv_usec / 1000);
211 inline long Time_Span::GetTotal100Seconds()
const 213 return (_my_time.tv_sec * 100) + (_my_time.tv_usec / 10000);
222 inline long Time_Span::GetMSeconds()
const 224 return (_my_time.tv_usec / 1000);
232 inline int Time_Span::GetSeconds()
const 234 return (
int)(GetTotalSeconds() - GetTotalMinutes()*60);
241 inline Time_Span TimeDifference(
const Time_Span &Time_Span1,
const Time_Span &Time_Span2)
244 TimeDif(Time_Span2.GetTval(), Time_Span1.GetTval(), ans);
245 return Time_Span(ans);
252 inline Time_Span TimeAddition(
const Time_Span &Time_Span1,
const Time_Span &Time_Span2)
255 TimeAdd(Time_Span2.GetTval(), Time_Span1.GetTval(), ans);
256 return Time_Span(ans);
263 inline const Time_Span& Time_Span::operator+=(Time_Span &Time_Span)
265 _my_time.tv_usec += Time_Span._my_time.tv_usec;
266 _my_time.tv_sec += Time_Span._my_time.tv_sec;
267 NormalizeTime(_my_time);
275 inline const Time_Span& Time_Span::operator-=(Time_Span &Time_Span)
277 _my_time.tv_usec -= Time_Span._my_time.tv_usec;
278 _my_time.tv_sec -= Time_Span._my_time.tv_sec;
279 NormalizeTime(_my_time);
287 inline bool Time_Span::operator==(Time_Span &Time_Span)
const 289 return ((_my_time.tv_sec == Time_Span._my_time.tv_sec) && (_my_time.tv_usec == Time_Span._my_time.tv_usec));
296 inline bool Time_Span::operator!=(Time_Span &Time_Span)
const 298 return ((_my_time.tv_sec != Time_Span._my_time.tv_sec) || (_my_time.tv_usec != Time_Span._my_time.tv_usec));
305 inline bool Time_Span::operator<(Time_Span &Time_Span)
const 307 return ((_my_time.tv_sec < Time_Span._my_time.tv_sec) ||
308 ((_my_time.tv_sec == Time_Span._my_time.tv_sec) && (_my_time.tv_usec < Time_Span._my_time.tv_usec)));
315 inline bool Time_Span::operator>(Time_Span &Time_Span)
const 317 return ((_my_time.tv_sec > Time_Span._my_time.tv_sec) ||
318 ((_my_time.tv_sec == Time_Span._my_time.tv_sec) && (_my_time.tv_usec > Time_Span._my_time.tv_usec)));
325 inline bool Time_Span::operator<=(Time_Span &Time_Span)
const 327 return ((_my_time.tv_sec < Time_Span._my_time.tv_sec) ||
328 ((_my_time.tv_sec == Time_Span._my_time.tv_sec) && (_my_time.tv_usec <= Time_Span._my_time.tv_usec)));
335 inline bool Time_Span::operator>=(Time_Span &Time_Span)
const 337 return ((_my_time.tv_sec > Time_Span._my_time.tv_sec) ||
338 ((_my_time.tv_sec == Time_Span._my_time.tv_sec) && (_my_time.tv_usec >= Time_Span._my_time.tv_usec)));
345 inline std::string Time_Span::Format(
char * pFormat)
const 358 char szBuffer[maxTimeBufferSize];
360 char * pch = szBuffer;
362 while ((ch = *pFormat++) !=
'\0') {
363 assert(pch < &szBuffer[maxTimeBufferSize]);
365 switch (ch = *pFormat++) {
372 pch += sprintf(pch,
"%ld", GetDays());
375 pch += sprintf(pch,
"%02d", GetHours());
378 pch += sprintf(pch,
"%02d", GetMinutes());
381 pch += sprintf(pch,
"%02d", GetSeconds());
384 pch += sprintf(pch,
"%03ld", (
long)(_my_time.tv_usec / 1000));
393 return std::string(szBuffer);
396 #endif //__TIME_SPAN_H__